象山县万年长

基于charles抓取https请求使用过程解析

2026-03-30 23:06:01 浏览次数:1
详细信息

一、准备工作

1. 安装 Charles Proxy

2. 基本配置

# 启动 Charles
# 确保 Proxy → macOS Proxy/Windows Proxy 已勾选

二、HTTPS 抓取核心配置

1. 安装 Charles 根证书(关键步骤)

macOS:

Help → SSL Proxying → Install Charles Root Certificate
# 还需要在钥匙串访问中信任该证书

Windows:

Help → SSL Proxying → Install Charles Root Certificate
# 证书会自动安装到受信任的根证书颁发机构

iOS/Android 手机:

1. 设置手机代理到电脑 IP:8888
2. 手机浏览器访问 chls.pro/ssl 下载证书
3. 在系统中安装并信任证书

2. 启用 SSL Proxying

Proxy → SSL Proxying Settings
- 勾选 "Enable SSL Proxying"
- 添加需要抓取的域名(或使用 *:443 抓取所有)

三、具体抓取流程

1. 基础 HTTP 抓取

步骤:
1. 打开 Charles
2. 开启代理 (默认端口 8888)
3. 客户端配置代理到 127.0.0.1:8888
4. 发送请求 → Charles 自动捕获

2. HTTPS 抓取特殊处理

# 需要额外步骤的原因:
HTTPS 使用加密传输,Charles 需要作为"中间人"解密

工作流程:
客户端 → [HTTPS请求] → Charles(解密) → 服务器
服务器 → [HTTPS响应] → Charles(重新加密) → 客户端

四、常见问题解决

1. 证书不被信任

# 解决方案:
1. 重新安装根证书
2. 确保证书在"受信任的根证书颁发机构"
3. iOS 14+:需要在"关于本机"→"证书信任设置"中完全信任

2. 抓不到某些 App 的请求

可能原因:
1. App 使用证书绑定 (SSL Pinning)
2. 使用自定义证书验证

解决方案:
- 越狱/root 后安装插件绕过
- 使用 objection/frida 等工具
 - objection -g com.app.name android sslpinning disable

3. Charles 显示 unknown 或乱码

原因:SSL Proxying 未正确配置
解决:
1. 确认目标域名已添加到 SSL Proxying 列表
2. 重新安装客户端证书
3. 重启 Charles 和客户端应用

五、高级技巧

1. 特定域名过滤

Proxy → SSL Proxying Settings → Add
Host: *.example.com
Port: 443

2. 断点调试 (Breakpoints)

1. Proxy → Breakpoint Settings → Add
2. 设置断点条件(域名、路径等)
3. 请求会在发送前暂停,可修改参数

3. 重写请求/响应 (Rewrite)

Tools → Rewrite
- 可修改请求头、参数
- 可修改响应内容、状态码

4. 映射功能 (Map)

# 本地文件替换线上资源
Tools → Map Local
# 或重定向到其他域名
Tools → Map Remote

六、移动端配置示例

iOS 配置:

步骤:
1. 电脑和手机同一 WiFi
2. 查看电脑 IP: Help → Local IP Address
3. 手机 WiFi 设置代理: 手动 → 输入电脑IP:8888
4. 手机 Safari 访问: chls.pro/ssl 安装证书
5. iOS 设置 → 通用 → 关于本机 → 证书信任设置 → 启用完全信任

Android 配置:

步骤:
1. 类似 iOS 配置代理
2. 浏览器访问 chls.pro/ssl 下载证书
3. 设置 → 安全 → 从SD卡安装证书
4. Android 7+ 可能需要额外配置用户证书

七、安全注意事项

仅用于开发和测试环境 不要在生产环境安装 Charles 证书 及时删除不再需要的证书 注意抓取敏感数据的法律风险

八、替代方案对比

工具 优点 缺点
Charles 功能全面,界面友好 收费,部分功能需付费
Fiddler 免费,Windows 友好 对 macOS 支持一般
mitmproxy 开源,命令行强大 学习曲线较陡
Wireshark 底层网络分析 HTTPS 解密配置复杂

这个流程涵盖了从基础配置到高级调试的完整 HTTPS 抓取方案。实际使用时建议从简单 HTTP 开始测试,逐步配置 HTTPS 抓取。

相关推荐