以下是我正在使用的代码。
import requests
headers = { 'Accept':'*/*',
'Accept-Language':'en-US,en;q=0.8',
'Cookie':'Cookie:PHPSESSID=vev1ekv3grqhh37e8leu1coob1',
'Cache-Control':'max-age=0',
'Connection':'keep-alive',
'Proxy-Authorization':'Basic ZWRjZ3Vlc3Q6ZWRjZ3Vlc3Q=',
'If-Modified-Since':'Fri, 13 Nov 2015 17:47:23 GMT',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'
}
with requests.Session() as c:
url = 'http://172.31.13.135/tpo/spp/'
c.get(url, headers=headers)
payload = {'regno': 'myregno', 'password': 'mypassword'}
c.post(url, data = payload, headers=headers)
r = c.get('http://172.31.13.135/tpo/spp/home.php', headers=headers)
print r.content
运行此脚本时收到以下消息。
<script>
alert("Session timeout !");
window.location = "logout.php";
</script><script>
alert("Unauthorised Access!");
window.location = "index.php";
</script>
<!DOCTYPE html>
<html lang="en">
我如何处理这个&#34;会话超时&#34;问题?
非常感谢提前。
答案 0 :(得分:1)
当我无法访问该网站进行搜索时,真的很难回答。 所以这是我的猜测,
1)尝试从您不需要的标题中删除Cookie。
因为requests.Session()
首次访问url = 'http://172.31.13.135/tpo/spp/'
时会生成自己的Cookie。
So your headers will be,
headers = { 'Accept':'*/*',
'Accept-Language':'en-US,en;q=0.8',
'Cache-Control':'max-age=0',
'Connection':'keep-alive',
'Proxy-Authorization':'Basic ZWRjZ3Vlc3Q6ZWRjZ3Vlc3Q=',
'If-Modified-Since':'Fri, 13 Nov 2015 17:47:23 GMT',
'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36'
}
2)确保标题中的'If-Modified-Since'
字段与您提到的内容相同,并且不会发生变化。如果确实发生了变化,请相应地对其进行编码,以便实时设置日期和时间。
3)我不确定你为什么在标题中有'Proxy-Authorization':'Basic ZWRjZ3Vlc3Q6ZWRjZ3Vlc3Q='
。尝试没有它的标题。
但是,如果您必须拥有它,请确保此验证码也是静态的,并且每次都不会更改。
如果有帮助,请告诉我
答案 1 :(得分:0)