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