首先,問一個很簡單的問題考考你——在上海,摩拜單車出行的高峰時段是什么?這個問題相對比較容易回答,根據(jù)普通人上下班的時段應該是早上七八點左右,下午六七點左右。恭喜,你答對了。
現(xiàn)在問一個稍微更難一點的問題:在上海,摩拜單車使用次數(shù)的分布是什么情況?對于我而言,基本上每天就從地鐵站騎到公司,然后下班從地鐵站騎回公司,就算做是兩次吧,通常這部分人應該不少。而這道題問的是分布,那么得知道0次騎行的車的數(shù)量,騎行一次、兩次、n次的車的數(shù)量。我們可以做個小范圍的采樣,在單車密集的區(qū)域架設幾個攝像機,然后分析一下哪些車沒有被騎走即可。但是,騎行兩次、三次以及更多次數(shù)的車的數(shù)量如何得知呢?我們很難知道,或許我們可以通過發(fā)放調查問卷來得知,但如果樣本太少會得到打的偏差。同樣的道理,回答“摩拜單車的騎行距離的分布式什么情況”,也相對較難。
要知道共享單車的運營情況,我們通常只能通過官方或者研究機構的各種報告來獲取到。然而這些報告可能缺少一些時效性,對某些研究來講并不能產生任何作用:例如在城市規(guī)劃時研究OD線、疊加圖層分析更多因素的結合時,就顯得無能為力。最后的渠道也是最正規(guī)的渠道是通過和共享單車企業(yè)合作,然而由于涉及到商業(yè)機密,通常很難獲得。
OD線(Origin-Destination Line),是指連接“起點”(origin)和“終點”(destination)的線,通常用于在地圖上直觀表示某兩個地理位置之間的聯(lián)系,如車輛的行駛軌跡、飛機的航線和人口的遷徙等。
回到單車的APP上來,既然能夠幫我們顯示出車輛的信息,那么我們能不能把一個區(qū)域的范圍的車的信息都抓取下來,然后進行分析呢?這個思路非常的有趣,在我之前寫的摩拜單車爬蟲解析——找到API
中已經有所涉及。在這里我們不談技術細節(jié),通過對爬取的上海市2018年5月29日星期二(晴天)的數(shù)據(jù)進行分析我們迅速地得出上面問題的答案:
- 單車的分布圖和部分熱力圖??梢悦黠@的看到上海城市的發(fā)展規(guī)模以及人口密集區(qū)域的分布。


-
單車使用次數(shù)類似一個正則分布,2次的次數(shù)最多,符合人們的直覺。
使用次數(shù)直方圖 -
騎行的直線距離分布在2千米之類,以1千米范圍為最多,這通常也是單車解決“最后一公里”問題的證據(jù)。
騎行距離分布 出行的時段的分布在早上7點左右達到高峰,然后晚上7點左右達到高峰,這和人們的出行習慣是密切相符的。有趣的是夜間22點以后到第二天凌晨5點左右,也有單車在移動,但這時候騎行的人相對很少,所以這些單車的移動很有可能是摩拜單車的運營人員在批量的挪單車。如果將這些數(shù)據(jù)加以分析應該可以知道這些車從哪里挪到哪里,進而更深層的分析單車企業(yè)的運營策略。

同樣的道理,讓我們來看看共享汽車的運營情況。我們抓取了去年GoFun從10月到1月的數(shù)據(jù),得出了以下一些運營狀況的分析:
- GoFun絕大多數(shù)車型都是奇瑞的車。兩座和四座的車是主流,車身小巧一方面比較節(jié)能,另一方面比較容易操作。這主要是因為奇瑞投資了GoFun。

- 截止2018年1月26日,GoFun目前在全國總共有10327輛車。下圖是車輛增長的情況。可見運營一直在持續(xù),并且緩慢增長。

