我想从具有登录信息的页面中检索一些数据。
我使用Python请求。但是,当我尝试登录然后从数据页面获取数据时,它将返回登录页面。
这是我的代码:
s = requests.Session()
s.auth = ('user', 'pass')
s.get('http://url.com')
payload = {'user': 'user', 'pass': 'pass'}
r_login = s.post("http://admin.url.com/login.php", data=payload)
cookies = r_login.cookies
print cookies
r_data = s.get('https://admin.url.com/stats.php?PHPSESSID={0}'.format(cookies['PHPSESSID']))
cookie = r_data.cookies
print cookie
print r_data.text
这就是印刷品:
<<class 'requests.cookies.RequestsCookieJar'>[<Cookie PHPSESSID=ve4tit4svmp719ul3vb8qeqdh7 for .url.com/>]>
<<class 'requests.cookies.RequestsCookieJar'>[]>
然后是登录页面的html而不是统计页面。
我忘记了什么吗?我如何知道服务器需要进行身份验证(即cookie,sessionid,referrer)?
答案 0 :(得分:0)
我从你的问题标题中假设get正在返回登录页面。最可能的原因是它没有会话令牌,因此网页正在将服务器端重定向回登录页面。
我的猜测是这个(PHPSESSID)应该作为cookie而不是查询字符串返回。
最后可能会有一些我不知道的聪明伎俩,但我想你需要参考原始代码,文档或反复试验来确定需要发送的内容。