Charles抓包軟件簡介


Charles簡介:

Charles是一款抓包神器,因為他是基於 java 開發的,所以跨平台,Mac、Linux、Window下都是可以使用的,確保安裝之前已經安裝了JDK。Charles官網地址:https://www.charlesproxy.com

破解:

因為這款軟件是收費的,只有30天的免費使用期限,不過不付費用戶仍然可以繼續使用,只是每次使用時間不能超過30分鍾,且啟動會有10秒的延時,但是還是可以湊合使用的。當然你也可以參照下面的方法進行破解,可能是新版本的原因,我親自測試多次未成功,期待新的破解方式。

以下附上之前版本的破解方法:(要下載對應版本的 .jar 文件,網上百度下即可)

20141130195421214.png

20141130195510843.png

基本使用:

一. 抓取 HTTP 請求

  • Mac上抓取

    1. 將 Charles 設置成系統代理

      打開Charles之后。默認就對系統設置了代理,點擊Charles菜單欄,選中 Proxy 菜單,勾選上 macOS Proxy ,已經勾選就不再設置,如下圖所示:

      屏幕快照 2017-03-21 下午4.00.55.png

    2. 設置支持 http 請求抓取

      在Proxy 菜單,選中Proxy Settings ,打開對話框,設置端口號(默認是8888,也可以自定義),並選中 Enable transparent Http proxying 選項,如下圖所示:

      屏幕快照 2017-03-21 下午4.06.47.png屏幕快照 2017-03-21 下午4.06.52.png

    3. 發起HTTP請求

      此時就能在Charles中看見效果:
      8BD82F6A-3C1A-4B6F-A270-3FEA8F69E342.png

      3333.png

      Filter 可以對請求進行過濾,並且支持通配符,下面會講到

  • 手機上抓取

    1. 找到Mac的IP地址

      系統偏好設置->網絡 即可找到當前的IP地址:
      BEC42872-FAD9-4471-A84A-C3FD1DE31107.png5854198A-F3D2-4BEB-8F70-60AC2822E46A.png
      或者使用Charles,選中Charles,在“Help”菜單中選擇“Local IP Addess”,即可:屏幕快照 2017-03-21 下午4.32.09.png屏幕快照 2017-03-21 下午4.32.18.png

    2. 在iPhone中設置

      在你的iPhone->設置->無線局域網,選中當前使用的WIFI,下拉至 HTTP代理處,選擇手動,服務器行輸入Mac上的IP地址,端口填8888即可,具體如下:

      97929803-C237-4AEC-BA9C-A199020F5D77.png

    3. 打開iPhone中的APP(有網絡請求的),這時會看見Charles中已經攔截到數據了

      屏幕快照 2017-03-21 下午5.10.28.png

      注意:

      當我們不抓包的時候,會將Charles關閉,這時候iPhone設備是訪問不到網絡的,因為設置了代理(就是Charles),這時候要將iPhone的代理關閉

二. 抓取 HTTPS 請求

Charles不僅能夠抓取http協議的包,也能抓取https協議的包,但是由於https是經過加密的,因為抓取的包中的內容是以密文方式展現的,通過配置Charles的SSL可以方便的以明文查看https協議傳輸的內容

  • 安裝證書

    1. Mac上安裝證書

      選中Charles,在“Help”菜單中選擇—>“SSL Proxying”—>“Install Charles Root Certificate”會自動打開鑰匙串訪問窗口:676E2647-22D4-4C21-AEC3-D7DC9964242B.png

      屏幕快照 2017-03-21 下午5.14.01.png

      屏幕快照 2017-03-21 下午5.15.01.png

      屏幕快照 2017-03-21 下午5.15.15.png

      屏幕快照 2017-03-21 下午5.15.39.png

      0FD746DA-84BB-460E-89FB-B5BEDD83B491.png

    2. iPhone上安裝證書

      iPhone上也要安裝SSL證書,可以通過鏈接https://www.charlesproxy.com/documentation/additional/legacy-ssl-proxying/ 下載傳到iPhone上,或者使用iPhone的Safari直接訪問鏈接,下載對應的證書,然后安裝即可。

      點擊紅色部分下載:

      F2D9E8E6-6833-493C-947F-74983CBA4DB1.png

      19C31D21422B0AF12F11269FF3C9F744.png

      2139C62B3ED8223E2B7DBFB8E8AD980B.png

      06F7E9DCA3434F51B3D6B1E7ED785D5B.png

      最后點擊完成即可!

  • 配置SSL

    選中Charles,在“Proxy”菜單中選擇—>“SSL Proxying Settings ”即可彈出頁面:

    屏幕快照 2017-03-21 下午5.37.30.png
    添加要訪問的地址的域名,默認https端口號為:443,並勾選上“Enable SSL Proxying”選項:

    屏幕快照 2017-03-21 下午5.19.07.png

    也可以在host中輸入: " * " 匹配所有,默認https端口號為:443, 如下所示:

    1479259184165591.jpg
    1479259195476646.jpg

    然后就能以明文方式查看https傳輸的詳情了:

    D539596D-83E8-4C3A-B833-B987415738FB.png

