在Python3中,如何正确处理带有cookie处理的站点请求?
我正在写一个Python 3.1.2的脚本,目的是登录一个网站,然后开始发送请求。我可以很顺利地登录,但登录后发送请求时却出现错误,提示我没有登录。我的代码是这样的:
import urllib.request
from http import cookiejar
from urllib.parse import urlencode
jar = cookiejar.CookieJar()
credentials = {'accountName': 'username', 'password': 'unenc_pw'}
credenc = urlencode(credentials)
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(jar))
urllib.request.install_opener(opener)
req = opener.open('http://www.wowarmory.com/?app=armory?login&cr=true', credenc)
test = opener.open('http://www.wowarmory.com/auctionhouse/search.json')
print(req.read())
print(test.read())
第一次请求的响应是我登录时预期得到的页面。
第二次请求的响应是:
b'{"error":{"code":10005,"error":true,"message":"You must log in."},"command":{"sort":"RARITY","reverse":false,"pageSize":20,"end":20,"start":0,"minLvl":0,"maxLvl":0,"id":0,"qual":0,"classId":-1,"filterId":"-1"}}'
我是不是漏掉了什么,导致我无法在后续请求中使用成功登录后得到的cookie信息呢?
1 个回答
0
我之前遇到过这个问题。我无法让cookie管理自动工作,这让我烦恼了好几天。最后,我只好手动处理cookie。也就是说,我从响应头中获取'设置cookie'的内容,然后把它安全地保存起来。之后,每次向那个服务器发送请求时,我都会把之前得到的cookie值放进请求头里。