【Charles】基本功能 HTTP、HTTPS 请求抓取

本文详细介绍如何使用Charles代理工具抓取PC及移动端HTTP/HTTPS请求,包括配置代理、安装证书、设置透明代理等步骤,适用于iOS、Android及PC平台。

PC

抓取 PC 端 HTTP 请求

Proxy - macOS Proxy 或者 Windows Proxy

勾选开启,取消勾选代表关闭。

抓取 PC 端 HTTPS 请求

  1. 下载证书

Help - SSL Proxying - Install Charles Root Certificate

  1. 安装证书,一路下一步
    在这里插入图片描述在这里插入图片描述
  2. 信任证书( IE浏览器)

工具栏 - internet 选项 - 内容 - 证书 - 受信任的根证书颁发机构

找到即可,如果找不到:
在中级证书颁发机构导出,受信任的根证书颁发机构导入

移动端

设置端口号

Proxy - Proxy Setting - HTTP Proxy

填入自定义端口号(默认为 8888),勾选 Enable transparent HTTP proxying 即可,接下来在手机上还需要进一步设置。

注意:保证移动端与PC端连接网络一致。

IOS 设置

设置 - 无线局域网 - 进入当前 WiFi 详情(点击WiFi右侧“!”键)> HTTP 代理 > 手动

服务器填写:当前 PC 端 IP 地址
端口栏填写:Charles 设置的端口(默认 8888)

设置好后,打开手机上 APP 访问网络请求,在 charles 弹出的是否允许连接弹框内点击 allow 即可正常抓取到 HTTP 请求。

Android 设置

各厂商 ROM 不同,操作路径可能存在细微不同,此处以华为手机为例:

设置 - WLAN - 长按当前 WiFi - 修改网络 - 勾选显示高级选项

服务器填写:当前 PC 端 IP 地址
端口栏填写:Charles 设置的端口(默认 8888)

设置好后,点击保存,手机上发送网络请求,在 charles 弹出的是否允许连接弹框内点击 allow 即可正常抓取到 HTTP 请求。

IOS/Android 抓取 HTTPS 请求

  1. 手机上安装证书

Charles 客户端,依次点击如下路径

Help - SSL Proxying - Install Charles Root Certificate on a Mobile Device or Remote Browser

弹出如图对话框:
在这里插入图片描述
按照提示,手机上操作:

  • 手机连接的网络与PC网络保持一致;
  • 手机浏览器访问:chls.pro/ssl,下载 ca 证书并安装。

证书下载安装遇到的坑 - IOS
证书下载安装遇到的坑 - Android

  1. Charles 设置允许代理的请求站点的域名

Proxy - SSL Proxy Setting - SSL Proxy - 勾选 Enable SSL Proxying

点击 Add,添加要抓取的站点、端口号(* 代表任意站点)

设置好后,点击 ok

  1. 手机上访问 HTTPS 请求,不再显示 unknow 即成功。
### Charles 抓取 HTTPS 请求时内容出现乱码的解决方案 在使用 Charles 抓取 HTTPS 请求时,如果请求或响应的内容出现乱码,通常是因为 SSL 加密机制导致的。以下是解决该问题的具体方法: #### 1. 配置 Charles 的 SSL 代理 为了抓取并解密 HTTPS 请求的内容,需要在 Charles 中启用 SSL 代理功能。具体操作如下: - 在 Charles 的菜单栏中选择 **Proxy > SSL Proxying Settings**。 - 在弹出的窗口中点击 **Add** 按钮,添加需要拦截的域名(可以使用通配符 `*` 来匹配所有域名)[^2]。 - 确保目标域名已正确添加到 SSL Proxying 列表中。 #### 2. 安装 Charles 的证书 Charles 提供了自己的 CA 证书,用于解密 HTTPS 流量。为了使操作系统信任 Charles 作为中间代理,必须安装该证书: - 在 Charles 菜单栏中选择 **Help > SSL Proxying > Install Charles Root Certificate**。 - 根据提示完成证书的安装过程,并确保将证书导入到系统的受信任根证书存储中[^3]。 #### 3. 在客户端设备上配置证书 对于移动设备或其他非本地主机,还需要手动安装 Charles 的证书: - 使用 Charles 的菜单栏选择 **Help > SSL Proxying > Export Charles Root Certificate**,将证书导出为 `.cer` 文件。 - 将导出的证书文件传输到目标设备,并按照设备的操作指南完成证书的安装。 - 在某些设备上,可能还需要额外的权限或设置以允许证书被用于 HTTPS 解密。 #### 4. 确保客户端信任 Charles 即使安装了证书,某些应用程序可能会实施 **SSL Pinning**(证书锁定),这会导致即使安装了 Charles 的证书也无法解密流量。此时,需要联系应用开发者或寻找特定的解决方案来绕过 SSL Pinning[^1]。 #### 5. 检查是否开启 SSL Proxying 如果仍然遇到乱码问题,检查 Charles 的抓包设置: - 确保目标域名已正确添加到 SSL Proxying 列表中。 - 如果未开启 SSL Proxying,Charles 将无法解密 HTTPS 数据流,导致显示乱码。 ```python # 示例代码:验证 Charles 是否正常解密 HTTPS 请求 import requests proxies = { "http": "http://localhost:8888", "https": "http://localhost:8888" } response = requests.get("https://example.com", proxies=proxies, verify="path/to/charles-ssl-proxying-certificate.pem") print(response.text) ``` 通过以上步骤,可以有效解决 Charles 抓取 HTTPS 请求时内容出现乱码的问题。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值