这个脚本成功地获得了一个200响应对象,获得了一块cookie,并返回了reddit的股票主页源。然而,它应该得到"最近活动"子页面的来源,只有在登录后才能访问。这让我认为它没有正确登录,但用户名和密码是准确的,我已经仔细检查过了。
#!/usr/bin/python
import requests
import urllib2
auth = ('username', 'password')
with requests.session(auth=auth) as s:
c = s.get('http://www.reddit.com')
cookies = c.cookies
for k, v in cookies.items():
opener = urllib2.build_opener()
opener.addheaders.append(('cookie', '{}={}'.format(k, v)))
f = opener.open('http://www.reddit.com/account-activity')
print f.read()
看起来您使用的是标准的"HTTP Basic"身份验证,而不是Reddit用来登录其网站的身份验证。(几乎没有网站使用HTTPBasic(它会弹出一个请求身份验证的模式对话框),但实现了自己的用户名/密码表单)。
您需要做的是获取主页,读取登录表单字段,填写用户名和密码,将响应POST回网站,获取结果cookie,然后在未来的请求中使用cookie。可能还有很多其他细节需要你去解决,但你必须进行实验。
我只是觉得我们可能遇到了同样的问题。我的状态代码是200。但脚本从未让我登录。我得到了一些建议和帮助。希望你也能告诉我什么对你有用。看来reddit也在使用同样的系统。
看看这个讨论我问题的页面。使用aspx站点上的请求的身份验证问题