Charles

Charles代理工具详解

一、Charles的原理

在这里插入图片描述
1、客户端向服务器发送HTTPS请求
2、Charles拦截客户端的请求,伪装成客户端向服务器进行请求
3、服务器想“客户端”(实际上是Charles)返回服务器的CA证书
4、Charles拦截服务器的响应,获取服务器证书公钥,然后自己制作一张证书,将服务器证书替换后发送给客户端
5、客户端接收到“服务器”的证书后,生成一个对称秘钥,用Charles的公钥加密,发送给“服务器”
6、Charles拦截客户端的响应,用自己的私钥解密对称秘钥,然后用服务器证书公钥加密,发送给服务器
7、服务器用自己的私钥解密对称密钥,向“客户端”(Charles)发送响应
8、Charles拦截服务器的响应,替换成自己的证书后发送给客户端
9、至此,连接建立,Charles拿到了 服务器证书的公钥 和 客户端与服务器 协商的对称密钥,之后就可以解密或者修改加密的报文了。

二、Charles使用方法

1、打开Charles
在这里插入图片描述
2、打开浏览器输入数据
在这里插入图片描述
3、查看Charles
在这里插入图片描述

三、Charles的功能操作

1、断点调试(request)
1).接口处 鼠标右击,选择breakpoints(允许本接口使用breakpionts功 能)

在这里插入图片描述
2、打开设置断点
在这里插入图片描述
3、重新设置请求值
在这里插入图片描述
在这里插入图片描述
4、关闭断点
在这里插入图片描述
2、本地修改
1、复制 response内容,保存为.txt 文件,存在电脑本地。
在这里插入图片描述
2、修改txt文档内容
在这里插入图片描述
3、点击map locale设置断点
在这里插入图片描述
4、重启浏览器查看
在这里插入图片描述

3、弱网测试

**设置带宽和延迟时间(毫秒) **
在这里插入图片描述

<think>嗯,用户这次的问题有点特殊,表面上是在问SVN命令,但引用的内容却全是关于Charles抓包工具的。看起来可能是用户复制错了引用内容,或者想同时了解两个工具?不过根据对话历史,我之前已经详细整理了SVN命令大全,用户现在突然转向Charles,估计是新的需求。 用户提到的引用[1][2][3][4]都在描述Charles的功能特点,特别是移动端抓包、HTTPS解密这些核心能力。考虑到用户是技术人员,可能正在做移动开发或API调试,需要专业抓包方案。不过奇怪的是最后又提到“用户意图不明确”,这个矛盾点需要注意。 我决定以Charles为核心展开,因为: 1. 引用内容全部围绕Charles,且包含具体功能场景 2. SVN部分在历史对话已完整覆盖 3. 用户结尾明确问及“charles软件开发工具用途” 需要特别注意技术细节的准确性: - 强调Charles的SSL代理配置流程,这是新手常见卡点 - 对比Fiddler/Wireshark的差异时引用数据要严谨 - 移动端设置步骤必须验证过(比如iOS的证书信任操作) 用户可能是中级开发者,因为: - 没有问基础安装问题 - 引用中提到了CI/CD等进阶场景 - 但需要警惕“重放请求”这类高级功能的理解门槛 最后生成的延伸问题要兼顾实用性和深度: - 包含企业级应用场景(如CI/CD集成) - 覆盖安全相关痛点(如证书管理) - 设计对比类问题帮助技术选型</think>### Charles 软件开发工具的核心用途详解 Charles 是一款专业的 HTTP/HTTPS **抓包与调试工具**,主要服务于开发者和测试人员,用于监控、分析和修改网络请求。以下是其核心功能场景: --- #### **1. 网络流量监控与分析** - **实时抓包** 捕获所有 HTTP/HTTPS 请求与响应,包括移动端(iOS/Android)和桌面端[^2][^4]。 ```bash # 典型操作流程: 1. 启动 Charles → 设置设备代理 → 查看实时请求流 ``` - **HTTPS 流量解密** 通过安装 Charles 根证书,自动解密 HTTPS 流量(支持 SSL Proxying)[^4]。 > **安全提示**:需手动信任证书(iOS:设置→通用→证书信任;Android:安装用户证书) --- #### **2. 接口调试与模拟** | 功能 | 应用场景 | 示例操作 | |---------------------|-----------------------------------|------------------------------| | **断点调试** | 修改请求参数或拦截响应 | 右键请求 → *Enable Breakpoints* | | **重放请求** | 重复测试特定接口 | 右键请求 → *Repeat* | | **Map Local** | 本地文件替换线上响应 | 映射 JSON 文件模拟 API 返回 | | **Throttling** | 模拟弱网环境(3G/4G 延迟) | Proxy → Throttle Settings | --- #### **3. 数据管理与性能优化** - **结构化管理请求** 按域名、路径自动分类请求树,支持搜索过滤[^3]。 - **性能分析** 统计请求耗时、数据大小(Waterfall 视图),定位性能瓶颈[^3]。 > 数学表达:若请求延迟为 $t_{req}$,响应时间为 $t_{res}$,则总耗时 $T = t_{req} + t_{res}$ - **数据导出** 导出会话为 `.chls` 文件,用于团队协作或 CI/CD 自动化测试[^2]。 --- #### **4. 移动开发专项支持** - **移动设备抓包** 一键生成设备代理配置二维码(iOS 需手动信任证书)[^4]。 - **WebSocket 调试** 完整监控 WebSocket 连接生命周期(握手/消息/关闭)。 --- ### 与其他工具的对比 | 特性 | Charles | Fiddler | Wireshark | |---------------|---------------|---------------|---------------| | **HTTPS解密** | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐ (需复杂配置) | | **移动端支持**| ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐ | | **性能影响** | 中高负载略慢[^4] | 中等 | 低 | | **价格** | 商业授权 | 免费 | 免费 | > **最佳实践**:开发调试用 Charles/Fiddler,底层协议分析用 Wireshark[^4]。 --- ### 典型应用场景 1. **API 开发调试** - 验证请求参数格式 - 检查响应数据结构 2. **移动 App 测试** - 捕获 App 与服务器的交互 - 模拟异常网络状态 3. **安全审计** - 检测敏感数据明文传输 - 分析加密协议合规性 4. **性能优化** - 识别冗余请求(如重复加载的图片) - 压缩策略验证(如 GZIP 生效检查) --- ### 进阶技巧 - **脚本扩展** 使用 `Charles Proxy API` 编写 JS 脚本,实现自动修改请求头、批量重定向等[^1]。 - **CI/CD 集成** 通过命令行工具导出流量数据,与自动化测试框架(如 Jenkins)结合[^2]。 > 官方文档:[Charles Proxy Advanced Usage](https://www.charlesproxy.com/documentation/)[^1] ---
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值