[MAC]安装配置Charles
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(let_us_code)
➤博主域名:https://www.zengqiang.org
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/12200080.html
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
1. 安装
官网下载地址:https://www.charlesproxy.com/download/
2. 激活
打开Charles,【Help】->【Register Charles】
Registered Name: https://zhile.io
License Key: 48891cf209c6d32bf4
3. 配置
3.1 证书安装
依次点击四个安装,将Charles的根证书安装到相应位置:【Help】->【SSL Proxying】->
【Install Charles Root Certificate】:在【钥匙串访问】中找到Charles证书,双击证书,改成【始终信任】
【Install Charles Root Certificate in iOS Simulators】:在iOS模拟器中安装证书。
【Install Charles Root Certificate in Java VMs】:如果你已经安装了Java库,即可安装。
【Install Charles Root Certificate on a Mobile Device or Remote Browser】:
在手机端或远程浏览器中安装。【系统偏好设置】->【共享】:打开互联网共享。
将MAC和iPhone连接在同一个局域网中,按照提示在iPhone端所连接的Wifi中设置代理:
设置iPhone端Wi-Fi代理:【无线局域网】->【连接的Wifi】->【配置代理】IP:192.168.2.97 端口:8888
点击:【Allow】,第一次会提示,后面不再出现提示。
在iPhone的【Safari浏览器】中输入,必须使用iPhone的Safari浏览器!
chls.pro/ssl
依据下图操作:在设置中点击安装【已下载描述文件】
设置信任证书:【通用】->【关于本机】->【证书信任设置】->【启用完全信任】
3.2 代理设置
可以设置抓包数据类型,包括http与socket数据。可以根据需要在proxies栏下勾选。

如果需要抓Mac上的浏览器数据,需要在macOS栏,勾选http.

3.3 手机使用代理
手机连接局域网下wifi,与charles必须为同一外网下。
-
自动代理
在已连接的wifi上点击更多,进入配置代理页。勾选自动,在输入框URL中输入:
即设置了自动代理。
-
或者设置手动代理
输入charles的ip与端口即可
3.4 HTTPS抓包
HTTPS抓包,需要经过SSL。
Proxy->SSL Proxying setting
会打开如下界面。点击Add,Host栏与Port栏都填空(表示抓所有SSL请求),确定即可。


3.5 可接入控制
charles可以通过Access control Settings来控制允许访问列表。如果未允许本机器IP,访问不会走Charles,当然也抓不了包。


此手机的ip地址也会出现在Access control Settings的列表中。
我一般配置为允许所有,在Access control Settings中Add,输入0.0.0.0/0,添加即可。

这个功能相当有用,可以把数据请求的response从本地文件获得。
比如:我有一个系统升级功能,升级方式upgradeType有三种:强制/普通/静默,然而,自己想要测试验证三种场景,就得麻烦后台去修改数据。这时候,Map Local可以上场了。
保存远端response:

设置Map Local:


打到保存的json文件,修改返回值:

然后重新请求,就会走你修改后的本地文件数据了。再也不用频繁麻烦后端同学了,自己就能模拟各种数据场景。
如何关闭?
charles工具栏 -> Tools -> Map Local,点击进入

4. 一些常见问题
4.1 真机验证应用时卡住?
作为苹果开发,很多时候需要通过Xcode把自己做的小Demo运行到手机上,用的又是免费的个人证书,需要在手机上信任证书,及验证应用。如果你设置了抓包,ssl是验证不过的。
解决办法:
ssl时,只抓指定的网址,不要设置全抓*
。charles工具栏 -> Proxy -> SSL Proxy Settings,只抓项目后台地址。

把上面步骤过了,就可以愉快的抓https了。总结一下:
- 证书:Mac/模拟器/iphone证书(不要忘记信任证书)。
- Proxy setting勾选HTTP与SOCKS。
- 同一局域网。
- 手机设置代理。
- Access control Settings同意接入
- SSL proxy添加星。
当然,charles功能不仅仅于此,非常强大,还有很多功能等待发现。如:断点/拦截,返回修改后数据/模拟断网/模拟网络差。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
2019-01-16 [Swift]LeetCode377. 组合总和 Ⅳ | Combination Sum IV
2019-01-16 [Swift]LeetCode376. 摆动序列 | Wiggle Subsequence
2019-01-16 [Swift]LeetCode375. 猜数字大小 II | Guess Number Higher or Lower II
2019-01-16 [Swift]LeetCode373. 查找和最小的K对数字 | Find K Pairs with Smallest Sums
2019-01-16 [Swift]LeetCode372. 超级次方 | Super Pow
2019-01-16 [Swift]LeetCode368. 最大整除子集 | Largest Divisible Subset
2019-01-16 [Swift]LeetCode365. 水壶问题 | Water and Jug Problem