【问题标题】:PyCurl 7.19.0: get cookies from response using getinfo(pycurl.COOKIELIST)PyCurl 7.19.0:使用 getinfo(pycurl.COOKIELIST) 从响应中获取 cookie
【发布时间】:2014-12-25 21:36:31
【问题描述】:

我想获取响应中携带的 Cookie (Set-Cookie: name=value; ...)。

当传递信息常量和空列表的引用时:

set_cookies = []
c.getinfo(c.COOKIELIST, set_cookies)

我收到以下错误:

TypeError: c.getinfo() takes exactly 1 argument (2 given)

这很简单。

我也试过这个签名:

set_cookies = c.getinfo(c.COOKIELIST)

我收到此错误:

ValueError: invalid argument to getinfo

不过,这有点模糊。

使用getinfo() 获取 HTTP 状态码可以正常工作。

当然,我得到了200 OKSet-Cookie 标头(使用c.setopt(pycurl.VERBOSE, 1) 进行调试)。

我当然读过

除了极少数例外,PycURL 常量是通过删除 CURLINFO_ 前缀从 libcurl 常量派生而来的。

也许这是个例外?

在我看来,文档很差,并且不包含任何有关使用Set-Cookie 发送 cookie 的信息。

参考资料:

【问题讨论】:

    标签: python cookies libcurl pycurl


    【解决方案1】:

    调用perform() 后无法获取响应cookie。在使用setopt() 进行配置时,可以使用传递给 PyCurl 实例的回调函数来捕获服务器发送的标头:

    CURLOPT_HEADERFUNCTION

       Callback for writing received headers. See CURLOPT_HEADERFUNCTION 
    

    示例代码摘录:

        set_cookies = []
    
        # closure to capture Set-Cookie
        def _write_header(header):
            match = re.match("^Set-Cookie: (.*)$", header)
    
            if match:
                set_cookies.append(match.group(1))
    
        # use closure to collect cookies sent from the server
        c.setopt(pycurl.HEADERFUNCTION, _write_header)
    

    参考资料:

    【讨论】:

    • 优秀。工作。
    猜你喜欢
    • 1970-01-01
    • 2016-10-06
    • 1970-01-01
    • 2017-01-04
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    相关资源
    最近更新 更多