您當前位置>首頁 » 新聞資(zī)訊 » 公衆号相關(guān) >
爬蟲爬取公衆号内容
發表時間:2020-10-17
發布人:葵宇科技
浏覽次數:61
*不涉及具體代碼
具體步驟
- 獲取移動(dòng)端内容列表
- AVD模拟器(qì)(Discarded)
經過實際嘗試,算力占用過多,不予考慮。 - adb USB debug
adb調試 + appium server + python appium-client 控制腳本點擊/滑動(dòng)獲取所有内容列表、發送移動(dòng)端頁面訪問(wèn)請求。
- 移動(dòng)端流量請求劫持
調查發現,所有移動(dòng)端訪問(wèn)公衆号内容發起的流量請求跟實際内容URI均保持統一格式:
如(rú)上圖可(kě)知,移動(dòng)設備統一向mp.weixin.qq.com/mp/geticon發送api獲取公衆号内容,經過嘗試發現,
實際上内容的URL實際為移動(dòng)端發送請求的請求頭中(zhōng)的Referer的value。因此,以請求劫持的方式獲取爬蟲目标URL。
original-request可(kě)以通(tōng)過emulator進行觸發,但是劫持請求包,既要保證移動(dòng)設備能夠獲得公衆号内容保證emulator無異常持續運行,
又要保證能自動(dòng)化将大量請求中(zhōng)的Referer值提取出來由python爬蟲解析程序提取數據。
- tcpdump / wireshark流量分析
- Fiddler http(s)數據包抓取(采用)
Ⅰ 将Fiddler host跟移動(dòng)設備連接同一Intranet
Ⅱ 移動(dòng)設備設備使用Fiddler作為網絡代理,以供Fiddler嗅探移動(dòng)端流量
> Tools > Options > Connections使能Fiddler Proxy,并将移動(dòng)設備代理配置為Fiddler host/監聽端口。
Ⅲ 微信公衆号請求均為HTTPS協議,沒法直接抓取獲取數據包内容,安裝Fiddler證書以嗅探代理流量
??a. 在移動(dòng)端設備浏覽器(qì)訪問(wèn)http://ipv4.fiddler:8888/,下(xià)載Fiddler證書,在移動(dòng)端安裝
??b. 在移動(dòng)端點擊訪問(wèn)公衆号内容,确認Fiddler能抓取到移動(dòng)端請求,并能查看數據包内容(主要是Request Headers)
TODO: 調查發現還有更好的流量截持方式,mitmproxy(mitmproxy is a free and open source interactive HTTPS proxy.)。
- 提取劫持數據包Referer字段
作為公衆号内容爬取的最終目标,即請求包包頭Referer字段的URL,因此需要對Fiddler劫持的流量進行統一整理提取存儲。
嘗試而言,Fiddler導出session内容效果并不太理想并且FiddlerScript使用也不是太友好(雖然很強),
因此采用這種辦法:Fiddler Custom Rules重定向到本地trap web server,由trap server提取請求内容持久化。
(參考腳本編寫方法:https://www.telerik.com/forums/redirection-from-https-to-http)if (oSession.uriContains("geticon?")) { oSession.host="localhost:9767"; oSession.oRequest.headers.UriScheme="http"; } // 将full-url帶有geticon字符的請求重定向到本地9767端口,并使用無加密的http協議進行傳輸