在Python3中,用cookie处理程序处理站点请求的正确方法是什么?

在Python3中,用cookie处理程序处理站点请求的正确方法是什么?,python,httpwebrequest,python-3.x,urllib,Python,Httpwebrequest,Python 3.x,Urllib,我正在用Python 3.1.2编写一个脚本,它登录到一个站点,然后开始发出请求。我可以毫不费力地登录,但在登录之后,请求返回一个错误,说明我尚未登录。我的代码如下所示: import urllib.request from http import cookiejar from urllib.parse import urlencode jar = cookiejar.CookieJar() credentials = {'accountName': 'username', 'passwor

我正在用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信息时,我是否缺少了一些东西?

我曾经遇到过这个问题。我无法让cookie自动运行cookie管理。让我沮丧了好几天,我最终手动处理了cookie。这就是从响应头获取“Set Cookie”的内容,并将其保存在安全的地方。随后,对于向该服务器发出的任何请求,我将使用前面得到的值将“Cookie”设置到请求头中。

我在Chrome和curl中得到与第二个URL完全相同的响应。你有理由相信第一个URL应该让你登录第二个URL吗?(顺便问一下,它真的应该是“?app=armory?login&cr=true”?)