querylist采集微信公眾號文章(Python模擬安卓App操作微信App的方法(詳見(jiàn)代碼介紹))
優(yōu)采云 發(fā)布時(shí)間: 2021-11-11 15:04querylist采集微信公眾號文章(Python模擬安卓App操作微信App的方法(詳見(jiàn)代碼介紹))
本文文章主要介紹了基于Python采集的微信公眾號歷史數據爬取。文章中介紹的示例代碼非常詳細,對大家的學(xué)習或工作有一定的參考學(xué)習價(jià)值。有需要的朋友可以參考
鯤志鵬的技術(shù)人員將在本文中介紹一種采集通過(guò)模擬微信App的操作來(lái)指定公眾號所有歷史數據的方法。
通過(guò)我們的抓包分析,我們發(fā)現微信公眾號的歷史數據是通過(guò)HTTP協(xié)議加載的。對應的API接口如下圖所示,其中有四個(gè)關(guān)鍵參數(__biz、appmsg_token、pass_ticket、Cookie)。
為了能夠得到這四個(gè)參數,我們需要模擬App的運行,讓它生成這些參數,然后我們就可以抓包了。對于模擬App操作,我們介紹了通過(guò)Python模擬Android App的方法(詳見(jiàn)詳情)。對于 HTTP 集成捕獲,我們之前已經(jīng)引入了 Mitmproxy(查看詳情)。
我們需要模擬微信的操作來(lái)完成以下步驟:
1. 推出微信應用
2. 點(diǎn)擊“聯(lián)系人”
3. 點(diǎn)擊“公眾號”
4.點(diǎn)擊公眾號進(jìn)入采集
5. 點(diǎn)擊右上角的用戶(hù)頭像圖標
6. 點(diǎn)擊“所有消息”
此時(shí),我們可以從響應數據中捕捉到__biz、appmsg_token、pass_ticket這三個(gè)關(guān)鍵參數,以及請求頭中的Cookie值。如下所示。
有了以上四個(gè)參數,我們就可以構造一個(gè)API請求來(lái)獲取歷史文章列表,通過(guò)調用API接口直接獲取數據(無(wú)需模擬App操作)。核心參數如下。通過(guò)改變偏移參數,可以得到所有的歷史數據。
# Cookie headers = {'Cookie': 'rewardsn=; wxtokenkey=777; wxuin=584068438; devicetype=android-19; version=26060736; lang=zh_CN; pass_ticket=Rr8cO5c2******3tKGqe7aVZzV9TupvrK+1uHHmHYQGL2WFdKIE; wap_sid2=COKhxu4KElxckFZQ3QzTHU4WThEUk0zcWdrZjhGcUdYdEVSV3Y1X2NPWHNUakRrd1ZzMnpLTERpdE5rbmxjSTg******dlRBcUNRazZpOGxTZUVEQUTgNQJVO'} url = 'https://mp.weixin.qq.com/mp/profile_ext?' data = {} data['is_ok'] = '1' data['count'] = '10' data['wxtoken'] = '' data['f'] = 'json' data['scene'] = '124' data['uin'] = '777' data['key'] = '777' data['offset'] = '0' data['action'] = 'getmsg' data['x5'] = '0' # 下面三個(gè)參數需要替換 # https://mp.weixin.qq.com/mp/profile_ext?action=home應答數據里會(huì )暴漏這三個(gè)參數 data['__biz'] = 'MjM5MzQyOTM1OQ==' data['appmsg_token'] = '993_V8%2BEmfVD7g%2FvMZ****4DNUJNFkg~~' data['pass_ticket'] = 'Rr8cO5c23ZngeQHRGy8E7gv*****pvrK+1uHHmHYQGL2WFdKIE' url = url + urllib.urlencode(data)
以“數字工廠(chǎng)”微信公眾號為例,采集的過(guò)程截圖如下:
輸出結果截圖如下:
以上就是基于Python采集爬取微信公眾號歷史數據的詳細內容。更多詳情請關(guān)注其他相關(guān)html中文網(wǎng)站文章!