如何让pycurl发送cookie但不将它们保存到文件中?

时间:2010-12-02 00:15:15

标签: python cookies pycurl

我需要pycurl来保存已发布表单中的cookie,然后在同一域中的下一个URL中使用这些cookie。它似乎不会自动执行此操作。

我已阅读COOKIEFILE和COOKIEJAR选项,但我不想将这些cookie保存到文件中。那么有没有其他方法可以使用curl / pycurl启用cookie而不将它们保存到文件中?

2 个答案:

答案 0 :(得分:4)

libcurl文档声明:

  

<强> CURLOPT_COOKIEFILE

     

给定一个空的或不存在的文件或传递空字符串(“”),此选项将为此curl句柄启用cookie,使其理解并解析收到的cookie,然后在将来的请求中使用匹配的cookie。

我自己尝试过,它的工作非常出色,只需使用相同的卷曲对象。

示例

import pycurl
curl = pycurl.Curl()

# Turn on cookies
curl.setopt(pycurl.COOKIEFILE, "")

# Login
curl.setopt(pycurl.URL, "http://www.example.com/login.php")
curl.setopt(pycurl.POST, 1)
curl.setopt(pycurl.HTTPPOST, [('user', 'myuser'), ('pass', 'mypass'), ('submit', 'login')])
curl.perform()

# Now let's get us some members only page
curl.setopt(pycurl.POST, 0) 
curl.setopt(pycurl.URL, "http://www.example.com/members_only.php")
curl.perform()

我跳过了整个StringIO响应,因此我们可以保持ontopic。

答案 1 :(得分:1)

根据PycURL网站,真正的文档是C API。粗略的look like what you need上的C API CURLOPT_COOKIE和CURLOPT_COOKIELIST。