這篇文章主要介紹Python3爬蟲利器Charles的使用方法是什么,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
Charles 的使用
Charles 是一個網絡抓包工具,我們可以用它來做 App 的抓包分析,得到 App 運行過程中發生的所有網絡請求和響應內容,這就和 Web 端瀏覽器的開發者工具 Network 部分看到的結果一致。
相比 Fiddler 來說,Charles 的功能更強大,而且跨平臺支持更好。所以我們選用 Charles 作為主要的移動端抓包工具,用于分析移動 App 的數據包,輔助完成 App 數據抓取工作。
1. 本節目標
本節我們以京東 App 為例,通過 Charles 抓取 App 運行過程中的網絡數據包,然后查看具體的 Request 和 Response 內容,以此來了解 Charles 的用法。
2. 準備工作
請確保已經正確安裝 Charles 并開啟了代理服務,手機和 Charles 處于同一個局域網下,Charles 代理和 CharlesCA 證書設置好,另外需要開啟 SSL 監聽,具體的配置可以參考第 1 章的說明。
3. 原理
首先 Charles 運行在自己的 PC 上,Charles 運行的時候會在 PC 的 8888 端口開啟一個代理服務,這個服務實際上是一個 HTTP/HTTPS 的代理。
確保手機和 PC 在同一個局域網內,我們可以使用手機模擬器通過虛擬網絡連接,也可以使用手機真機和 PC 通過無線網絡連接。
設置手機代理為 Charles 的代理地址,這樣手機訪問互聯網的數據包就會流經 Charles,Charles 再轉發這些數據包到真實的服務器,服務器返回的數據包再由 Charles 轉發回手機,Charles 就起到中間人的作用,所有流量包都可以捕捉到,因此所有 HTTP 請求和響應都可以捕獲到。同時 Charles 還有權力對請求和響應進行修改。
4. 抓包
初始狀態下 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 數據結果
這時可以確定,此請求對應的接口就是獲取商品評論的接口。這樣我們就成功捕獲到了在上拉刷新的過程中發生的請求和響應內容。
5. 分析
現在分析一下這個請求和響應的詳細信息。首先可以回到 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 和參數的規律,直接用程序模擬即可批量抓取。
6. 重發
Charles 還有一個強大功能,它可以將捕獲到的請求加以修改并發送修改后的請求。點擊上方的修改按鈕,左側列表就多了一個以編輯圖標為開頭的鏈接,這就代表此鏈接對應的請求正在被我們修改,如圖 11-9 所示。
圖 11-9 編輯頁面
我們可以將 Form 中的某個字段移除,比如這里將 partner 字段移除,然后點擊 Remove。這時我們已經對原來請求攜帶的 Form Data 做了修改,然后點擊下方的 Execute 按鈕即可執行修改后的請求,如圖 11-10 所示。
圖 11-10 編輯頁面
可以發現左側列表再次出現了接口的請求結果,內容仍然不變,如圖 11-11 所示。
圖 11-11 重新請求后結果
刪除 Form 表單中的 partner 字段并沒有帶來什么影響,所以這個字段是無關緊要的。
有了這個功能,我們就可以方便地使用 Charles 來做調試,可以通過修改參數、接口等來測試不同請求的響應狀態,就可以知道哪些參數是必要的哪些是不必要的,以及參數分別有什么規律,最后得到一個最簡單的接口和參數形式以供程序模擬調用使用。
以上是Python3爬蟲利器Charles的使用方法是什么的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。