爬蟲爬取公衆号内容 - 新聞資(zī)訊 - 雲南小程序開發|雲南軟件開發|雲南網站(zhàn)建設-西山區知普網絡科技工作室

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不管是網站(zhàn),軟件還是小程序,都要直接或間接能為您産生價值,我們在追求其視覺表現的同時,更側重于功能的便捷,營銷的便利,運營的高效,讓網站(zhàn)成為營銷工具,讓軟件能切實提升企業(yè)内部管理水平和(hé)效率。優秀的程序為後期升級提供便捷的支持!

爬蟲爬取公衆号内容

發表時間:2020-10-17

發布人:葵宇科技

浏覽次數:61

*不涉及具體代碼

具體步驟

  1. 獲取移動(dòng)端内容列表
  • AVD模拟器(qì)(Discarded)

    經過實際嘗試,算力占用過多,不予考慮。
  • adb USB debug
    adb調試 + appium server + python appium-client 控制腳本點擊/滑動(dòng)獲取所有内容列表、發送移動(dòng)端頁面訪問(wèn)請求。
  1. 移動(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.)。

  1. 提取劫持數據包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協議進行傳輸

相關(guān)案例查看更多