當(dāng)前位置:博客首頁>>Python >> 閱讀正文

抓取摩拜單車車輛位置數(shù)據(jù)

作者: 鄭曉 分類: Python 發(fā)布于: 2017-07-25 12:10 瀏覽:48,156 評(píng)論(15)


每天從下車站到公司還有好幾米的路要走,這對(duì)于現(xiàn)在能免費(fèi)騎車的懶癌患者怎么能忍?車站人流量大,能找到輛車實(shí)屬不易,所以就得在下公交車前不停的刷新app查看下車點(diǎn)是否有車,有車就馬上預(yù)訂。

一路上不停的拿著手機(jī)刷新太麻煩了,身為碼農(nóng)怎么能忍?我這里要實(shí)現(xiàn)的就是把刷新查看目的地是否有車的這個(gè)過程實(shí)現(xiàn)了自動(dòng)化。

實(shí)現(xiàn)思路是首先找到摩拜單車在地圖上標(biāo)記車輛位置的這個(gè)接口,然后想辦法使用程序模擬這個(gè)請(qǐng)求,從獲得的車輛數(shù)據(jù)中檢查是否有符合的車輛,如果有則發(fā)送提示消息。

使用的抓包工具是charles,它可以很輕松的獲取到移動(dòng)設(shè)備的數(shù)據(jù)請(qǐng)求,具體使用方法不做介紹,請(qǐng)百度。

開始時(shí)是使用charles開啟ssl代理,抓取手機(jī)上摩拜單車app的請(qǐng)求,摩拜的每個(gè)https請(qǐng)求都是unknow(http method是connect),看錯(cuò)誤提示應(yīng)該是證書的問題,但手機(jī)上其它的https請(qǐng)求是正常的(比如京東),網(wǎng)上的說法是使用了http隧道通信,代理工具無法抓取。

app無法抓包,轉(zhuǎn)戰(zhàn)微信小程序,在摩拜的微信小程序中查看附近車輛時(shí),charles成功抓取到車輛位置的api(nearbyBikeInfo.do)

知道了api后就可以很輕松的模擬出請(qǐng)求,這里使用了python+requests進(jìn)行post請(qǐng)求。多次測(cè)試發(fā)現(xiàn)header中有些看似很關(guān)鍵的參數(shù)其實(shí)不必要的,所以這里已經(jīng)移除。

#coding=utf8
#www.yjfs.org.cn
import requests
headers = {
"Host": "mwx.mobike.com",
"time": "1500887680",
"eption": "bb15c",
"open_src": "list",
"platform": "3",
"citycode": "0532",
"User-Agent": "Mozilla/5.0 (iPhone;www.yjfs.org.cn; CPU iPhone OS 10_3_2 like Mac OS X) AppleWebKit/603.2.4 (KHTML, like Gecko) Mobile/14F89 MicroMessenger/6.5.12 NetType/WIFI Language/zh_CN",
"lang": "zh",
"Referer": "https://servicewechat.com/wxxxxxxxx/70/page-frame.html"
}
body = {
"longitude":"120.413333",
"latitude":"36.087741",
"citycode":"0532",
}

r = requests.post("https://mwx.mobike.com/mobike-api/rent/nearbyBikesInfo.do",data=body, headers=headers, verify=False);
print r.text.encode('utf-8')

注意,代碼有改動(dòng):)

成功返回json數(shù)據(jù)。

格式化后,數(shù)據(jù)很清晰明白,接口返回查詢的坐標(biāo)周圍有幾輛車,并包含有每輛車的編號(hào)、坐標(biāo)和與目標(biāo)坐標(biāo)的相對(duì)距離等信息。

接下來要做的就是從數(shù)據(jù)里過濾出比較近的車輛(distance的單位是米,值可按自己的需求定),并給出提示消息。提示消息推送可以使用pushbullet這類工具,實(shí)現(xiàn)也很方便。更復(fù)雜點(diǎn)兒可以距離坐標(biāo)計(jì)算一下每個(gè)車輛在目標(biāo)位置的哪個(gè)方向。這里就不實(shí)現(xiàn)了~

完。

? ? ? ?

本文采用知識(shí)共享署名-非商業(yè)性使用 3.0 中國(guó)大陸許可協(xié)議進(jìn)行許可,轉(zhuǎn)載時(shí)請(qǐng)注明出處及相應(yīng)鏈接。

本文永久鏈接: http://www.yjfs.org.cn/crawl-mobike-location.html

抓取摩拜單車車輛位置數(shù)據(jù):目前有15 條留言

