首頁>技術>

I介面

這種方式爬取速度最快,但是分為初級和高階,初級是針對部分應用加密不嚴格,可以通過抓包軟體抓包就能分析出一些介面,高階的就需要進行APP脫殼破解,閱讀原始碼分析出介面。

自動化操作

這種方式比較慢,但是相對要簡單一些,只要搞定了自動化操作工具,資料的抓取處理很方便。我目前了解了三種自動化工具:appium、Airtest、autoJS。針對這三種方式我們後面都會有文章來專門介紹。

今天我們就先使用初級方式來抓取一下喜馬拉雅APP的主播排行榜,來看看這些主播到底有多富有,他們的快樂你能想象到嗎?下面開擼了。

配置手機抓包環境

抓包工具我們之前介紹過三個:Fiddler、Charles、mitmproxy,直接安裝進行簡單配置即可抓包,這裡不做詳述。網上有茫茫多的這種配置帖子,我貼兩個在下面大家自行檢視。如果對於工具用法有需求的同學,請上嗶哩嗶哩搜尋相關視訊,看一個小時基本上就可以使用了。Charles手機抓包配置Fiddler手機抓包配置

操作抓包開啟模擬器和抓包軟體

開啟喜馬拉雅APP,具體操作如下

找到主播榜單

找到主播榜單以後,預設是小時榜,我們先搜尋一下有沒有抓到需要的資料,小時榜第一名:夏春瑤。切換到Charles,Ctrl+F開啟搜尋框

開啟底下搜尋到的內容,雙擊一下就會定位到對應的請求上,檢視響應資料

檢視資料

通過檢視我們就確定了,這個請求就是小時榜的請求地址。根據以上方式我們依次檢視日榜和周榜

以同樣的方式獲取對應的介面url,以下為對應介面:小時榜:http://114.80.139.232/gift-rank/v1/gift/rank/anchor/hour?ts=1578831339526日榜:http://114.80.170.77/gift-rank/v1/gift/rank/anchor/daily?ts=1578831339526周榜:http://114.80.139.232/gift-rank/v1/gift/rank/anchor/week?ts=1578831339526PS:我在廣電網路下抓取的介面和電信網路下不一樣,主要是介面中IP地址不一樣,不知道是IP變更了,還是和網路有關係,所以如果有同學使用我的程式碼不能正常抓取資料,請自己抓一下包

介面分析

已經拿到了介面,第一步我們就要嘗試一下介面是否能正常抓取到資料

import requestss = requests.session()r = s.get(url)print(r.text)

一般情況下肯定沒有這麼簡單,在headers或者cookies中肯定需要新增一下資料才行,那麼我們怎麼確定需要加哪些資料呢?Fiddler和Charles都有重複傳送請求的功能,在Charles中選中要測試的請求,右鍵點選Compose,下面就會多出一個請求,前面是一個筆的標記,然後把上面請求的headers中的資料,新增到下面請求的headers中

如果請求不成功,那麼就說明這個請求必須依賴上面的某個請求。成功以後呢,在回到帶“筆”的那個請求上,刪除headers中的部分內容,再次嘗試傳送請求,看是否能請求成功。反覆嘗試,直到剩下最少資料,並且可以請求成功。這樣就能確定需要在headers或者cookies中新增哪些資料。

通過以上除錯,我們發現headers中只需要新增host資料即可,對於小時榜,我們定時在每小時的58分抓取一次,日榜在每天23:58抓取一次,周榜在每週日23:58分抓取一次,程式碼已經上傳到我的GitHub上,資料儲存在MongoDB資料庫中。這篇我們抓取了一下資料:

榜單資料喜愛值直播狀態主播名排行使用者UID房間ID直播間資料粉絲團名稱粉絲數量直播間名稱直播開始時間直播結束時間分組ID線上人數參與人數使用者頭像

以上這些資料都是按照時段儲存的,這樣等抓取一段時間後,就可以把資料拿出來進行分析,這個等下次我們在進行分析處理。後面抓取的資料我也會匯出上傳到GitHub上,資料分析這塊我不是很熟,只能做一些簡單的分析。如果想要獲取程式碼,請觀眾“威信工種好”:Python爬蟲實戰之路。回覆:ximalaya,獲取程式碼地址。

最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • Android程序排程:Low memory killer(2)