如何让pycurl发送Cookie但不将其保存到文件中?

Joe*_*moe 2 python cookies pycurl

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

我已经阅读了COOKIEFILE和COOKIEJAR选项,但是我不想将这些cookie保存到文件中。那么,还有其他方法可以启用带有curl / pycurl的cookie而不将其保存到文件吗?

ben*_*ere 5

好吧,libcurl文档指出:

CURLOPT_COOKIEFILE

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

自己尝试一下,效果很好,只需使用相同的curl对象。

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()
Run Code Online (Sandbox Code Playgroud)

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