用戶評(píng)論頭像 喵喵醬發(fā)表于 2019年08月29日 14:04[回復(fù)]

厲害了

用戶評(píng)論頭像 穆鳥發(fā)表于 2019年05月08日 18:23[回復(fù)]

樓主,我想規(guī)定搜索的范圍是改哪一個(gè)地方,還有headers里面的platform和eption是什么信息呀~~

    用戶評(píng)論頭像 鄭曉發(fā)表于 2019年05月09日 10:52[回復(fù)]

    不知道,這是摩拜自己的參數(shù),我沒研究過。。

      用戶評(píng)論頭像 穆鳥發(fā)表于 2019年05月09日 16:11[回復(fù)]

      好的,謝謝

    用戶評(píng)論頭像 hello發(fā)表于 2020年07月25日 10:39[回復(fù)]

    eption這個(gè)參數(shù),你解析出來了嗎?我也遇到同樣的問題

用戶評(píng)論頭像 趙晨陽發(fā)表于 2019年01月13日 22:33[回復(fù)]

博主你好,是這樣的,因?yàn)槲易罱窃趯懝蚕韱诬嚨恼撐?,但是我是個(gè)爬蟲小白,在用charles抓包的時(shí)候就出現(xiàn)了問題,不管是app還是微信小程序都不行,都是unknown,我想問一下有沒有解決辦法,另外我想問下您現(xiàn)在手里有多余的共享單車數(shù)據(jù)嗎,可以發(fā)一份到我的郵箱嗎?(有償)

    用戶評(píng)論頭像 鄭曉發(fā)表于 2019年01月14日 10:01[回復(fù)]

    數(shù)據(jù)我這里沒有,接口抓包我剛才又試了一下,是可以抓到的(微信小程序摩拜單車),你的charles中有設(shè)置啟用ssl代理嗎?

      用戶評(píng)論頭像 趙晨陽發(fā)表于 2019年01月14日 15:48[回復(fù)]

      你好,啟用ssl代理是SSL Proxying Settings
      在這里Add一個(gè)Location,填入
      Host: *
      Port: *
      嗎?我之前是能抓到摩拜小程序,但是里面車輛一直顯示在加載中,然后抓到的小程序里面的內(nèi)容顯示的是unknown,另外我想問一下您有沒有微信或者qq,我想跟您私聊一下,感覺這樣溝通不是很方便。

        用戶評(píng)論頭像 郭增輝發(fā)表于 2019年04月26日 15:58[回復(fù)]

        你好,我想請(qǐng)問下,我用Charles,原來可以抓包,后來設(shè)置手機(jī)代理后不貪粗那個(gè)確認(rèn)連接的菜單該怎么解決

          用戶評(píng)論頭像 鄭曉發(fā)表于 2019年04月26日 16:05[回復(fù)]

          關(guān)了軟件重新開會(huì)重新彈吧? 如果沒彈,你可以手動(dòng)添加,頂部菜單Proxy->Access Control Settings。。。手動(dòng)把你手機(jī)的IP添加進(jìn)去。

            用戶評(píng)論頭像 郭增輝發(fā)表于 2019年04月26日 16:12[回復(fù)]

            你好,我手動(dòng)添加了手機(jī)IP,可還是抓取不到東西,原來可以連接,也可以抓包,然后我手機(jī)系統(tǒng)不小心升級(jí)了,就可以連接但是抓取不到,我查了一下,是手機(jī)系統(tǒng)版本高于安卓7了,我又弄了個(gè)手機(jī),刷機(jī)到安卓6,然后現(xiàn)在就連接不到charles,設(shè)置好代理不彈框,重啟電腦和手機(jī)也不行,我們可以私下聯(lián)系嗎,有償?shù)?,麻煩您幫下?/p>

          用戶評(píng)論頭像 我來發(fā)表于 2020年05月28日 22:05[回復(fù)]

          有點(diǎn)好奇,這個(gè)留言板是怎么套圈圈的。打擾了,試下。

    用戶評(píng)論頭像 張曉涵發(fā)表于 2019年03月04日 20:36[回復(fù)]

    你好,我最近也是在寫關(guān)于共享單車的畢業(yè)論文,能否交流交流~

用戶評(píng)論頭像 小豬呼嚕嚕發(fā)表于 2018年12月12日 14:07[回復(fù)]

樓主轉(zhuǎn)載你的文章到我的博客,不介意吧??赡苻D(zhuǎn)好多~~

    用戶評(píng)論頭像 鄭曉發(fā)表于 2018年12月12日 14:08[回復(fù)]

    盡量保留個(gè)出處吧。。。

發(fā)表評(píng)論

change vcode