首頁  >  文章  >  後端開發  >  摩拜單車爬蟲解析-找到API

摩拜單車爬蟲解析-找到API

PHPz
PHPz原創
2017-04-04 10:37:002399瀏覽

警告:此篇文章僅作為學習研究參考用途,請不要用於非法目的。

在上一篇文章《摩拜單車非官方大數據分析》中提到了我在春節期間對摩拜單車的數據分析,在後面的系列文章中我將進一步的闡述我的爬蟲是如何有效率的爬到這些數據的。

為什麼爬摩拜的數據

摩拜是最早進入成都的共享單車,每天我從地鐵站下來的時候,在APP中能看到很多單車,但走到那裡的時候,才發現車子不在那裡。有些車不知道藏到了哪裡;有些車或許是在高樓的後面,由於有GPS的誤差而找不到了;有些車被放到了小區裡面,一道牆之隔讓騎車人無法獲得到車。

那麼有沒有一個辦法可以透過獲得這些單車的數據,來分析這些車是否變成了殭屍車?是否有人故意放到社區裡面讓人無法取得?

帶著這些問題,我開始了研究如何取得這些數據。

從哪裡取得數據

如果你能夠看到數據,那麼我們總有辦法自動化的取得到這些數據。只不過獲取數據的方式方法決定了獲取數據的效率,對於摩拜單車的數據分析這個任務而言,這個爬蟲要能夠在短時間內(通常是10分鐘左右)獲取到更多的數據,對於數據分析才有用處。那麼數據來源於哪裡呢?

最直接的來源是摩拜單車的APP。現代的軟體設計都講究前後端分離,而且服務端會同時服務APP、網頁等。在這種趨勢下我們只需要搞清楚軟體的HTTP請求就好了。一般而言有以下一些工具可以幫忙:

直接抓包:

以代理程式進行HTTP請求抓包及偵錯

  • Fiddler 4

  • Charles

  • # #Packet Capture (Android)

由於我的手機沒有root,在路由器上抓包又太多的干擾,對於https也不好弄。所以只能先採用Fiddler或Charles的方式試試。掛上Fiddler的代理,然後在手機端不停的移動位置,看有沒有新的請求。但遺憾的是似乎請求都是去拿高德

地圖的,並沒有跟摩拜車相關的數據。

那怎麼一回事?試試手機端的。換成Packet Capture後果然就有流量了,在請求中找到了我最關心的那個:

摩拜單車爬蟲解析-找到API

4372317-de272f8395d2106f.png

這個

API請求一看就很顯然了,在postman中試了一下能夠正確的回傳訊息,看來就是你了!

高興得太早

連續爬了幾天的數據,將數據進行一分析,發現摩拜單車的GPS似乎一直在跳動,有時候跳動會超過幾公里的距離,顯然不是一個正常的值。

難道是他們的

介面做了手腳回傳的是假資料?我觀察到即便在APP中,單車回傳的數據也有跳動。有某一天凌晨到第二天早上,我隔段時間刷新一下我家附近的車,看看是否真的如此。

圖片我找不到了,但觀察後得出的結論是,APP中返回的位置確實有問題。有一輛車放在很偏僻的位置,一會兒就不見了,待會兒又回來了,和我抓下來的數據吻合。而且這個跳動和手機、手機號碼、甚至行動電信業者都沒有關係,說明這個跳動是摩拜介面的問題,也可以從另一方面解釋為什麼有時候看到車但其實那裡沒有車。

這是之前發的一個朋友圈的

視頻截圖,可以看到在營門口附近有一個尖,在那裡其實車是停住的,但是GPS軌跡顯示短時間內在附近攢動,甚至攢動到很遠,又回到那個位置。

摩拜單車爬蟲解析-找到API


這樣的資料對於資料分析來講根本沒法用,我差點就放棄了。

轉機

隨著微信小程式的火爆,摩拜單車也在第一時間出了小程式。我一看就笑了,不錯,又給我來了一個資料來源,試試看。用Packet Capture抓了一次資料後很容易確定API,具體過程就不在闡述。抓取後爬取了兩三天的數據,發現出現了轉機,數據符合正常的單車的軌跡。

剩下事情,就是提高爬蟲的效率了。

其他嘗試

有時候直接分析APP的源代碼會很方便的找到API入口,將摩拜的Android端的APP進行反編譯,但發現裡面除了一些資源檔有用外,其他的文件都是用奇虎360的混淆器加殼的。網路上有文章分析如何進行脫殼,但我沒有太多時間去鑽研,也就算了。

也談API的設計

摩拜單車的API之所以很容易抓取和分析,很大程度上來講是由於API設計的太簡陋:

  • #只使用http請求,使得很容易進行抓包分析

  • 在這些API中都沒有對request進行一些加密,使得自己的服務很容易被人利用。

  • 另外微信小程式也是洩漏API的一個重要來源,畢竟在APP中request請求可以透過native程式碼進行加密然後在發出,但在小程式中似乎還沒有這樣的功能。

如果大家有興趣,可以試著看一下小型藍單車APP的request,他們使用https請求,對資料的request進行了加密,要抓取到他們的資料難度會增加非常多。

當然了,如果摩拜單車官方不care數據的事情的話,這樣的API設計也是ok的。


以上是摩拜單車爬蟲解析-找到API的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn