我想使用从我的 chrome 复制的 cookie,但会出错。
import urllib.request
import re
def open_url(url):
header={"User-Agent":r'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}
Cookies={'Cookie':r"xxxxx"}
Request=urllib.request.Request(url=url,headers=Cookies)
response=urllib.request.urlopen(Request,timeout=100)
return response.read().decode("utf-8")
我的代码哪里出错了?那是 headers=Cookies 吗?
原文由 Yong Deng 发布,翻译遵循 CC BY-SA 4.0 许可协议
使用 urllib.request 时的正确方法是使用
OpenerDirector
填充了CookieProcessor
:然后你使用
opener
它会自动处理cookies:默认情况下,CookieJar (
http.cookiejar.CookieJar
) 用于简单的内存存储,但您可以使用FileCookieJar
在您需要长期存储持久性 cookie 时,甚至是http.cookiejar.MozillaCookieJar
如果你想使用存储在cookies.txt
现在是传统的Mozilla格式如果您想使用网络浏览器中存在的 cookie,您必须首先将它们存储在 cookie.txt 兼容文件中,然后将它们加载到 MozillaCookieJar 中。对于 Mozilla,您可以找到一个附加组件 Cookie Exporter 。对于其他浏览器,您必须通过在浏览器中读取您需要的cookies的内容,手动创建一个cookie.txt文件。该格式可以在 非官方 Cookie 常见问题解答 中找到。摘录:
但 通常 的方法是模拟一个完整的会话并从响应中自动提取 cookie。