日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

最全的 Charles 抓包工具详解「建议收藏」

發布時間:2023/12/15 综合教程 42 生活家
生活随笔 收集整理的這篇文章主要介紹了 最全的 Charles 抓包工具详解「建议收藏」 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0. 前言

不管是移動開發者還是測試者,于抓包工具對于我們的工作都是非常有幫助的,而Charles是一款非常優秀的抓包工具

Charles不僅可以幫助我們抓取服務器返回的數據,還可以修改請求參數,修改響應體

基本上HTTP能修改的東西,Charles都能幫我們修改

所以當我們接口在Mock階段時我們可以通過Charles設置我們本地的JSON數據,加速我們的開發

而且還能模擬弱網環境,幫助我們調試網絡極端情況的用戶體驗,下面我們就一起來體驗下Charles的功能吧

本機安裝的 Charles 版本是 Windows 平臺下的 Charles 4.0.2

本文主要內容:

  • Charles 抓包 HTTP
  • Charles 抓包 HTTPS
  • Android7.0及以上系統中HTTPS抓包
  • 使用Charles模擬慢網速
  • Breakpoints斷點功能
  • Compose功能修改Request
  • Rewrite重寫功能
  • Map映射功能
  • Repeat 重試功能
  • 實戰手機天貓抓包(Charles + Drony)

1. Charles 抓包 HTTP

首先到 Charles 官網去下載軟件,安裝非常簡單,一直下一步就可以了

1.1 初始設置

Charles 設置

開啟 start recording 按鈕,如下圖所示:

查看 Charles 代理監聽的端口號,Proxy -> Proxy Settings , 我機器上的是 8888 端口, 如下圖所示:

1.2 手機設置

以Android手機為例,進入我們已經連接的WIFI,設置該WIFI:

設置好之后,Charles 會彈出一個框,提示是否允許手機進行連接,接受即可,如下圖所示:

如果你不小心點擊了 拒絕(Deny),也可以在這里: Proxy -> Access Control Settings 進行添加你的手機IP

通過以上的設置,Charles就可以抓HTTP請求了

2. Charles 抓包 HTTPS

經過上面的設置之后,我們就可以對手機的網絡請求進行抓包了,但是如果請求的是 HTTPS,抓到的包無法查看,需要電腦和手機安裝證書 (Help -> SSL Proxying)

電腦上安裝證書很簡單,直接下一步就可以了,不用任何設置。這里講下手機上安裝證書,因為手機上安裝證書可能會遇到問題:

點擊上圖的 Install Charles Root Certificate on a Mobile Device or Remote Browser , 會給我們安裝提示:


上面的提示框意思是說,在手機設置好代理后,在手機瀏覽器中訪問 chls.pro/ssl 下載證書

這里需要注意的是,有的手機可能會提示:無法安裝該證書,因為無法讀取證書文件

解決方法:不要使用系統的瀏覽器下載,使用第三方瀏覽器下載 UC 或者 Edge 瀏覽器

下載完成后,證書文件名可能是:charles-proxy-ssl-proxying-certificate.pem

證書下載完成后,在手機上安裝該證書,流程如下(小米手機為例):

打開手機 設置 -> 更多設置 -> 系統安全 -> 從SD卡安裝 , 然后輸入你自定義的證書名稱即可:

點擊 “確定” 按鈕,有些手機可能需要輸入密碼憑證,輸入你的手機密碼即可。

電腦和手機上證書都安裝完畢后,在Charles上開啟 SSL Proxy (Proxy -> SSL Proxying Settings )

經過以上步驟后,你就可以對 HTTPS 請求抓包了

3. Android7.0及以上系統中HTTPS抓包

在Android7.0及以上系統中,HTTPS抓包可能會失敗。因為處于安全的考慮,Android7.0及以上,系統默認只會信任系統(System)級別的證書
不再信任用戶添加的證書(User),也就是說上面我們在設備上安裝的 Charles 根證書,系統不再信任。

為了安全起見,一般我們只在 Debug 版本允許抓包,正式版本不應該允許抓包。可以 AndroidManifest.xml 文件中配置安全策略:

<application android:networkSecurityConfig="@xml/network_security_config" >
</application>

network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <!-- Trust user added CAs while debuggable only -->
            <certificates src="system" />
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
    <domain-config cleartextTrafficPermitted="true">
        <domain includeSubdomains="true">182.254.116.117</domain>
        <domain includeSubdomains="true">pingma.qq.com</domain>
    </domain-config>
