1. 程式人生 > 實用技巧 >Charles安裝配置詳解(windows10,最新Android/iOS配置)

Charles安裝配置詳解(windows10,最新Android/iOS配置)

之前做爬蟲一直用fiddler抓包,但最近一個專案需要抓取手機app裡的https的內容,用fiddler試了一下感覺不大友好,遂嘗試使用Charles工具,但這個工具主要用於macOS平臺,網上許多關於windows版本的配置教程都不能實際解決問題,幾經折騰才找到靠譜的教程解決了自己的問題,所以記錄一下.

首先是安裝及使用的教程:
https://www.axihe.com/charles/charles/windows-install.html

這個網站有非常詳細的關於Charles的安裝使用的教程,但是關於配置抓取手機app內容的部分不是很直觀詳細,於是我又找到了另一個詳細的教程.

以下為詳細步驟:

1.下載charles(下載連結

有條件的朋友儘量支援正版,要破解的則可以參照:Charles破解

下載後安裝,安裝完成後開啟,出現如下介面;

2、開始對 PC端的charles進行配置,點選proxy(代理),找到代理設定:

對代理埠進行進行配置,埠號預設8888,你可以自己修改,選中enable transparent http prxying,代表啟用http代理;

點選OK,完後配置。

如果你只想對pc端的資料互動進行抓取,那麼到這一步就行了

3、對移動端,手機app上面的資料進行抓取。

注意事項:手機與pc是否處於同一網路。

3.1、開始配置移

開啟手機的WIFI功能區,進入連結WIFI設定介面,點選高階設定,進入以下介面,or點選代理設定,進入代理設定介面。

代理伺服器主機名稱填寫你PC的IP地址,如果你不知道你PC的ip地址,可以在charles上檢視到

本地IP地址,點選local IP Address 後直接就能看到你的PC網路的IP地址。

埠填寫你在charles上設定的埠,如果你沒有修改埠,依然是8888,那麼直接填入8888;

點選完成or儲存,charles會給你一個提示框,是否允許連結手機網路請求;

如下:

點選允許,ALLOW.

如果把你點選了否認 Deny,那麼你關閉charles,再重新走一遍吧(哈哈哈哈O(∩_∩)O哈哈哈~);

Warning:如果沒有彈出提示框,那麼請檢查charles是否處於防火牆信任軟體序列裡,這個你可以在防火牆設定連看到.

將應用新增進入允許序列裡,在不關閉防火牆的情況下,可以抓到資料,如果依然沒有,那麼久關閉防火牆,再試一次;

現在,charles就可以抓取手機上的資料了,包括網頁、APP、及其他網路請求;甚至某些App網路安全做得不好,你都可以將你的賬戶和密碼在charles上訪問到。

Warning:這隻能對http協議的資料進行抓取.

4、對https的解析,之前我們抓取http協議資料的時候,會發現一個問題,就是隻要是https協議,那麼全部是上鎖了,並不能檢視到資料。

現在,我們來對https解鎖,因為https對證書加深了認證,所以我們要解鎖,就必須安裝charles的變色龍證書,依靠它,我們可以抓取到很多https裹挾的資料。

4.1、下載證書;點選charles上的help,

安裝PC端的證書,首先點選installcharlesroot certificate ,會對你進行提示安裝證書,點選確定安裝

--------

一定要加入 “受信任的根證書頒發機構”,不然後續https解析不了;點選確定,完成PC的安裝;

因為要抓取手機上的https網路請求資料,手機上也必須安裝證書;

首先點選 :

會出現獲取手機端認證證書網址

IOS手機(以iOS12.3.1為例):

1.在 Safari 中訪問chls.pro/ssl 就直接會下載該證書,但是自iOS10 以後的版本,下載的證書是預設不信任的,沒法使用,所以下載後,還需要配置

2.進入設定==>通用==>描述檔案與裝置管理==>安裝(需要輸入鎖屏密碼)

3.進入設定 ==>通用 ==>關於本機 ==> 證書信任設定 ==>啟用Charles Proxy CA 證書

4.在電腦上點選允許,至此,即可抓包iOS平臺的https連結了

參考資料:

https://blog.csdn.net/qq_40407699/article/details/80453803

Android手機:

進入該網址,會提示你下載證書,下載完成後自動安裝,名稱隨你自己定;這裡需要注意一下,很多手機必須要使用自帶的瀏覽器才能成功安裝該證書,至少華為和小米的是這樣.

如果不行,可以參考這篇文章:

https://blog.csdn.net/qq_28831197/article/details/81196571

完成安裝後

因為是https,我們還需要在charles上新增sslproxy服務

完成sslproxy設定,五部曲;

Host:填寫你要抓取API網址

如:

prot:一般填了host就填寫443,手機上不用修改。點選新增,就會對單獨的host進行資料解析;

如果host和port設定為*,則會解析抓取到的所有https請求;

配置後:

至此:關於charles的抓包和用於app代理的教程寫完了;

waning:如果你在資料抓取活動完成後,關閉了charles,不再進行資料測試,開啟瀏覽器,發現不能連線到網路,

那麼,首先你檢查你是否處於聯網狀態,

處於:進入網路設定:

關閉你的代理:

因為存在一種可能,就是你的charles已經關閉,但是你的代理行為沒有關閉,那麼就會造成連結不到遠端主機,也就是charles的埠;

安卓7.0以上的手機將Charles的證書預設設定為不信任,所以會導致部分app的資料抓取不到

解決方法:

1.我是開發者,我要抓自己app的包

官網解決方案:

https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/

實際就是修改專案裡的配置檔案,使其預設信任,可以參考以下文章:

https://blog.csdn.net/xiexiangyu92/article/details/78458676

但上面的方法,對專案的開發者來說可用,對搞爬蟲的來說,基本用不了,除非懂得Android開發,還會反編譯啥的,總之,很麻煩

2.研究別人的app

一. 反編譯

反編譯後用官方的方法繞過,至於反編譯的難度,這個不好說,有的app反破解做得好,會很難。方法還是說一下,使用apktool反編譯應用程式,完成該過程後,在resources目錄中建好網路安全配置檔案,設定成信任使用者證書。完成後,使用apktool重新編譯應用程式,並使用Java JDK提供的jarsigner工具對生成的APK檔案進行簽名。

二. 執行時hook

利用動態二進位制插樁技術,在程式執行時動態插入額外程式碼,改變安卓的網路安全配置行為。類似的hook軟體比如frida,在參考資料中有其使用方法, 可以自行查閱

三. 把charles證書裝成系統證書

該方法要先root手機,然後直接把證書新增為根證書

這大概是最一勞永逸的方法了,你不是隻信任系統證書,不信任使用者證書嗎?那我就把charles證書裝成系統證書,就這麼簡單粗暴!然而雖然簡單粗暴,但方法依然很複雜,你是不是以為root完,把證書往系統證書目錄一拷貝就行了?行是行,但是不妥,因為系統證書在system目錄,這表示你得將system目錄設為可寫的,但這個方法實在太粗暴了,以至於安卓的反root演算法很容易就檢測出來,然後你的手機從此以後就各種么蛾子了,什麼app啟動不了啊七七八八的事。

這裡還有一種不需要root的方法:

解鎖手機 Bootloader
刷入第三方 Recovery(例如 TWRP)
下載官方Magisk包,然後通過第三方 Recovery 刷入
下載AlwaysTrustUserCerts.zip(這是一個Magisk模組)
通過Magisk安裝上面這個模組
正常途徑安裝好charles證書(這時候安裝,charles證書還在使用者證書下)
重啟
你會發現charles證書已經自動變成了系統證書
可以看到,抓Android7.0以上手機的https包是比較複雜的,最簡便的方法還是使用iphone

以上就是所有配置Charles抓包的相關內容,希望能夠對大家有所幫助

即使按照以上方法配置了證書資訊,有些app還是不能抓包,這是因為部分app使用了SSL Pinning技術,這種情況的解決方式在我的另一篇部落格裡記錄:

手機app抓包https請求資訊,解決SSL Pinning驗證

參考資料:

https://www.jianshu.com/p/393f5e51716e

https://github.com/NVISO-BE/MagiskTrustUserCerts

http://www.oneplusbbs.com/thread-4077732-1-1.html

http://www.oneplusbbs.com/thread-3903166-1-1.html

https://www.imooc.com/article/49265

https://www.jianshu.com/p/310d930dd62f

https://blog.nviso.be/2017/12/22/intercepting-https-traffic-from-apps-on-android-7-using-magisk-burp/

https://www.nccgroup.trust/uk/about-us/newsroom-and-events/blogs/2017/november/bypassing-androids-network-security-configuration/

其他抓包工具:

Wireshark,fiddler