charles代理工具使用
type
Post
status
Published
date
Aug 24, 2025
slug
charles
summary
Charles 代理工具核心功能整理:安装、Map Remote 远程映射、Breakpoints 断点、Rewrite 重写、FoxyProxy 浏览器代理插件
tags
工具
category
技术分享
icon
password
Charles 对前后端联调、接口抓包、问题复现很有帮助。比如访问线上页面时,可以把指定接口代理到本地服务,减少反复切环境和启动多个项目的成本。
建议先看「基础知识」了解 Charles 的核心能力,再看「常用」部分按内部场景直接套配置。
🫡基础知识
1. Charles 安装与简介
Charles(青花瓷)是一款基于 HTTP 协议的代理服务器,通过把电脑/浏览器的流量代理到自身,截取请求与响应,达到抓包分析的目的。跨平台,半免费(启动需等待 10 秒,每 30 分钟需重启一次)。
安装步骤:
- 按默认选项安装即可
- 注册:
Help→Register Charles,填入 License 信息
- 注册码生成网址:Charles Keygen
代理配置(PC 抓包):
Proxy→Proxy Settings,确认端口默认是8888,按需勾选Enable transparent HTTP proxying
Proxy→Windows Proxy/macOS Proxy,启用系统代理,让电脑流量经过 Charles
- HTTPS 抓包:
Help→SSL Proxying→Install Charles Root Certificate,将根证书安装到「受信任的根证书颁发机构」
Proxy→SSL Proxying Settings,勾选Enable SSL Proxying,只添加需要抓包的域名;临时排查时可用*:443,用完建议收窄范围
手机抓包:
- 手机与电脑连接同一个 WiFi
- 手机 WiFi 配置 → 手动代理 → 服务器填电脑 IP(
Help→Local IP Address),端口填8888
- 手机浏览器访问
chls.pro/ssl安装证书
- iOS 还需要在系统设置中信任该证书;Android 7+ 的部分 App 默认不信任用户证书,可能只能抓浏览器或已配置网络安全策略的 App
Charles 一旦开启代理,系统代理会被强制改成 Charles 的,原先设置的代理此时不能用,这也是后面 FoxyProxy 出场的原因。
📎 参考文章:Charles 安装与简介详解
2. Map Remote 远程映射
功能:把命中条件的请求 URL 改写为另一个远程地址,相当于"偷梁换柱"地修改请求目标。常用于"访问线上域名 → 实际打到本地后端"或"测试环境 → 预发环境"切换。
配置步骤:
Tools→Map Remote,勾选Enable Map Remote
- 点击
Add,弹出Edit Map Remote Rule
- From(源):填写要被映射的请求(Protocol / Host / Port / Path 都可用
*通配,不限制就留空)
- To(目标):填写映射到的目标地址(如本地服务
127.0.0.1:8080)
- 点击
OK保存,规则生效
典型场景:
- 只想测后端,不想本地起前端:直接访问线上前端地址,把后端接口域名 Map 到本地后端端口
- 测试环境接口临时切到预发、联调或本地服务,不需要改前端代码和配置
- 不用再找菜单 ID,也不用同时启动一堆本地服务,电脑压力会小很多
Map Remote 会真实改变请求目标。建议只对明确的域名和路径配置规则,调试结束后及时关闭,避免误把正式流量打到本地或其他环境。
📎 参考文章:Charles Map Remote 远程映射详解
3. Breakpoints 断点
功能:在请求发出 / 响应返回的瞬间"暂停"流量,让你手动修改 Request 或 Response 的任意字段(Header、参数、Body、状态码),再放行。
配置步骤:
- 在左侧请求列表上右键目标接口 →
Breakpoints(工具栏断点按钮会亮起)
- 也可通过
Proxy→Breakpoint Settings手动添加规则,并选择拦截Request/Response/ 两者都拦
- 重新发起请求,Charles 会弹出编辑窗口
- 在
Edit Request或Edit Response中修改内容
- 点
Execute放行;点Abort终止
典型场景:
- 复现"少了某个 Header 字段"这类难复现的 bug
- 模拟超大数值、边界值、权限不足等异常返回
- 在不改后端的情况下,验证前端对各种异常响应的处理
断点适合临时、单次、需要人工判断的调试。若同一个修改要反复生效,优先考虑 Rewrite。
📎 参考文章:Charles Breakpoints 断点调试详解
4. Rewrite 重写
功能:和断点类似可改请求/响应,但 Rewrite 是规则化、自动化的——一次配置,所有匹配的请求都会被自动修改,不需要手动暂停。
配置步骤:
Tools→Rewrite,勾选Enable Rewrite
- 在
Sets区域Add一个规则集,命名(如"加 deptCode")
- Location:
Add后填要匹配的请求(Protocol/Host/Port/Path/Query,留空或填*表示不限制)
- Rules:
Add添加一条重写规则 Type:选择操作类型(Add Header/Modify Header/Modify Body/Modify Response Status等)Where:作用于Request还是ResponseMatch/Replace:旧值与新值(支持正则)
- 保存即生效
与断点的区别:
对比项 | Breakpoints | Rewrite |
触发方式 | 每次请求手动放行 | 自动批量生效 |
适用场景 | 临时调试、一次性修改 | 规则化、长期生效的修改 |
操作成本 | 高 | 低 |
📎 参考文章:Charles Rewrite 重写功能详解
5. 浏览器插件 FoxyProxy
功能:在 Chrome / Firefox 中给指定网站使用不同的代理,让"开发抓包(Charles)"和"外部网络代理(v2rayN)"互不打架。
冲突的根源: Charles 启动后通常会接管系统代理,而 v2rayN 这类外部网络代理也依赖系统代理。两个工具同时抢系统代理时,就容易出现一个能用、另一个失效的情况。解决思路是让浏览器按 URL 分流,由 FoxyProxy 决定不同网站走哪一个代理。
配置思路:
- 浏览器商店安装
FoxyProxy Standard扩展
- 在 FoxyProxy 中添加代理配置:
- Charles 代理:
127.0.0.1:8888,匹配开发相关域名(公司业务系统等) - v2rayN 代理:
127.0.0.1:10808(常见 SOCKS 端口,以本机实际配置为准),匹配需要走外部网络代理的网站
- v2rayN 关闭"启动系统代理"(即"清除系统代理"),由 FoxyProxy 接管浏览器内的代理路由
- 如果只抓浏览器流量,Charles 中可以不启用
Windows Proxy/macOS Proxy,直接靠 FoxyProxy 把指定网站转到127.0.0.1:8888
这样一来:开发抓包走 Charles,外部网络访问走 v2rayN,互不影响。

📎 参考文章:FoxyProxy 浏览器代理插件使用教程
🫡常用(内部使用可忽略)
1.远程映射
功能:将线上环境的请求代理到本地服务,避免同时启动多个前端项目,解决电脑卡顿问题。
使用场景:
- 测试前端页面时,经常需要先找页面菜单 ID,链路比较绕
- 只想测试后端接口,但又必须启动本地前端服务来触发调用
- 多个本地服务同时启动时,电脑容易卡顿,甚至导致 IDE 被迫退出


解决方案:开启远程映射后,直接访问线上地址,Charles 会自动将特定服务的请求代理到本地,无需找页面菜单 ID,也无需开启多个本地服务。
配置文件下载:
点击下方文件下载配置,然后在 Charles 中导入即可快速配置远程映射规则。导入后建议先检查域名、端口和路径是否与当前本地服务一致。

2.重写和打断点
功能:动态修改 HTTP 请求/响应的内容,用于快速复现难以重现的 Bug 场景。
使用场景:
- 某些 Bug 难以重现,例如缺少特定的 Header 字段(如
deptCode),正常情况下请求都会携带该字段
- 需要模拟异常数据、边界值、权限不足、接口超时等场景
- 不方便改后端代码时,先用 Charles 验证前端兜底逻辑

解决方案:使用重写(Rewrite)或断点(Breakpoints)功能,拦截并修改请求头、请求参数、返回数据等,快速复现和验证 Bug。
可修改内容:
- 请求头(Headers)
- 请求参数(Query / Body)
- 响应状态码(Status Code)
- 响应内容(Response Body)
提示:Rewrite 适合需要反复测试的固定场景,Breakpoints 适合临时调试单次请求。
Author:spike
URL:/article/charles
Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Previous
2025年工作总结
Next
视频剪辑复盘:从兴趣尝试到账号定位