Python中的会话超时

时间:2016-02-24 05:40:43

标签: python session post timeout python-requests

以下是我正在使用的代码。

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;问题?

非常感谢提前。

2 个答案:

答案 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)

您也可以在get和post方法中传递timeout变量:

router.navigate( ['/auth'] )

你可以调整你想要等待响应的最长时间 有关请求的详情,请参阅the docs