對WX公眾號文章的爬取分析


聲明:請勿用於商業用途,以下只是個人興趣分析以及技術分享,請各位自行斟酌處理,否則后果自負

 

這篇文章很簡短,主要的理論分析操作

 

0.工具准備:

 

  • 微信號
  • 關注好目標公眾號
  • charles

 

1).准備一個微信號,建議不要用剛注冊的微信號來操作,容易被封號,微信內部是有一套反爬系統的,你運氣不好就會觸發到

2).關注好你需要爬取的公眾號,因為要關注了,你才可以打開這個公眾號的歷史消息,不然的話,你只能看到最近的幾篇文章,說白了就是看不全,搜狗搜索針對微信公眾號的搜索我沒猜錯就是這樣,所以只能看前幾條信息,並且我發現搜狗搜索已經不好使了

3).charles就是抓包工具,這個網上很多資源,配置步驟也有很多,這個就自行查看配置了,記得要裝上ssl證書,配置好ssl的代理。

 

那么有朋友要問,可以用fiddler替代charles嗎?

 

其他地方不出意外是可以的,但是這里,針對微信的還真的要用到charles,因為fiddler我試了,抓不到包,當然也可能是我用的fiddler版本問題,這個就自行選擇吧,我個人建議還是用charles

 

 

1.打開charles

 

要先打開抓包工具,這樣抓包工具才能嗅探到數據接口

 

 

 

 

 

 

2.打開pc端微信,找到公眾號

 

登錄pc端微信,然后打開公眾號那一欄

 

 

 

 

 

 

3. 找到目標公眾號文章列表,獲取鏈接

 找到目標公眾號,然后點擊一下,再點【查看歷史消息】

 

 

 

然后會從pc端的微信里打開一個頁面,如下:

 

 

 

 

 

 

 

 

4.用charles獲取鏈接

回到charles工具,此時已經嗅探到了數據接口,找到mp.weixin.qq.com的組合,從該組里找到profile_ext開頭的第一個鏈接

 

 

 

 

  

 

5.復制並拼接鏈接

 

把上面獲取到的鏈接,拿下來分析

https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=保密==&scene=124&uin=保密%3D%3D&key=5cc14d5e215be3edfddab345c1e7d1545790a5d5106ac566ca33c21751c8578150126ebd750daa11336a1b536880ad8a814eb7be46e0e87e59f6c53828a3598637f04c6e8f8ebceb27fe27ed90797757&devicetype=Windows+10+x64&version=62090070&lang=zh_CN&a8scene=7&pass_ticket=lhCQ79EkT0QdVeeyIOeLJKN5WNTdCHysp252vVp7H4qdBHq5iSNThsQgO7qvPqul&winzoom=1

 

這里面的參數看起來很復雜,其實主要的就是那幾個

 

根據我的分析發現,那個biz參數的值唯一,不同公眾號有不同的值,且這個值是用base64轉碼過,反解回去是公眾號id

uin就是微信個人號的id然后base64轉碼過,這個值也是唯一的,一個號一個值

key的值就是微信客戶端本地自己生成的,這個就很難破解了,且這個key有30分鍾時效性,如果超時的話,用charles重新獲取下鏈接即可,並且根據我的分析得出,其實我覺得這30分鍾是穩穩的夠了的

 

 

然后,上面打開的歷史信息,其實是可以轉成json格式,然后更利於我們寫代碼處理

 

在那個公眾號位置,就是有雙等號的位置,添加以下字段

 

&f=json&offset=0&count=10

 

 

 

如下:

 

 

https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=保密==&f=json&offset=0&count=10&scene=124&uin=保密%3D%3D&key=5cc14d5e215be3edfddab345c1e7d1545790a5d5106ac566ca33c21751c8578150126ebd750daa11336a1b536880ad8a814eb7be46e0e87e59f6c53828a3598637f04c6e8f8ebceb27fe27ed90797757&devicetype=Windows+10+x64&version=62090070&lang=zh_CN&a8scene=7&pass_ticket=lhCQ79EkT0QdVeeyIOeLJKN5WNTdCHysp252vVp7H4qdBHq5iSNThsQgO7qvPqul&winzoom=1

  

拼接出來的鏈接可以用瀏覽器打開驗證下:

 

 

 

 

 

 

這個鏈接即是程序能處理的鏈接了,然后里面的文章鏈接,根據我的發現是永久的,不是臨時,所以先爬取一級文章列表頁,然后永久存儲,然后設置個隊列,再隨機處理詳情頁,即我們需要的文章內容即可,同樣的,操作也不能過於頻繁

 

如果你要翻頁,改下拼接的參數中的offset的值即可,首頁就是0,第二頁就是10,第三頁就是20......

 

這里我再給幾個微信的請求頭,一般的瀏覽器請求頭是會被識別屏蔽的,它會提示讓你登錄手機微信,反正就是打不開

 

'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36 MicroMessenger/6.5.2.501 NetType/WIFI WindowsWechat QBCore/3.43.884.400 QQBrowser/9.0.2524.400', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) MicroMessenger/2.3.30(0x12031e10) MacWechat Chrome/39.0.2171.95 Safari/537.36 NetType/WIFI WindowsWechat MicroMessenger/2.3.30(0x12031e10) MacWechat Chrome/39.0.2171.95 Safari/537.36 NetType/WIFI WindowsWechat', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2785.116 Safari/537.36 QBCore/4.0.1301.400 QQBrowser/9.0.2524.400 Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/53.0.2875.116 Safari/537.36 NetType/WIFI MicroMessenger/7.0.5 WindowsWechat', 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148 MicroMessenger/7.0.12(0x17000c2d) NetType/WIFI Language/zh_CN'
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'

 

 

注:操作不能過於頻繁,並且我個人建議,每天采集不要都用同一個號來爬取,准備幾個號,換着換着來

 

6.改進

 

以上的說白了就是半自動的操作,如果你覺得每次還要手動的獲取鏈接,然后拼接很繁瑣,其實可以做成全自動的,大概就是用selenium/appium配合即可,網上也有這方面的教程,這里就不展示了,自行選擇了

 

 

好的,以上就是一些理論操作,具體的代碼由於涉及到隱私問題,就不給代碼展示了

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM