教你一招,如何使用抓包工具轻松获取微信文章数据!
每天早上七點三十,準時推送干貨
Hello,大家好,五一小長假結束,今天開始上班!不過想想,再過三天就又周末,想想還是有點小激動,嘿嘿!
前幾天的文章,阿粉教了大家如何爬取豆瓣短評數據。爬取網頁的數據,只要我們熟悉 Xpath,還是不難的。
不過現在移動時代,很多應用可能只有客戶端軟件,只能在手機上使用,并沒有相應的網頁。
另外還有一些網頁并非是靜態網頁,頁面內容將會采用 JS 處理數據后生成,可以發生變化。這種動態網頁我們如果直接使用 HttpClient 訪問網頁,解析該網頁結構,是無法獲取到所需的數據。
針對以上兩種情況,使用 xpath 解析網頁,已經沒啥作用。這里阿粉教大家其他技巧獲取這些數據:
- 使用抓包工具獲取應用訪問請求 
- 模擬瀏覽器訪問動態網頁 
這篇文章我們主要講下如何通過抓包工具獲取應用訪問請求,下篇我們再聊下如何通過模擬瀏覽器訪問動態網頁。
抓包底層原理
不管是小程序,還是 APP,產品頁面顯示的數據都是通過訪問后臺請求獲取。現在互聯網一般使用 Http/Https 協議進行傳輸,數據格式通常采用 json 格式。
知道這層邏輯之后,只要我們能獲取這個請求鏈接,那我們其實就可以直接訪問該請求鏈接,得到返回 json 數據,然后解析獲取相應的數據。
這個過程最主要就是如何獲取手機應用的訪問請求?這里我們就需要通過借助抓包工具獲取。
抓包工具原理其實也不難,簡單來說,抓包工具就是一個代理軟件,代理相當于一個中間人。
客戶端首先將所有請求發送給代理,然后再由代理發送給服務器。服務器對請求的返回的響應先由代理攔截,再由代理返給客戶端。
ps:這不就是我們常用 AOP 模式嗎~
果然技術原理都是相通的。
圖片來源于網絡市面上抓包工具還是比較多,常用有:
- Windows 平臺:Fildder 
- Mac 平臺:Charles 
- iOS 系統:Thor 
- Android 系統:HttpCanary 
以上四個抓包工具,基本上覆蓋上所有主要平臺。下面阿粉將會著重介紹 Charles,其他平臺的工具感興趣的小伙伴可以自行研究一下。
Charles 抓包實踐
Charles 是一款基于 Java 開發的抓包工具,所以可以在多個平臺(Windows/Macos/Linux)安裝使用,不過阿粉還是覺得在 Mac 使用體驗比較好。
Charles 除了上面提到的抓包功能之外,還可以用來攔截網絡請求,方便做一些弱網測試等等,功能非常強大。
另外說下,Charles 是一款收費軟件,不過可以免費試用 30 天。
下載地址:https://www.charlesproxy.com/download/
安裝完成之后,打開 Charles,工具欄介紹如下:
圖片來自網絡簡單使用
Charles 基本使用非常簡單,只要打開,Charles 就會開始工作。
舉個例子,訪問了一下 baidu,我們可以左側觀察到這次請求,觸發的所有鏈接。具體點擊某個請求,我們可以觀察到所有具體請求信息。
如果此時打開 Charles 并未生效,可以查看一下是否設置通過 Charles 代理選項。
抓包手機請求
上面的示例,我們只是攔截本地 Mac 的請求,接下來我們來看下如何攔截手機應用的請求。
首先我們需要設置手機無線網絡連接,以蘋果手機為例:
首先進入網絡設置的,配置 HTTP 代理。
其次設置服務器 IP,即 Charles 主機 IP,端口默認為 8888。
當然我們可以修改默認端口,打開 Proxy/ProxySettings,設置端口。
設置代理之后,你可能會發現你的手機應用無法上網了,并且 Charles 抓包顯示如下 :
不用急,這個問題是是因為我們訪問的 HTTPS 請求連接。對于這些請求,我們還需要在手機端安裝 Charles 的證書才可以。
我們需要手機 Safari 瀏覽器輸入地址 chls.pro/ssl,出現證書安裝頁面,點擊安裝。
然后進入設置/通用/描述文件與設備管理,找到 Charles 的證書,輸入本機密碼,進行安裝。
最后還有一步,iOS 10.3 系統,還需要在設置/通用/關于本機/證書信任設置里面啟用完全信任 Charles 證書。
上述設置完成之后,我們再次訪問請求,就可以看到 Charles 攔截手機端發出去的請求。
過濾請求
Charles 默認將會攔截所有請求連接,這個情況有時會對我們產生干擾。我們可以在 Charles 進行設置規則,Charles 只會攔截符合規則的請求:
增加規則,比如我只想攔截 m.baidu.com 的請求信息:
此時 Charles 只會攔截我們規定的請求信息,非常清爽。
抓包實戰,獲取微信文章的閱讀,點贊數
手機代理設置完成之后,在微信中任意打開一篇公眾號文章,可以在 Charles 中看到多個請求,其中 https://mp.weixin.qq.com/mp/getappmsgext,該請求返回信息中包含文章閱讀數,點贊數,評論數量。
這里阿粉安利一款 IDEA 插件 gsonformat,可以將 json 信息快速轉成 POJO 類字段信息。這對于我們后期解析 json 數據,作用非常大。
總結
本篇文章阿粉主要跟大家聊了下 Charles 基本抓包技巧,掌握 Charles 抓包技巧之后,爬取手機端 APP 應用請求可以分為以下幾步:
通過抓包工具獲取訪問請求
研究請求之間的關系
解析返回信息
編寫爬蟲程序,數據存庫
好了,今天文章就講到這,下一篇文章,阿粉再來介紹下,如何獲取動態網頁的數據,敬請期待!
幫助文檔
https://www.cnblogs.com/meitian/p/7327088.html
https://juejin.im/post/5b8350b96fb9a019d9246c4c
https://www.jianshu.com/p/bb8231f48a07
< END >
如果大家喜歡我們的文章,歡迎大家轉發,點擊在看讓更多的人看到。也歡迎大家熱愛技術和學習的朋友加入的我們的知識星球當中,我們共同成長,進步。
往期精彩回顧
龍嶺迷窟真的這么好看?今天我們就用 Java 爬取豆瓣數據好好分析一下!
這些神奇 Bug,碰到真是讓人目瞪狗呆!
聽說,這些表情包只有程序員才懂
總結
以上是生活随笔為你收集整理的教你一招,如何使用抓包工具轻松获取微信文章数据!的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Jmeter_http request的
- 下一篇: windows中VS卸载opencv配置
