標籤:tin 認證 服務 還需 socks 9.png http 監聽 電腦
一直沒有寫一篇關於charles的文章來記錄,但是發現偶爾還是會忘記,所以還是記一下,查起來比較方便。
首先在安裝了charles之後預設的本地Proxy 位址是 127.0.0.1:8888這個地址。如果希望代理本機電腦的http流量或者socks流量,可以將Proxy 位址設定到127.0.0.1:8888這個地址上,就能在charles上查看到現在正在使用的流量了。
其實我平時常用的代理並不是代理pc上的流量,因為現在大部分現代瀏覽器都內建可以看包的功能,所以更多的時候,我可能需要使用它來代理我手機上的流量,特別是在測試介面和api的時候。
首先就是最常用的代理功能,將到達原生流量映射到其他地址上面去。
Tool->Map-remote-setting
出現這個介面
點擊add增加映射設定
這裡就是填寫從什麼地址映射到什麼地址。
例如我們要去往百度代理到我們自己的地址上來。
上面就可以設定百度的host www.baidu.com 然後port80 或者8080
下面設定上我們自己去往的地址 比如 zhizhizhi.me 然後設定連接埠即可。
如果要讓charles能看到https包裡面的內容,首先我們需要在自己的電腦中安裝charles的根憑證,並且對其進行信任。
Help->SSLProxying-> Install Charles Root Certificate。 對其進行安裝並且對其進行信任。
然後啟用charles的SSL代理
Proxy-> SSL Proxy Setting
勾選 Enable SSL Proxying
並且設定由伺服器所屬根憑證簽發的用戶端認證,這裡我使用的一個p12格式的認證。 然後指定監聽的代理host
至此,charles就可以代理你對目標伺服器的https請求了。
如果你需要charles代理你的手機訪問目標地址的https ,還需要在手機上安裝charles認證,方法也很簡單。
Help->SSL Proxying-> Install Charles Root Certificate Devices Or Remote Browser 這個時候會給你一個安裝認證的內網地址
訪問該地址即可下載安裝charles認證。
這裡代理SSL流量的原理也很簡單:
為什麼要裝charles根憑證:
因為charles最終代理我們的ssl流量是要發回給我們的,而這個過程是我們和本地charles代理的ssl通訊,如果我們沒有charles簽發的根憑證,那麼我們將無法信任charles轉寄的任何ssl流量。
另外由於我們在charles裡面設定了和伺服器對應的用戶端認證PKCS12格式的包檔案(pkcs12中包含被根憑證簽出來的公私密金鑰),所以我們可以解密由指定host伺服器發送過來的加密的資料,從而像抓包http包一樣看到這些資料包裡面的資料。charles負責代替我們和該伺服器發送接收加密資料,而我們還需要和chales本身再進行一次通訊,這樣說 應該就比較明確了。
Preference:
https://en.wikipedia.org/wiki/PKCS_12 PKCS12wiki
charles代理以及關於其抓取https資訊的操作