定义
Charles Proxy是一款在本机运行的网页代理程序,兼有HTTP代理与HTTP监视器的双重身份。用户把浏览器或其他联网应用配置为经由它访问网络后,该程序便会记录并展示所有被发送和接收的数据。[1] 它适用于Windows、macOS以及Linux平台,可调试来自浏览器乃至各类应用程序的网络流量。[4] 按用途归类,它属于面向开发者的网络调试工具,核心价值在于把客户端与服务器之间原本不可见的通信过程变成可读、可改、可复现的数据流。[1]
原理
该程序在本地开启代理端口,默认的HTTP代理端口为8888,客户端把请求先发给它,再由它转发到目标服务器,返回的数据同样经由它回传给客户端,因此途中每个请求与响应都能被记录与查看。[5][3] 除HTTP代理外,它还支持SOCKS代理模式,这种方式下浏览器计算连接数限制时不再把代理计入,从而更接近不使用代理时的连接行为。[6]
对于HTTPS流量,它采用中间人方式工作。客户端看到的不是服务器原始证书,而是由Charles动态生成、并用自带根证书签名的证书;与此同时它仍与真正的服务器建立SSL连接,于是浏览器到它、它到服务器这两段通信分别加密,而它自身能在中间获得明文。[2] 由于这套根证书默认不在系统的受信任列表中,客户端初次遇到它的证书时会弹出安全警告,把该根证书加入信任列表后警告即消失。[2][4]
SSL代理并非默认对全部站点生效。自3.4版本起,该行为改为按站点主动加入,用户需要在SSL代理设置中逐个指定主机名,或填入通配符让所有站点生效。[7] 官方说明这一改动的原因之一,是避免所有站点被默认解密而带来非预期的安全问题。[7] 在抓包之外,它还提供带宽限制以模拟较慢的网络、以树状或文本形式查看XML与JSON请求、以断点拦截并编辑请求或响应等能力。[1]
发展历程
该软件由XK72 Limited开发并维护。[8] 早期资料显示,其2.1版本在2005年已有记录,当时以Java编写,定位为面向Web开发者的HTTP监视器与反向HTTP代理。[9]
此后版本持续迭代。2016年发布的Charles 4增加了HTTP/2、IPv6支持并改进界面外观;2017年发布的4.2版本带来了重要的TLS调试能力。[10] 2017年11月,面向iOS设备的版本发布,使开发者可以在移动设备上直接捕获和检查网络请求。[10][8] 2025年3月,Charles 5桌面版正式发布,随后更新至5.0.2与5.0.3版本。[8]
应用
在Web与网络开发中,开发者难以直接看到浏览器与服务器之间往返的内容,缺少这种可见性就难以判断故障究竟出在哪一端,代理工具的作用正是在于呈现这一过程。[1] 常见用法包括监视应用程序的网络流量、定位网络问题、修改请求与响应,以及分析性能表现。[5] 华为在其开发者文档中把它描述为可用于拦截和查看设备与服务器之间通信的网络调试与分析代理工具。[3]
在移动应用调试场景中,手机与电脑需处于同一网络,手机的Wi-Fi代理指向电脑上运行的代理地址与监听端口,抓取HTTPS报文还需在手机端安装并信任相应证书。[3] 亚马逊的开发者文档则给出在应用中配置代理与根证书文件的做法,用于调试应用的网络流量并检查HTTPS连接。[5]
断点与改写能力也被用于测试目的:在请求或响应途中暂停,修改状态码或内容后再放行,可用于验证前后端对异常情况的处理逻辑。[11] 限速功能可用于弱网测试,人为降低带宽与增加延迟以观察应用在慢速网络下的表现。[12]
局限
解密HTTPS的能力依赖客户端信任其根证书,若应用启用了证书固定,即自行校验根证书或服务端公钥,它就会拒绝这张中间人证书并中断连接。[13] 官方文档指出,若根证书已正确安装、在浏览器中可正常解密,而某个应用仍然失败,那么问题很可能就出在证书固定上。[13] 有分析同样指出,中间人代理方案无法解密启用证书固定的应用,绕过通常需要修改设备或使用插桩工具等非普通调试手段。[14][15]
在性能方面,解密全部HTTPS流量会消耗较多处理器资源,因此只应对需要的域名开启SSL代理,并建议在排查完毕后关闭,以免影响速度。[16] 记录流量过多也会导致程序变慢,可采取只录制活动会话、排除无关主机、定期清空会话等做法。[16] 该工具适合查看特定的接口请求,而非用于压力测试,高负载场景会带来性能与硬件方面的限制。[16]
此外,SSL代理会使客户端收到由它签名的证书而非服务器原始证书,这可能触发警告,部分应用甚至会直接拒绝此类连接。[17] 若目标域名未加入SSL代理列表,或证书未被信任,抓到的HTTPS请求会显示为unknown,无法展开查看内容。[18]
参见
参考资料
- charlesproxy.com 上的网页 [引用日期2026-10-14]
- charlesproxy.com 上的网页 [引用日期2026-10-14]
- 如何使用Charles工具抓包-常见FAQ-系统开发 [引用日期2026-10-14]
- Configuring Charles Web Debugger [引用日期2026-10-14]
- 使用Charles代理监控网络流量 [引用日期2026-10-14]
- charlesproxy中文官方网站 [引用日期2026-10-14]
- SSL decryption no longer works after Charles 3.4 upgrade [引用日期2026-10-14]
- Charles [引用日期2026-10-14]
- Pro-Linux: Informationen zu Charles Web Debugging Tool [引用日期2026-10-14]
- Charles [引用日期2026-10-14]
- Charles的基本使用 [引用日期2026-10-14]
- Charles使用手册:从入门到精通 [引用日期2026-10-14]
- SSL connections from within iPhone applications [引用日期2026-10-14]
- 优雅解密HTTPS流量:开发者与安全工程师的进阶指南 [引用日期2026-10-14]
- 有没有什么好用的鸿蒙App抓包工具或者小妙招?-华为开发者问答 | 华为开发者联盟 [引用日期2026-10-14]
- Charles Proxy: What It Is and How to Use It Effectively [引用日期2026-10-14]
- Charles使用教程 [引用日期2026-10-14]
- csdn.net 上的网页 [引用日期2026-10-14]