我需要 pycurl 从已发布的表单中保存 cookie,然后在同一域中的下一个 URL 中使用这些 cookie。它似乎不会自动执行此操作。
我已经阅读了 COOKIEFILE 和 COOKIEJAR 选项,但我不想将这些 cookie 保存到文件中。那么有没有其他方法可以使用 curl/pycurl 启用 cookie 而无需将它们保存到文件中?
那么 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()
我跳过了整个 StringIO 响应,所以我们可以保持主题。
根据 PycURL 站点,真正的文档是 C API。C API CURLOPT_COOKIE 和 CURLOPT_COOKIELIST 粗略地看起来就像您需要的那样。