一、Charles簡介
Charles是一款常用的網路代理軟體,主要用於分析和調試HTTP/HTTPS請求,支持截取和修改網路請求和響應。它可用於安全審計、破解HTTPS加密等。
Charles在Mac、Windows和Linux系統上均有應用,是開發人員和測試人員常用的工具之一。但是,由於技術限制和商業壁壘等原因,Charles的某些功能是受到限制的,如HTTPS加密通信的截取和修改等。
二、Charles的技術限制
Charles的技術限制主要表現在兩個方面:
1、HTTPS加密通信的限制
2、部分Charles功能的限制
1、HTTPS加密通信的限制
HTTPS是HTTP協議的加密版,它使用SSL/TLS協議對數據進行加密,保證通信的安全性。但是,Charles默認情況下不能截取HTTPS通信過程中的請求和響應,因為Charles沒有伺服器端證書,無法解密SSL/TLS加密的數據。
為了解決這個問題,Charles提供了一種稱為「Monkey Patch」的方式來截取HTTPS通信。Monkey Patch是一種動態替換類或函數的技術,通過修改SSL/TLS底層庫來劫持數據,從而實現HTTPS通信的截取和修改。但是,這種方式需要對系統底層庫進行修改,且操作較為複雜,而且在某些系統上可能會遇到兼容性問題。
2、部分Charles功能的限制
除了HTTPS加密通信的限制,Charles還有一些功能受到了限制:
1、有限的SSL客戶端證書的創建
2、有限制的錄製功能
3、有限的Map Remote功能
4、有限制的Breakpoint功能
這些限制主要是由於商業考量而產生的,在Charles的專業版或許可版中可以得到解鎖。
三、突破Charles的技術限制
為了突破Charles的技術限制,可以採用以下方法:
1、使用證書
為了截取HTTPS通信,需要在Charles中配置SSL代理,並將Charles的代理伺服器證書添加到瀏覽器或移動設備的受信任根證書列表中。可以在Charles設置 – SSL Proxying – Install Charles Root Certificate中添加證書。
Charles設置路徑:Settings->SSL Proxying->Install Charles Root Certificate
添加證書後,可以在Charles中啟用SSL代理,並截取和修改HTTPS請求和響應。
2、使用插件
Charles提供了一些插件,例如SSL Unpinning、Hosts File Switch等,可以突破Charles的一些限制。這些插件可以在Charles的官方網站上下載和安裝。
插件下載地址:https://www.charlesproxy.com/download/
3、使用腳本
除了使用插件外,還可以通過編寫腳本來突破Charles的限制。Charles支持編寫Jython和JavaScript腳本,可以通過腳本來實現自動化測試、數據模擬和請求重放等功能。
// Jython腳本示例:通過修改請求頭來突破Charles的限制
from com.xk72.charles import HttpServletRequestWrapper
def onRequest(request: HttpServletRequestWrapper):
# 修改請求頭
request.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)")
# 返回請求
return True
四、結語
通過上述方法,可以突破Charles的技術限制,實現HTTP/HTTPS請求的截取、修改和重放等功能。當然,在使用Charles的過程中,還需要注意法律和道德的問題,以免侵犯他人的隱私和權益。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/228703.html