</network-security-config>

然后在res目錄下新建xml文件夾,然后在xml文件夾中新建 network_security_config.xml

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="system" />
			<!-- debug版本情況下,信任用戶添加的證書 -->
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
    <base-config cleartextTrafficPermitted="true">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

更多的安全策略配置,可以參考官方文檔:

https://developer.android.com/training/articles/security-config.html

4. 使用Charles模擬慢網速

可以在 Proxy -> Throttle Settings 設置網絡速度,還可以自定義帶寬(Bandwidth):

5. Breakpoints斷點功能

可以使用Charles在某個網絡請求的時候進行斷點, 這樣可以精確的定位某個網絡請求:

除了上面的手動添加需要斷點的URL,如果這個URL已經請求過,可以對該請求單擊右鍵,然后點擊 Breakpoints

通過斷點功能,可以修改 Request 參數 和 Response 返回值。需要注意的是修改完 Request 參數需要點擊 Excute 按鈕,請求成功后,才能修改 Response 返回值

6. Compose功能修改Request

還可以通過 Charles 修改請求的 URL、Method、Header、Parameter等.

修改方式:對請求單擊右鍵,然后點擊 compose 按鈕

7. Rewrite重寫功能

Rewrite重寫功能是全局設置的,并不是對某個請求單擊右鍵的方式臨時操作下, Rewrite可以:

  • 修改請求頭(Add/Modify/Remove Header)
  • 修改Host/Path/URL
  • 修改請求參數(Add/Modify/Remove Query-Parameter)
  • 修改響應狀態(Response Status)
  • 修改Body

Rewrite設置路徑: Tools -> Rewrite

Rewrite重寫顧名思義就是替換,所以是基于某個固定的值替換成某個值,添加規則的時候,支持正則表達式:

8. Map映射功能

Map映射包含兩種一種是 Map Remote,另一種是 Map Local

設置路徑:Tools -> Map Local/Remote

Map Remote 顧名思義就是把匹配的請求映射到另一個遠程URL:

Map Local 是將匹配的請求映射到本地文件:

9. Repeat 重試功能

Repeat 功能有兩種:一種是簡單的重試一次(Repeat);還有一種 Repeat advances 可以設置重試的次數和并發的數量

重試一次主要用于是和服務端聯調,如果接口有問題,服務端開發人員可能需要在后臺代碼打斷點的方式來排查問題

這個時候,我們不需要在app中重新重復上次的請求(可能需要填寫字段比較多或者界面鏈路比較長),只需要在Charles中對該請求單擊右鍵,然后 Repeat 即可

Repeat advances 可以來對服務器進行壓力測試,或者批量提交寫數據等,如:

10. 實戰手機天貓抓包

通過上面的介紹我們可以抓包 HTTPS 請求的,但是打開手機天貓進入首頁發現 Charles 上并沒有圖片的請求URL,說明 Charles 并沒有抓到手機天貓的下載網絡圖片的請求

這個時候需要設置手機代理,下載 Drony App,然后滑到 設置 頁面

點擊選擇網絡,然后選擇你已經連上的 WIFI,然后里面有 3 個地方需要設置:

設置完 Drony App 后,還需要設置 手機系統里 WIFI 選項,以前我們是設置了 Charles 局域網的 IP 和 Charles 監聽的端口 現在要把IP改成 Drony所在的局域網 IP,因為 Drony 就安裝在手機里面,所以可以把 IP 改成 127.0.0.1,端口改成 Drony 監聽的端口 8020

最后我們成功抓取了手機天貓的圖片了,如果圖片無法展示,可以把 _.heic 去掉,只保留 .jpg 后綴,然后復制到瀏覽器中展示


本文涉及到的代碼在我的 AndroidAll GitHub 倉庫中。該倉庫除了安卓開發工具介紹 ,還有Android 程序員需要掌握的技術棧,如:程序架構、設計模式、性能優化、數據結構算法、Kotlin、Flutter、NDK、Router、RxJava、Glide、LeakCanary、Dagger2、Retrofit、OkHttp、ButterKnife、Router 等等,持續更新,歡迎 star。

總結

以上是生活随笔為你收集整理的最全的 Charles 抓包工具详解「建议收藏」的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。