charles抓取Android包注意事項
阿新 • • 發佈:2019-02-18
記錄在win10系統上charles正常使用之前遇到的問題,以便日後忘記。
操作步驟:
前提:保證手機和電腦在同一區域網下。
1. 下載安裝charles,地址:https://www.charlesproxy.com/download/
2. 配置charles
點選 Proxy -> Proxy Settings 設定其埠號,預設埠號為8888,並將Port下面的"Enable transparent HTTP proxying"勾上,如下圖。此處埠號為8887,是由於除錯時發現埠號8888已被其它程式佔用。
圖1 charles port
3. 檢視電腦IP
電腦左上角輸入cmd,調出命令提示符,然後輸入config. 檢視電腦IP。如下圖。
圖2 電腦IP
4. 配置手機
設定手機wifi的代理。代理選擇"手動", 伺服器主機名填寫上面的電腦IP(圖2),伺服器埠號填寫charles的Port埠號(圖1),然後儲存。此時,charles會彈出"allow"(但我沒遇到過),所以我需要手動在charles中將我的手機IP加進去。
點選charles工具的 "Proxy" -> "Allow Control Settings" ,加入允許的IP範圍。如下圖。說明: 192.168.0.0/24是允許所有的192.168.0.*的IP連線。
圖3 Allow Control Settings
測試結果:
成功: 可以在charles抓到Android手機上的包。
失敗:
1. 任何包(包括Android手機和電腦)都抓不到。
解決辦法: 點選win10右下角"網路設定" -> "代理" -> "手動設定代理",檢視"使用代理伺服器"按鈕是否有正常開啟,地址是否是127.0.0.1,埠號是否和charles工具中的Port一致。
2. charles可以抓到電腦上面的包,但抓不到手機上面的包,並且手機無法上網。(自己碰到了此類問題,費了一些時間找原因)
查詢原因:手機和電腦互ping,看是否能夠ping通。輸入cmd,開啟命令提示符。
1) 輸入 ping 192.168.1.101 (比如192.168.1.101是手機IP),發現電腦可以正常ping通手機。
2) 輸入adb shell, 進入到Android手機終端,輸入 ping 192.168.1.111 (假設192.168.1.111是電腦IP),發現無法ping通。
如果手機無法ping通電腦IP,那我就去檢視電腦防火牆是否有沒關閉。之前其實我是關閉了win10的windows防火牆的,後來還是無法ping通,才發現win10系統還有一個叫"邁克菲防火牆",將兩個防火牆都關閉就好了。然後測試發現手機和電腦可以互ping。此時Android手機可以訪問網路,並且charles可以抓到android中的包。
查詢原因:手機和電腦互ping,看是否能夠ping通。輸入cmd,開啟命令提示符。
1) 輸入 ping 192.168.1.101 (比如192.168.1.101是手機IP),發現電腦可以正常ping通手機。
2) 輸入adb shell, 進入到Android手機終端,輸入 ping 192.168.1.111 (假設192.168.1.111是電腦IP),發現無法ping通。
如果手機無法ping通電腦IP,那我就去檢視電腦防火牆是否有沒關閉。之前其實我是關閉了win10的windows防火牆的,後來還是無法ping通,才發現win10系統還有一個叫"邁克菲防火牆",將兩個防火牆都關閉就好了。然後測試發現手機和電腦可以互ping。此時Android手機可以訪問網路,並且charles可以抓到android中的包。