V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
httpbin - 协议调试工具
httpstatuses - 协议状态码查询
httpie - cURL-like tool for humans
Fiddler
Yaoooo
V2EX  ›  HTTP

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

  •  
  •   Yaoooo · 2016-08-05 12:11:29 +08:00 · 2874 次点击
    这是一个创建于 3032 天前的主题,其中的信息可能已经有所发展或是发生改变。

    -对于网络我是个刚入门的小白
    -在北京实习因为总是错过公交,而每一趟要隔很久,所以想要写个程序得到公交实时信息,早上起床自动提醒
    -请求链接如下:
    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  不知为何
    
    

    希望各位指教,多谢了!

    3 条回复    2016-08-06 11:45:20 +08:00
    bdbai
        1
    bdbai  
       2016-08-05 18:05:36 +08:00 via Android
    Cookie 全删了试试
    Yaoooo
        2
    Yaoooo  
    OP
       2016-08-06 00:51:19 +08:00 via Android
    @bdbai 已经解决了,换个浏览器重新抓了一下。需要先去首页拿 cookie 。谢谢你的回复。
    bdbai
        3
    bdbai  
       2016-08-06 11:45:20 +08:00 via Android
    @Yaoooo Cookie 里面有几个 Session ID ,估计是这些过期导致的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2688 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 11:55 · PVG 19:55 · LAX 03:55 · JFK 06:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.