通過手機(jī)模擬器爬騰訊新聞APP數(shù)據(jù)

最近接到公司派的1個任務(wù),讓我爬取騰訊新聞app的熱點(diǎn)榜

此熱點(diǎn)新聞每10分鐘更新1次,所以需要每隔10分鐘爬取一次,然后保存下來。最簡單的辦法就是找電腦網(wǎng)頁版,但是翻遍所有網(wǎng)站也沒有找到這個接口,所以只好乖乖地從手機(jī)端爬了。

手機(jī)端數(shù)據(jù)接口參數(shù)分析是一件很難的事,我們可以繞過此過程,在APP數(shù)據(jù)交換的過程通過mitmproxy工具將返回的數(shù)據(jù)攔截下來。

這種方法的優(yōu)點(diǎn)就是簡便,分析接口參數(shù),缺點(diǎn)是需要一臺手機(jī),不停地進(jìn)行數(shù)據(jù)請求,速度相對較慢,但是對此次爬取來說足夠了。為了節(jié)省1部手機(jī),我想到了爬取手機(jī)模擬器端APP數(shù)據(jù)。

下面一起來看看我是怎么實(shí)現(xiàn)的吧

第一步:安裝charles、appium、mitmdump和夜神手機(jī)模擬器

1.安裝charles

Charles是一款代理服務(wù)器,通過過將自己設(shè)置成系統(tǒng)(電腦或者瀏覽器)的網(wǎng)絡(luò)訪問代理服務(wù)器,然后截取請求和請求結(jié)果達(dá)到分析抓包的目的。

①下載:https://www.charlesproxy.com/latest-release/download.do

下載完成后,點(diǎn)擊安裝,一路默認(rèn)安裝即可。

②設(shè)置代理

③安裝證書

依次點(diǎn)擊幫助——ssl代理——安裝charles root證書

點(diǎn)擊確定,電腦端證書就安裝完成了

再依次點(diǎn)擊幫助——ssl代理——在移動設(shè)備或遠(yuǎn)程瀏覽器上安裝charles root證書

然后在模擬器瀏覽器中輸入chls.pro/ssl,會自動下載手機(jī)端證書并安裝。

2.安裝appium

依次安裝Adroid SDK、JAVA和appium客戶端即可

3.安裝mitmproxy

mitmproxy是一個支持http和https的抓包程序,類似Fiddler、Cha,只不過它可以對接python1腳本。

①只需執(zhí)行如下命令即可安裝:Pip install mitmproxy

②證書配置:在命令行輸入mitmdump,然后在用戶目錄找到CA證書

雙擊mitmproxy-ca-cert.p12,在電腦上安裝證書,然后將mitmproxy-ca-cert.pem發(fā)送到模擬器上,在手機(jī)設(shè)置-安全-從SD卡安裝,選中此文件,安裝即可。

4.安裝夜神手機(jī)模擬器

安裝地址

http://soft.onlinedown.net/soft/987318.html

一直默認(rèn)安裝即可

第二步:用Charles分析出騰訊app熱點(diǎn)新聞數(shù)據(jù)接口

首先設(shè)置模擬手機(jī)代理ip,長按WireSSID,點(diǎn)擊修改網(wǎng)絡(luò)

設(shè)置好代理ip,保存即可。

打開模擬器騰訊新聞APP,進(jìn)入今日熱搜界面,然后在charles中找到該接口

它的url信息為

將該url在瀏覽器中打開

該url看起來是比較復(fù)雜的,但是今天我們不去分析它,按照上述所說的方法抓取數(shù)據(jù)。

第三步:用mitmdump抓包,保存熱點(diǎn)新聞數(shù)據(jù)

首先設(shè)置代理ip,步驟同第二步,不過要把端口設(shè)置為8080

然后編寫python腳本抓取第二步的接口

有兩種數(shù)據(jù)流方式,一種是相應(yīng)數(shù)據(jù)response,一種是請求數(shù)據(jù)request,本次用response,flow代表數(shù)據(jù)流

為了篩選新聞熱點(diǎn)的數(shù)據(jù)流,根據(jù)第二步url的固定部分判斷該數(shù)據(jù)流是否是我們要的url,如果是,則保存flow.request.text,用json解析保存到表格內(nèi),至此腳本編寫完畢。在腳本所在路徑裕興mitmdump -s demo.py

然后在模擬器中打開騰訊新聞今日熱搜界面

再看看表格中保存的數(shù)據(jù)

第四步:用appium控制手機(jī)模擬器定時啟動騰訊新聞APP

第三步中是手動點(diǎn)擊查看熱點(diǎn)榜,因?yàn)榇藷狳c(diǎn)信息是10分鐘更更新1次

所以我們需要用appium寫個腳本,模擬循環(huán)進(jìn)行此過程,同時mitmproxy腳本會截取最新的數(shù)據(jù)

但是現(xiàn)在還是沒法打開模擬器里的騰訊新聞app,因?yàn)槟M器還未連接到主機(jī),還需要在夜神模擬器所在安裝目錄bin路徑下運(yùn)行以下代碼

再檢測一下

這就算連接成功了,再運(yùn)行appium腳本就ok了,展示視頻如下

正常情況應(yīng)該是每隔10分鐘點(diǎn)擊1次才能爬到最新數(shù)據(jù),此視頻為了展示效果縮短了時間間隔。

小結(jié):app的爬取是爬蟲最難的部分,涉及很多復(fù)雜的逆向分析過程,這次只是借助模擬器介紹了1個非常簡單的app爬取過程,有興趣的朋友可以借此深入學(xué)習(xí)一下。

https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=MzA3NDQwNzI0NA==&scene=124#wechat_redirect

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容