- 三個月內車的使用次數(shù)的分布。橫坐標是使用的次數(shù),縱坐標是次數(shù)對應的車的數(shù)量。近似一個正態(tài)分布,大約70%的車都在24到72的區(qū)間。平均起來每天0.3次到1次左右,這對于共享汽車企業(yè)來講并不是一個好事,太低的使用率可能會導致入不敷出。
- 使用時長的分布。橫坐標代表停車的時長(小時)最長統(tǒng)計到70小時,縱坐標代表有多少車次。對比停車時長的分布,使用時長的分布比較明顯的集中在0到6小時之間,這也是共享出行的特點。由于GoFun有包天的租車服務,所以長期的出行的費用也是可以接受,長達70小時以上的使用時間也有1700多車次。
由于篇幅所限,更多的分析結果可以參見大數(shù)據(jù)看共享汽車一文。
保護我們的數(shù)據(jù)
以共享單車為例,當我們手工的小范圍的采集數(shù)據(jù)時,并不能產生很大的作用,當我們收集到的數(shù)據(jù)越來越多時,甚至通過自動化爬蟲這種手段獲取到足夠多的數(shù)據(jù)以后,大數(shù)據(jù)就開始展現(xiàn)量變到質變的過程。共享單車、共享汽車的案例中,雖然我們沒有得到訂單的數(shù)據(jù)、沒有用戶信息,但通過對海量數(shù)據(jù)分析、結合多種維度,我們依然可以窺探企業(yè)的運營。我在2017自由職業(yè)大數(shù)據(jù)分析一文中爬取到Freelancer網站的所有公開信息并進行了自由職業(yè)的分析;在機票大數(shù)據(jù)分析,揭示購票的秘密
中,通過一年多的機票價格數(shù)據(jù)采集得到多個機票購票的建議。所有的數(shù)據(jù)都來自于公開的API,而主要的獲取方式則是爬蟲。
網絡爬蟲(又被稱為網頁蜘蛛,網絡機器人,在FOAF社區(qū)中間,更經常的稱為網頁追逐者),是一種按照一定的規(guī)則,自動地抓取萬維網信息的程序或者腳本。另外一些不常使用的名字還有螞蟻、自動索引、模擬程序或者蠕蟲。
爬蟲獲取信息的方式可以通過爬取頁面,也可以通過分析APP的請求來得到API。所以一切返回數(shù)據(jù)的地方都是可以通過一些手段獲取到,而主要的區(qū)別在于獲取數(shù)據(jù)的難度的大小,這也通常是爬蟲和反爬蟲的較量之一。當爬蟲的成本高到一定水平以后,反爬蟲就勝利了。
通常來講,反爬蟲的手段無外乎對IP限制、驗證碼、要求登錄等,可以參考關于反爬蟲,看這一篇就夠了一文。固然這些方式都可以較好的保護應用,但會給適用方帶來不便,除此之前我們可以考慮一些建議來減小數(shù)據(jù)被大規(guī)模爬取的可能,增加爬蟲的成本:
從業(yè)務上進行考慮,不需要客戶感知的數(shù)據(jù)不提供或者少提供
以單車應用來看,ofo單車并沒有提供摩拜單車的預定的功能,所以在界面上也沒有必要展示出單車的編號信息。在去年9月份左右,ofo單車對API進行了調整,將所有的單車編號進行隨機化處理,導致ofo單車的數(shù)據(jù)目前無法爬取。哈羅單車在未登陸的情況下只提供幾臺單車的數(shù)據(jù),登陸后能夠展示附近所有的單車。由于需要登錄,爬蟲的成本會變得很高也非常的脆弱。
反觀某大型旅游OTA網站的API,調用后返回了相當數(shù)量的額外信息,甚至在價格方面包含了兩種價格,而其中一種價格并不會在界面上進行顯示,這種信息非常值得懷疑是不是內部的價格。
盤點所有的API的使用方,謹慎一切以JavsScript開發(fā)的客戶端
目前手機APP層面的保護措施已經相對較多,而且大多數(shù)應用受到加密外殼的保護很難破解,想得到URL里面的簽名信息的生成方式變得非常困難。然而仔細盤點一款產品的各種渠道,會發(fā)現(xiàn)有些產品可能會提供HTML5、公眾號、小程序等入口,而這些以JavsScript生態(tài)圈的應用并未收到很好的保護。
以某款快遞軟件為例,該查詢軟件中提供了sign信息,基本無法知道如何生成,但在小程序中調用了類似的API并帶上了sign信息,通過一個Root的安卓手機可以將小程序解包,分析JavaScript很容易的發(fā)現(xiàn)了sign的生成方式。另外某單車軟件登陸的簽名信息eption也是經過了加密處理,在小程序中也能夠發(fā)現(xiàn)其生成的方式,馬奇諾防線就這樣輕松的被越過了。
當然小程序端的防止爬取的方式比較簡單,小程序的后端可以通過微信的接口生成動態(tài)的token的方式進行用戶驗證,防止數(shù)據(jù)泄露。
做好后臺的監(jiān)控
道高一尺魔高一丈,后臺API調用的日志和監(jiān)控手段要重視。對于異常數(shù)量的API調用要及時分析出原因減少被利用的可能。

