2

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

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

4

2 回答 2

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()

我跳过了整个 StringIO 响应,所以我们可以保持主题。

于 2012-05-03T21:43:04.847 回答
1

根据 PycURL 站点,真正的文档是 C API。C API CURLOPT_COOKIE 和 CURLOPT_COOKIELIST 粗略地看起来就像您需要的那样。

于 2010-12-02T01:00:07.290 回答