1. 程式人生 > >charles抓取Android包注意事項

charles抓取Android包注意事項

記錄在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中的包。