Charles抓包軟件使用簡介

Charles簡介:

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

破解:

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

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

1.png
2.png

基本使用:

一. 抓取 HTTP 請求

  • Mac上抓取

    1. 將 Charles 設置成系統代理

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

    2017-03-21 下午4.00.55.png
    1. 設置支持 http 請求抓取

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

      2017-03-21 下午4.06.47.png
      2017-03-21 下午4.06.52.png

    2. 發起HTTP請求

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

      3333.png

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

  • 手機上抓取

    1. 找到Mac的IP地址

      系統偏好設置->網絡 即可找到當前的IP地址:
      BEC42872-FAD9-4471-A84A-C3FD1DE31107.png
      5854198A-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
    1. 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
    1. 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.lxweimin.com/p/4a6eb5aad398

總結:
還有 緩存功能、設置黑名單 等等,在此就不再寫了,都還是很簡單的;還有待研究的就是 socket 請求的抓取!!!
至此:結束2天的Charles學習

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內容