还不会用 Charles?最后一遍了啊!

Charles,一个老生常谈的 HTTP 代理工具。我们平时联调或者定位线上问题都会频繁使用,这次我们再全面性的介绍下它的工作原理和使用场景。

Charles 的工作原理:

HTTP 代理工具,顾名思义它是在客户终端与互联网之间的代理服务器,可以拦截终端发出的 HTTP 请求,对其进行监听、改写等操作。常用于查看移动端请求、mock 接口、修改 HTTP 请求/响应。

安装并配置 Charles HTTPS 代理

鉴于本文的重点是如何使用 Charles,对于如何安装 请点击这里查看教程

  • 需要注意,配置 https 代理时,目前 IOS 已不支持通过打开 Charles 链接的方式下载描述文件,需要将文件下载下来传输到手机中打开。
  • Android 目前只支持代理 HTTP 请求,不支持代理 HTTPS 请求。

如何使用 Charles

Charles 的主界面

先介绍下 Charles 的主界面,其分为两种视图:

  • 一种是Structure View,根据域名路径进行分类,配合 Filter 功能查看特定域名的请求非常有用

  • 一种是 Sequence View,通过时间排序展示,并且显示了 duration。

请求详情

进入请求详情,我们可以查看到请求的全部信息,包括:

  • request 的 headers、cookies、URL payload 和 body 等数据
  • response 的 headers、set-cookie、result 等数据

HTTPS 请求代理

下面我们进行实战,将 https://shopic.sf-express.com/crm/webapp 代理到一个测试地址 http://s.sfjswl.com:10086

Map Remote

第一步,我们通过 Map Remote 能力,将 https://shopic.sf-express.com 域名转发到 http://s.sfjswl.com 域名上。

在 Tools 栏中选择「Map Remote」,不过我更推荐大家使用快捷键 option + command + M,从菜单栏中找这些小工具真的很费眼。。。

这里要注意:

  • 要确认好协议是 http 还是 https,别写错了!
  • Map Remote 只能用于 修改域名,请求路径是不会改变的。

Map Rewrite

因为 Map Remote 只能转发域名,通过第一步我们相当于把 https://shopic.sf-express.com/crm/webapp 代理到了 http://s.sfjswl.com:10086/crm/webapp,然后就需要把 url 中的 /crm/webapp 干掉。

那第二步,我们就可以通过 Map Rewrite 能力,把 /crm/webpapp 替换为 /。它的快捷键是 option + command + R

从上图我们可以看到:

  • 左侧是每个独立配置,可自由开启关闭。
  • 右侧是具体规则,Location 用来匹配路径,匹配后则进行右下角的修改操作
  • Rewrite 的功能非常强大,它可以修改 HTTP 请求的所有信息

这里我们通过 Location 匹配到了 Remote 转发后的 s.sfjswl.com:10086/crm/webapp注意这里要配的是 Remote 之后的地址 )。然后通过改写 path/crm/webapp 干掉,这样我们就顺利把 https://shopic.sf-express.com/crm/webapp 代理到 http://s.sfjswl.com:10086

下面我们再介绍一些 Charles 的常见用法:

mock 接口

承接上文,比如现在我们需要 mock 接口返回数据来还原事故现场,我们可以使用 Charles 的 Map local 功能将后端接口转发到本地的 txt 文件。这个功能的快捷键是 option + command + L

重复发送请求

前后端联调时,后端常会说:"FE再调下接口试试",这时我们就可以通过 Charles 的 Repeat 功能直接发送请求啦!

mock 慢网情况

我们可以通过 Charles 的 Throttle Settings 功能 mock 慢网的情况。它的快捷键是 shift + command + T

Record Settings

我们可以通过 Charles 的 Record Settings功能设置只监听指定域名的请求。它的快捷键是 option + command + R

BreakPoints

我们可以通过 Charles 的 BreakPoints 功能实时拦截请求,并可以修改 request 和 response,类似于 debug 代码

总结

Charles 是一个功能非常强大的 HTTP 代理工具,大大降低了我们调试移动端 h5 和小程序的难度。本文还有一些细节内容未补充比如 path 的路径匹配逻辑、Rewrite 的其他用法等,大家在配置 Charles 的过程中有任何问题欢迎留言交流!

相关推荐
QQ1__8115175153 小时前
Spring boot名城小区物业管理系统信息管理系统源码-SpringBoot后端+Vue前端+MySQL【可直接运行】
前端·vue.js·spring boot
钛态3 小时前
前端微前端架构:大项目的救命稻草还是自找麻烦?
前端·vue·react·web
一粒黑子3 小时前
【实战解析】阿里开源 PageAgent:纯前端 GUI Agent,一行JS让网页支持自然语言操控
前端·javascript·开源
独角鲸网络安全实验室3 小时前
2026微信小程序抓包全解析:从实操落地到合规风控,解锁前端调试新范式
前端·微信小程序·小程序·抓包·系统代理绕过·https证书严格校验·进程隔离
紫微AI3 小时前
前端文本测量成了卡死一切创新的最后瓶颈,pretext实现突破了
前端·人工智能·typescript
GISer_Jing3 小时前
AI前端(From豆包)
前端·aigc·ai编程
IT枫斗者3 小时前
前端部署后如何判断“页面是不是最新”?一套可落地的版本检测方案(适配 Vite/Vue/React/任意 SPA)
前端·javascript·vue.js·react.js·架构·bug
测试修炼手册3 小时前
[测试技术] 深入理解 JSON Web Token (JWT)
前端·json
AI老李3 小时前
2026 年 Web 前端开发的 8 个趋势!
前端
里欧跑得慢4 小时前
15. Web可访问性最佳实践:让每个用户都能平等访问
前端·css·flutter·web