[Python3網路爬蟲開發實戰] Charles 的使用
Charles 的使用
Charles 是一個網路抓包工具,我們可以用它來做 App 的抓包分析,得到 App 執行過程中發生的所有網路請求和響應內容,這就和 Web 端瀏覽器的開發者工具 Network 部分看到的結果一致。
相比 Fiddler 來說,Charles 的功能更強大,而且跨平臺支援更好。所以我們選用 Charles 作為主要的移動端抓包工具,用於分析移動 App 的資料包,輔助完成 App 資料抓取工作。
-
本節目標
本節我們以京東 App 為例,通過 Charles 抓取 App 執行過程中的網路資料包,然後檢視具體的 Request 和 Response 內容,以此來了解 Charles 的用法。 -
準備工作
請確保已經正確安裝 Charles 並開啟了代理服務,手機和 Charles 處於同一個區域網下,Charles 代理和 CharlesCA 證照設定好,另外需要開啟 SSL 監聽,具體的配置可以參考第 1 章的說明。 -
原理
首先 Charles 執行在自己的 PC 上,Charles 執行的時候會在 PC 的 8888 埠開啟一個代理服務,這個服務實際上是一個 HTTP/HTTPS 的代理。
確保手機和 PC 在同一個區域網內,我們可以使用手機模擬器通過虛擬網路連線,也可以使用手機真機和 PC 通過無線網路連線。
設定手機代理為 Charles 的代理地址,這樣手機訪問網際網路的資料包就會流經 Charles,Charles 再轉發這些資料包到真實的伺服器,伺服器返回的資料包再由 Charles 轉發回手機,Charles 就起到中間人的作用,所有流量包都可以捕捉到,因此所有 HTTP 請求和響應都可以捕獲到。同時 Charles 還有權力對請求和響應進行修改。
- 抓包
初始狀態下 Charles 的執行介面如圖 11-1 所示:
圖 11-1 Charles 執行介面
Charles 會一直監聽 PC 和手機發生的網路資料包,捕獲到的資料包就會顯示在左側,隨著時間的推移,捕獲的資料包越來越多,左側列表的內容也會越來越多。
可以看到,圖中左側顯示了 Charles 抓取到的請求站點,我們點選任意一個條目便可以檢視對應請求的詳細資訊,其中包括 Request、Response 等內容。
接下來清空 Charles 的抓取結果,點選左側的掃帚按鈕即可清空當前捕獲到的所有請求。然後點選第二個監聽按鈕,確保監聽按鈕是開啟的,這表示 Charles 正在監聽 App 的網路資料流,如圖 11-2 所示。
圖 11-2 監聽過程
這時開啟手機京東,注意一定要提前設定好 Charles 的代理並配置好 CA 證照,否則沒有效果。
開啟任意一個商品,如 iPhone,然後開啟它的商品評論頁面,如圖 11-3 所示。
圖 11-3 評論頁面
不斷上拉載入評論,可以看到 Charles 捕獲到這個過程中京東 App 內發生的所有網路請求,如圖 11-4 所示。
圖 11-4 監聽結果
左側列表中會出現一個 api.m.jd.com 連結,而且它在不停閃動,很可能就是當前 App 發出的獲取評論資料的請求被 Charles 捕獲到了。我們點選將其展開,繼續上拉重新整理評論。隨著上拉的進行,此處又會出現一個個網路請求記錄,這時新出現的資料包請求確定就是獲取評論的請求。
為了驗證其正確性,我們點選檢視其中一個條目的詳情資訊。切換到 Contents 選項卡,這時我們發現一些 JSON 資料,核對一下結果,結果有 commentData 欄位,其內容和我們在 App 中看到的評論內容一致,如圖 11-5 所示。
圖 11-5 Json 資料結果
這時可以確定,此請求對應的介面就是獲取商品評論的介面。這樣我們就成功捕獲到了在上拉重新整理的過程中發生的請求和響應內容。
- 分析
現在分析一下這個請求和響應的詳細資訊。首先可以回到 Overview 選項卡,上方顯示了請求的介面 URL,接著是響應狀態 Status Code、請求方式 Method 等,如圖 11-6 所示。
圖 11-6 監聽結果
這個結果和原本在 Web 端用瀏覽器開發者工具內捕獲到的結果形式是類似的。
接下來點選 Contents 選項卡,檢視該請求和響應的詳情資訊。
上半部分顯示的是 Request 的資訊,下半部分顯示的是 Response 的資訊。比如針對 Reqeust,我們切換到 Headers 選項卡即可看到該 Request 的 Headers 資訊,針對 Response,我們切換到 JSON TEXT 選項卡即可看到該 Response 的 Body 資訊,並且該內容已經被格式化,如圖 11-7 所示。
圖 11-7 監聽結果
由於這個請求是 POST 請求,所以我們還需要關心的就是 POST 的表單資訊,切換到 Form 選項卡即可檢視,如圖 11-8 所示。
圖 11-8 監聽結果
這樣我們就成功抓取 App 中的評論介面的請求和響應,並且可以檢視 Response 返回的 JSON 資料。
至於其他 App,我們同樣可以使用這樣的方式來分析。如果我們可以直接分析得到請求的 URL 和引數的規律,直接用程式模擬即可批量抓取。
- 重發
Charles 還有一個強大功能,它可以將捕獲到的請求加以修改併傳送修改後的請求。點選上方的修改按鈕,左側列表就多了一個以編輯圖示為開頭的連結,這就代表此連結對應的請求正在被我們修改,如圖 11-9 所示。
圖 11-9 編輯頁面
我們可以將 Form 中的某個欄位移除,比如這裡將 partner 欄位移除,然後點選 Remove。這時我們已經對原來請求攜帶的 Form Data 做了修改,然後點選下方的 Execute 按鈕即可執行修改後的請求,如圖 11-10 所示。
圖 11-10 編輯頁面
可以發現左側列表再次出現了介面的請求結果,內容仍然不變,如圖 11-11 所示。
圖 11-11 重新請求後結果
刪除 Form 表單中的 partner 欄位並沒有帶來什麼影響,所以這個欄位是無關緊要的。
有了這個功能,我們就可以方便地使用 Charles 來做除錯,可以通過修改引數、介面等來測試不同請求的響應狀態,就可以知道哪些引數是必要的哪些是不必要的,以及引數分別有什麼規律,最後得到一個最簡單的介面和引數形式以供程式模擬呼叫使用。
- 結語
以上內容便是通過 Charles 抓包分析 App 請求的過程。通過 Charles,我們成功抓取 App 中流經的網路資料包,捕獲原始的資料,還可以修改原始請求和重新發起修改後的請求進行介面測試。
知道了請求和響應的具體資訊,如果我們可以分析得到請求的 URL 和引數的規律,直接用程式模擬即可批量抓取,這當然最好不過了。
但是隨著技術的發展,App 介面往往會帶有金鑰,我們並不能直接找到這些規律,那麼怎麼辦呢?接下來,我們將瞭解利用 Charles 和 mitmdump 直接對接 Python 指令碼實時處理抓取到的 Response 的過程。
相關文章
- python3網路爬蟲開發實戰_Python3 爬蟲實戰Python爬蟲
- [Python3網路爬蟲開發實戰] --Splash的使用Python爬蟲
- Python3網路爬蟲開發實戰Python爬蟲
- python3網路爬蟲開發實戰_Python 3開發網路爬蟲(一)Python爬蟲
- 《Python3網路爬蟲開發實戰》教程||爬蟲教程Python爬蟲
- 《python3網路爬蟲開發實戰》--pyspiderPython爬蟲IDE
- python3網路爬蟲開發實戰pdfPython爬蟲
- [Python3網路爬蟲開發實戰] 分散式爬蟲原理Python爬蟲分散式
- 《Python3網路爬蟲開發實戰》開源啦!Python爬蟲
- 《Python3網路爬蟲開發實戰程式碼》基本庫使用Python爬蟲
- Python3網路爬蟲開發實戰——第3章 基本庫的使用Python爬蟲
- 【Python3網路爬蟲開發實戰】4-解析庫的使用-1 使用XPathPython爬蟲
- 【Python3網路爬蟲開發實戰】4-解析庫的使用-3 使用pyqueryPython爬蟲
- 《Python3 網路爬蟲開發實戰》—學習筆記Python爬蟲筆記
- Python3網路爬蟲開發實戰(第二版)Python爬蟲
- 【Python3網路爬蟲開發實戰】4-解析庫的使用-2 使用Beautiful SoupPython爬蟲
- 我的爬蟲入門書 —— 《Python3網路爬蟲開發實戰(第二版)》爬蟲Python
- Python3網路爬蟲開發實戰——第1章 開發環境Python爬蟲開發環境
- 面前最全《崔慶才python3網路爬蟲開發實戰》Python爬蟲
- python3 網路爬蟲開發實戰 貓眼top100Python爬蟲
- [Python3網路爬蟲開發實戰] 2-爬蟲基礎 2-網頁基礎Python爬蟲網頁
- 讀書筆記:《Python3網路爬蟲開發實戰》——第2章:爬蟲基礎筆記Python爬蟲
- Python 3網路爬蟲開發實戰Python爬蟲
- 《Python3網路爬蟲開發實戰》抽獎贈書活動Python爬蟲
- python3網路爬蟲開發實戰【高清掃描帶目錄】Python爬蟲
- 【閱讀筆記】《Python3網路爬蟲開發實戰》PDF文件筆記Python爬蟲
- 【Python3網路爬蟲開發實戰】3-基本庫的使用-3正規表示式Python爬蟲
- [Python3網路爬蟲開發實戰] 7-動態渲染頁面爬取-1-Selenium的使用Python爬蟲
- [Python3網路爬蟲開發實戰] 2-爬蟲基礎 5-代理的基本原理Python爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- 《網路爬蟲開發實戰案例》筆記爬蟲筆記
- [Python3網路爬蟲開發實戰] 2-爬蟲基礎 1-HTTP基本原理Python爬蟲HTTP
- Python3網路爬蟲快速入門實戰解析Python爬蟲
- 【Python3網路爬蟲開發實戰】3-基本庫的使用 1.1-傳送請求Python爬蟲
- 【Python3網路爬蟲開發實戰】3.4-抓取貓眼電影排行Python爬蟲
- python3網路爬蟲開發實戰-線上版-可複製貼上Python爬蟲
- 2019最新崔慶才python3網路爬蟲開發專案實戰(完整)Python爬蟲
- python3網路爬蟲開發實戰(配置踩坑及學習備忘)Python爬蟲