溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python3爬蟲利器Charles的使用方法是什么

發(fā)布時(shí)間:2020-08-05 11:45:17 來源:億速云 閱讀:209 作者:小新 欄目:編程語言

這篇文章主要介紹Python3爬蟲利器Charles的使用方法是什么,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

Charles 的使用

Charles 是一個(gè)網(wǎng)絡(luò)抓包工具,我們可以用它來做 App 的抓包分析,得到 App 運(yùn)行過程中發(fā)生的所有網(wǎng)絡(luò)請(qǐng)求和響應(yīng)內(nèi)容,這就和 Web 端瀏覽器的開發(fā)者工具 Network 部分看到的結(jié)果一致。

相比 Fiddler 來說,Charles 的功能更強(qiáng)大,而且跨平臺(tái)支持更好。所以我們選用 Charles 作為主要的移動(dòng)端抓包工具,用于分析移動(dòng) App 的數(shù)據(jù)包,輔助完成 App 數(shù)據(jù)抓取工作。

1. 本節(jié)目標(biāo)

本節(jié)我們以京東 App 為例,通過 Charles 抓取 App 運(yùn)行過程中的網(wǎng)絡(luò)數(shù)據(jù)包,然后查看具體的 Request 和 Response 內(nèi)容,以此來了解 Charles 的用法。

2. 準(zhǔn)備工作

請(qǐng)確保已經(jīng)正確安裝 Charles 并開啟了代理服務(wù),手機(jī)和 Charles 處于同一個(gè)局域網(wǎng)下,Charles 代理和 CharlesCA 證書設(shè)置好,另外需要開啟 SSL 監(jiān)聽,具體的配置可以參考第 1 章的說明。

3. 原理

首先 Charles 運(yùn)行在自己的 PC 上,Charles 運(yùn)行的時(shí)候會(huì)在 PC 的 8888 端口開啟一個(gè)代理服務(wù),這個(gè)服務(wù)實(shí)際上是一個(gè) HTTP/HTTPS 的代理。

確保手機(jī)和 PC 在同一個(gè)局域網(wǎng)內(nèi),我們可以使用手機(jī)模擬器通過虛擬網(wǎng)絡(luò)連接,也可以使用手機(jī)真機(jī)和 PC 通過無線網(wǎng)絡(luò)連接。

設(shè)置手機(jī)代理為 Charles 的代理地址,這樣手機(jī)訪問互聯(lián)網(wǎng)的數(shù)據(jù)包就會(huì)流經(jīng) Charles,Charles 再轉(zhuǎn)發(fā)這些數(shù)據(jù)包到真實(shí)的服務(wù)器,服務(wù)器返回的數(shù)據(jù)包再由 Charles 轉(zhuǎn)發(fā)回手機(jī),Charles 就起到中間人的作用,所有流量包都可以捕捉到,因此所有 HTTP 請(qǐng)求和響應(yīng)都可以捕獲到。同時(shí) Charles 還有權(quán)力對(duì)請(qǐng)求和響應(yīng)進(jìn)行修改。

4. 抓包

初始狀態(tài)下 Charles 的運(yùn)行界面如圖 11-1 所示:

Python3爬蟲利器Charles的使用方法是什么

                                                                                   圖 11-1 Charles 運(yùn)行界面

Charles 會(huì)一直監(jiān)聽 PC 和手機(jī)發(fā)生的網(wǎng)絡(luò)數(shù)據(jù)包,捕獲到的數(shù)據(jù)包就會(huì)顯示在左側(cè),隨著時(shí)間的推移,捕獲的數(shù)據(jù)包越來越多,左側(cè)列表的內(nèi)容也會(huì)越來越多。

可以看到,圖中左側(cè)顯示了 Charles 抓取到的請(qǐng)求站點(diǎn),我們點(diǎn)擊任意一個(gè)條目便可以查看對(duì)應(yīng)請(qǐng)求的詳細(xì)信息,其中包括 Request、Response 等內(nèi)容。

接下來清空 Charles 的抓取結(jié)果,點(diǎn)擊左側(cè)的掃帚按鈕即可清空當(dāng)前捕獲到的所有請(qǐng)求。然后點(diǎn)擊第二個(gè)監(jiān)聽按鈕,確保監(jiān)聽按鈕是打開的,這表示 Charles 正在監(jiān)聽 App 的網(wǎng)絡(luò)數(shù)據(jù)流,如圖 11-2 所示。

Python3爬蟲利器Charles的使用方法是什么

                                                                                            圖 11-2 監(jiān)聽過程

這時(shí)打開手機(jī)京東,注意一定要提前設(shè)置好 Charles 的代理并配置好 CA 證書,否則沒有效果。

打開任意一個(gè)商品,如 iPhone,然后打開它的商品評(píng)論頁面,如圖 11-3 所示。

Python3爬蟲利器Charles的使用方法是什么

                                                                                      圖 11-3 評(píng)論頁面

不斷上拉加載評(píng)論,可以看到 Charles 捕獲到這個(gè)過程中京東 App 內(nèi)發(fā)生的所有網(wǎng)絡(luò)請(qǐng)求,如圖 11-4 所示。

Python3爬蟲利器Charles的使用方法是什么

                                                                                          圖 11-4 監(jiān)聽結(jié)果

左側(cè)列表中會(huì)出現(xiàn)一個(gè) api.m.jd.com 鏈接,而且它在不停閃動(dòng),很可能就是當(dāng)前 App 發(fā)出的獲取評(píng)論數(shù)據(jù)的請(qǐng)求被 Charles 捕獲到了。我們點(diǎn)擊將其展開,繼續(xù)上拉刷新評(píng)論。隨著上拉的進(jìn)行,此處又會(huì)出現(xiàn)一個(gè)個(gè)網(wǎng)絡(luò)請(qǐng)求記錄,這時(shí)新出現(xiàn)的數(shù)據(jù)包請(qǐng)求確定就是獲取評(píng)論的請(qǐng)求。

為了驗(yàn)證其正確性,我們點(diǎn)擊查看其中一個(gè)條目的詳情信息。切換到 Contents 選項(xiàng)卡,這時(shí)我們發(fā)現(xiàn)一些 JSON 數(shù)據(jù),核對(duì)一下結(jié)果,結(jié)果有 commentData 字段,其內(nèi)容和我們?cè)?App 中看到的評(píng)論內(nèi)容一致,如圖 11-5 所示。

Python3爬蟲利器Charles的使用方法是什么

                                                                                     圖 11-5 Json 數(shù)據(jù)結(jié)果

這時(shí)可以確定,此請(qǐng)求對(duì)應(yīng)的接口就是獲取商品評(píng)論的接口。這樣我們就成功捕獲到了在上拉刷新的過程中發(fā)生的請(qǐng)求和響應(yīng)內(nèi)容。

5. 分析

現(xiàn)在分析一下這個(gè)請(qǐng)求和響應(yīng)的詳細(xì)信息。首先可以回到 Overview 選項(xiàng)卡,上方顯示了請(qǐng)求的接口 URL,接著是響應(yīng)狀態(tài) Status Code、請(qǐng)求方式 Method 等,如圖 11-6 所示。

Python3爬蟲利器Charles的使用方法是什么

                                                                                        圖 11-6 監(jiān)聽結(jié)果

這個(gè)結(jié)果和原本在 Web 端用瀏覽器開發(fā)者工具內(nèi)捕獲到的結(jié)果形式是類似的。

接下來點(diǎn)擊 Contents 選項(xiàng)卡,查看該請(qǐng)求和響應(yīng)的詳情信息。

上半部分顯示的是 Request 的信息,下半部分顯示的是 Response 的信息。比如針對(duì) Reqeust,我們切換到 Headers 選項(xiàng)卡即可看到該 Request 的 Headers 信息,針對(duì) Response,我們切換到 JSON TEXT 選項(xiàng)卡即可看到該 Response 的 Body 信息,并且該內(nèi)容已經(jīng)被格式化,如圖 11-7 所示。

Python3爬蟲利器Charles的使用方法是什么

                                                                                           圖 11-7 監(jiān)聽結(jié)果

由于這個(gè)請(qǐng)求是 POST 請(qǐng)求,所以我們還需要關(guān)心的就是 POST 的表單信息,切換到 Form 選項(xiàng)卡即可查看,如圖 11-8 所示。

Python3爬蟲利器Charles的使用方法是什么

                                                                                        圖 11-8 監(jiān)聽結(jié)果

這樣我們就成功抓取 App 中的評(píng)論接口的請(qǐng)求和響應(yīng),并且可以查看 Response 返回的 JSON 數(shù)據(jù)。

至于其他 App,我們同樣可以使用這樣的方式來分析。如果我們可以直接分析得到請(qǐng)求的 URL 和參數(shù)的規(guī)律,直接用程序模擬即可批量抓取。

6. 重發(fā)

Charles 還有一個(gè)強(qiáng)大功能,它可以將捕獲到的請(qǐng)求加以修改并發(fā)送修改后的請(qǐng)求。點(diǎn)擊上方的修改按鈕,左側(cè)列表就多了一個(gè)以編輯圖標(biāo)為開頭的鏈接,這就代表此鏈接對(duì)應(yīng)的請(qǐng)求正在被我們修改,如圖 11-9 所示。

Python3爬蟲利器Charles的使用方法是什么

                                                                                        圖 11-9 編輯頁面

我們可以將 Form 中的某個(gè)字段移除,比如這里將 partner 字段移除,然后點(diǎn)擊 Remove。這時(shí)我們已經(jīng)對(duì)原來請(qǐng)求攜帶的 Form Data 做了修改,然后點(diǎn)擊下方的 Execute 按鈕即可執(zhí)行修改后的請(qǐng)求,如圖 11-10 所示。

Python3爬蟲利器Charles的使用方法是什么

                                                                                       圖 11-10 編輯頁面

可以發(fā)現(xiàn)左側(cè)列表再次出現(xiàn)了接口的請(qǐng)求結(jié)果,內(nèi)容仍然不變,如圖 11-11 所示。

Python3爬蟲利器Charles的使用方法是什么

                                                                                 圖 11-11 重新請(qǐng)求后結(jié)果

刪除 Form 表單中的 partner 字段并沒有帶來什么影響,所以這個(gè)字段是無關(guān)緊要的。

有了這個(gè)功能,我們就可以方便地使用 Charles 來做調(diào)試,可以通過修改參數(shù)、接口等來測(cè)試不同請(qǐng)求的響應(yīng)狀態(tài),就可以知道哪些參數(shù)是必要的哪些是不必要的,以及參數(shù)分別有什么規(guī)律,最后得到一個(gè)最簡(jiǎn)單的接口和參數(shù)形式以供程序模擬調(diào)用使用。

以上是Python3爬蟲利器Charles的使用方法是什么的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI