[requests][http 请求模拟]请求实时公交数据总是得到"timeout"

2016-08-05 12:11:29 +08:00
 Yaoooo

-对于网络我是个刚入门的小白
-在北京实习因为总是错过公交,而每一趟要隔很久,所以想要写个程序得到公交实时信息,早上起床自动提醒
-请求链接如下:
http://www.bjbus.com/home/ajax_search_bus_stop_token.php?act=busTime&selBLine=381&selBDir=5629881218517385976&selBStop=13

f12 查看 cookie 会填入当前 time(距离 1970 年毫秒数),其他数据都是固定的

用 requests 请求代码如下:



import requests
import time

url='http://www.bjbus.com/home/ajax_search_bus_stop_token.php'
reqParams={
    'act':'busTime',
    'selBLine':381,
    'selBDir':5629881218517385976,#线路方向 数值固定
    'selBStop':2
}
serverTime=str(int(time.time()))
cookies={
    'Hm_lpvt_2c630339360dacc1fc1fd8110f283748':'1470364087',
    'Hm_lvt_2c630339360dacc1fc1fd8110f283748':'1470278160', #这两个时间在一段时间内固定,还没找到生成规律
    'PHPSESSID':'e277b63c1cacef68986b6d6f14687384',
    'SERVERID':'c40443f9636cc324fbdb5c25c09256b6|'+
        str(serverTime)+'1470362358'#只有第一个时间是变化的,后面这个也是一段时间内固定
}

headers={
    'Connection':'keep-alive',
    'Accept':'application/json,text/javascript,*/*;q=0.01',
    'X-Requested-With':'XMLHttpRequest',
    'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36',
    'Referer':'http://www.bjbus.com/home/fun_rtbus.php?uSec=00000160&uSub=00000162&sBl=381&sBd=5629881218517385976&sBs=2',
    'Accept-Encoding':'gzip, deflate, sdch',
    'Accept-Language':'zh-CN,zh;q=0.8',
}
r=requests.get(url,params=reqParams, headers=headers,cookies=cookies)
print(serverTime)

print(r.content) #返回 timeout  不知为何

希望各位指教,多谢了!

2760 次点击
所在节点    HTTP
3 条回复
bdbai
2016-08-05 18:05:36 +08:00
Cookie 全删了试试
Yaoooo
2016-08-06 00:51:19 +08:00
@bdbai 已经解决了,换个浏览器重新抓了一下。需要先去首页拿 cookie 。谢谢你的回复。
bdbai
2016-08-06 11:45:20 +08:00
@Yaoooo Cookie 里面有几个 Session ID ,估计是这些过期导致的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/297334

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX