用Python抓包工具查看周邊拼車情況

說起Python爬蟲,很多人第一個反應可能會是Scrapy或者Pyspider,但是今天文章裏用到是Python下一個叫Mitmproxy的抓包工具,對付一些非常規的數據獲取還是很有效的。

不過凡事都是有利有弊,一來麻煩,二來呢不會自己動,還得手動(或者按鍵精靈也可以啊)。

自從滴滴的拼車業務全國下線之後,一直專注拼車的某拼車APP在背後默默替老大哥照顧着那些可憐的乘客。上週五下班的時候,本來想用某拼車APP搭個順風車回家,沒想到下班高峯期的時候,某拼車APP居然掛了,過了十幾分鍾才緩過來,心裏好奇,就想爬一下某拼車APP的數據,看看周邊上下班拼車的情況。

知己知彼,百戰不殆

對於APP類的爬蟲,首先想到的就是抓包,macOS下常用的就是Charlesmitmproxy這兩款工具了,而mitmproxy由於支持攔截和腳本又深得我愛,用法的話這裏就不具體展開介紹了。

啓動mitmweb(mitmproxy家那個有頁面的兄弟)抓包工具,手機上打開某拼車APP客戶端,查看附近訂單(已提前認證車主,並切換到車主身份)

對應一下就可以發現,查詢附近訂單的接口URL就是這個getNearbyBookingRideList,於是我很天真地就拿着這個接口,和抓包數據,就去請求了

結果人家告訴我

{“code”:205,”message”:”簽名錯誤!”}

因爲客戶端APP有個簽名算法,根據POST給服務器的參數計算的,除非我破了人家APP,然後把算法給找出來,想想還是算了,費神費力(主要是我壓根不會)!

這個法子行不通,只能換個法子了

神器在手,天下我有

前面提到mitmproxy有個帶web界面的兄弟叫mitmweb,其實還有一個支持腳本的兄弟叫mitmdump,寫好腳本

把腳本存爲 111.py,然後終端執行命令:

mitmdump -s 111.py -p 8080

剩下要做的就是不斷去某拼車APP上劃幾下,至於數據那塊,就交給Dump兄弟就好了

嗯,看到了嘛~想看哪,手指就滑哪,越滑越有!

再接下來就是需要把我們抓到的數據存起來,以備後期使用,這裏我用的是Mongodb,雖然也是第一次用,爲了方便點,另外寫了個插入數據的方法,再在爬蟲文件裏面調用。

再到我們數據庫看看,已經碩果累累了,不夠的話就再多滑幾下。

數據抓取的思路大概就是這樣,因爲沒時間搗鼓所以就沒上APP自動化,其實可以搞個 模擬器+按鍵精靈,或者appium,就是太懶了怕麻煩,上班的時候劃一劃就當運動了

數據展示

時間問題,暫時沒做數據分析,不過數據挺乾淨的,也不需要處理啥

關鍵字Mongodb、Pandas、Pyecharts

拿了週六杭州跨城順風車數據結合阿里雲的DataV做了個簡單的飛線圖,會動的那種,點擊閱讀原文可以查看動圖。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章