過濾網絡請求

  • 通過Filter過濾

    Filter 欄中輸入想要過濾出來的關鍵字,比如只想查看包含關鍵字:baidu 的請求,只需要在 Filter 欄中輸入關鍵字:baidu 即可;當然也支持通配符,比如我們想要查看包含關鍵字:itunes,並且以 .com 結尾的請求,只需要在 Filter 欄中輸入 itunes.*.com 即可,如下圖所示:

    FB6F6B0C-A1A0-4CF1-B1A1-0FBD1461CFA4.png

  • 通過Include過濾

    可以通過 “Proxy”->“Recording Settings”,選中 Include 欄,添加一項, 設置需要抓取的包,比如我只想抓取 www.baidu.com 域名下的請求,可以按照如下設置:

    屏幕快照 2017-03-22 上午10.47.14.png

    就能只去抓取符合規則的目標請求,當前也可以在 Exclude 中設置排除的請求。

  • 總結

    FilterInclude 的區別就是: Include 是只抓取符合要求的請求,不符合的請求就不再抓取,而 Filter 只是將先要抓取的請求篩選出來,但是還是去抓取了所有的請求;綜合兩者我們可以按照自己的需求進行設置如何篩選

模擬慢速網絡

有時候開發中需要測試用戶在網絡情況比較的差的時候應用的表現情況,可以使用Charles限流設置,"Proxy" -> "Thorttle Settings" 中設置如下:

C14063DA-3E65-49CA-8347-8EB78B44D8AA.png

或者只針對某些域名進行設置,如下針對特定Hosts的設置:

屏幕快照 2017-03-22 上午10.55.51.png

重放和編輯

點擊一個請求,右擊彈出菜單欄,我們可以進行各種操作,比如復制、保存、編輯、重復請求等等,我們可以編輯修改任意請求信息,比如URL地址、端口、參數等等,點擊“Execute”按鈕即可發送修改后的請求:

屏幕快照 2017-03-22 上午11.01.05.png

FFEC5B55-C2CD-48A2-8BB7-EDAF8EB96428.png

通過 Repeat Advanced 高級重放功能可以作為簡單的性能測試,可以設置重復次數、並發數以及延時等:
01E74D2D-A14F-4DBA-AEF1-21D773DF6B01.png

其他功能(待完善)

  • Breakpoints - 斷點功能

    有時候對於一些特殊請求在發往服務器之前想要修改一些參數,或者在服務器響應完成之后修改響應信息,此時可以使用Charles的斷點功能,類似Xcode中的斷點調試,設置斷點之后,當有網絡請求的時候Charles會自動跳轉到斷點處,此時我們就能進行相關的修改,斷點設置步驟:"Proxy" -> "Breakpoints Settings",彈出設置欄,選中 “Enable Breakpoints”,添加需要調試的請求即可調試:

    BB0DB028-3C31-4E24-AD99-E022BDCB38C7.png

  • Rewrite功能

    Rewrite功能適合對網絡請求進行一些正則替換。
    通過“Tools”->"Rewrite ",進入設置頁面,
    比如有這樣一個需求,我們訪問接口:http://httpbin.org/get,將返回的數據參數名“X-Request-Id”,修改成“X_id”,具體操作如下:
    原始的數據結構如圖:
    8CFD2F63-F030-4309-9019-383B2A0C1334.png

    設置Rewrite:
    039D6FDC-16D6-4E16-BCB0-C168416CC645.png
    63F2D39D-5C92-4EE4-875A-D976AE78075C.png

    設置之后重新請求接口,查看截取的請求結果,發現已經修改成了“X_id”,效果如下:

    18F07852-8B99-44B9-9EF8-4496942D13A9.png

  • DNS Spoofing Settings

    DNS欺騙,就是把域名解析到一個假的IP上。一般的開發流程中,在上線之前都需要在測試環境中先行進行驗證,而此時手機客戶端請求的域名是不太容易改變的,可以通過設置 DNS 方式把域名轉發到測試機上,通過“Tools”->"DNS Spoofing",進入設置頁面
    比如要把所有 www.baidu.com 的域名轉到 test.com 的服務器上,可以設置如下:
    BA5435ED-5B57-4380-8B26-D9D436E99AE3.png

    F023784A-15E4-4399-AAB6-9295E7F9DACF.png
    此時再訪問百度,會發現訪問不了了!!

  • Map功能

    通過“Tools”-> “Map Remote” 或者 “Tools”-> “Map Local”,進入相應的頁面設置

    1. Map Remote

      作用:將指定的網絡請求重定向到另一個網址。
      應用:當我們請求某個接口 A ,假設 A 的地址為:http://abc.com/user?user_id=100, 但是由於后台還沒有寫好,這時候為了調試,我們可以將請求臨時轉到地址 B 上面;假設 B 的地址為 : http://10.1.1.111/user.json
      具體設置如下圖:
      BDFE0957-D197-45F8-B617-68EF6CF6353C.png

      497B5FFA-8B14-4BCF-8759-B3D187A2E8B2.png

    2. Map Local

      作用:將指定的網絡請求重定向到本地文件。
      應用:當我們把一個請求返回的數據直接映射到本地,例如上面說的把請求 A 地址返回的數據內容映射到本地文件** user.json** 內,如下圖所示:

      70C7371E-3F78-42FA-924B-B3DF3CA6B84C.png
      908EE54D-4A73-4D49-9F96-2D7E300EF4F5.png

    Map功能適用於長期的將某些請求重定向到另一個網絡地址或者本地文件。

參考鏈接:

http://tech.365rili.com/?p=57

http://blog.devtang.com/2013/12/11/network-tool-charles-intr/

http://blog.csdn.net/holemole/article/details/51383513

http://www.cocoachina.com/ios/20161116/18079.html

http://blog.csdn.net/jiangwei0910410003/article/details/41620363/

https://www.charlesproxy.com/download/

http://www.jianshu.com/p/4a6eb5aad398

總結:

還有 緩存功能、設置黑名單 等等,在此就不再寫了,都還是很簡單的;

還有待研究的就是 socket 請求的抓取!!!

至此:結束2天的Charles學習


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM