背景:
移動開發的朋友經常會需要對手機網頁進行抓包,查看移動端app下webview請求的接口,以及mock數據測試等。
我這里使用了charles,我是windows系統,也很方便使用。
安裝:
安裝charles,charles最好是安裝官方網站的,其他網站有破解中文版的安裝后有時候會有一些功能異常。
連接代理:
1、電腦端安裝證書:在charles軟件中點幫助——ssl代理——安裝charles root證書,根據提示一步一步安裝證書;
2、手機連代理:在手機保證和電腦連接同一個wifi的前提下,開啟手機代理,輸入服務器地址:例如 :192.168.x.xxx,端口號為:8888,(端口號可以在charles里自己配置,默認8888)
有時候新手機連接代理,charles會提示是否允許,點擊allow;
3、手機裝證書:點擊幫助——ssl代理——在移動設備或遠程瀏覽器上安裝charles root證書,看到如下界面:
如果沒提示需要在手機端安裝證書后設置一下(設置方法:ios : 設置——通用——關於本機——證書信任設置——找到證書——開啟信任開關);
瀏覽器輸入:chls.pro/ssl,打開根據提示安裝證書,
4、手機證書信任設置:ios 手機在通用——關於本機——證書信任設置——打開后找到剛剛安裝的證書,選擇打開,安卓手機一般在輔助功能里可以找到(這里證書必須要安裝,否則不能抓包https請求);
5、抓包:此時就可以在手機端訪問app頁面了,charles上會看到每個訪問請求的接口,返回的數據等。
數據劫持:
本地映射
本地映射主要讓接口請求到本地json文件:
手機點擊app頁面,可以看到charles請求接口,選擇charles左側請求列表中最內層的接口,打開查看返回的數據,已經得到請求的數據,右鍵——本地映射,打開后已默認填好端口協議主機號,我們把查詢(即參數)刪除,也可以選擇填入需要的參數,參數格式:*參數a=111*,映射到本地路徑——選擇——選擇本地mock.json文件位置,保存,再次請求的時候,可以看到已經直接返回了我們的mock數據。
也可以在 tools --->Map Local 里設置,可同時設置多個
remote
remote主要讓對應的請求地址映射到另一個請求地址上(比如線上地址映射到測試地址上)
tools --->Map Remote,設置的時候注意,http 服務器端口為 80 ,https 服務器端口號為 443。
rewrite
配置rewrite重寫,適用於直接將線上offer劫持,進行錯誤復現和調試。
工具——重寫——啟用重寫——添加——起名稱——添加重寫規則——類型選擇正文——往哪里選擇響應——
匹配值:比如:“url”
全部替換:"值:
也可以把線上的url放入另一個自定義字段中,進行統一替換,比如替換值:"url:"新url","url_old:"
【注意】
有時候charles都配置好了,但是抓到的接口數據都是unknow,在charles——代理——訪問控制設置(Access control settings)——添加0.0.0.0/0,就可以了。