Charles + Proxifier 实现软件HTTPS抓包

文章目录

  • 1.安装
    • [🧰 准备工作](#🧰 准备工作)
    • [🔧 步骤详解](#🔧 步骤详解)
      • [一、配置 Charles Proxy](#一、配置 Charles Proxy)
        • [1. 设置监听端口](#1. 设置监听端口)
        • [2. 启用 SSL 代理](#2. 启用 SSL 代理)
        • [3. 安装 Charles 根证书(用于解密 HTTPS)](#3. 安装 Charles 根证书(用于解密 HTTPS))
      • [二、配置 Proxifier](#二、配置 Proxifier)
        • [1. 添加 Charles 作为代理服务器](#1. 添加 Charles 作为代理服务器)
        • [2. 创建规则,指定目标软件走代理](#2. 创建规则,指定目标软件走代理)
        • [3. (可选)禁用其他规则](#3. (可选)禁用其他规则)
      • 三、开始抓包
    • [🔍 常见问题排查](#🔍 常见问题排查)
    • [✅ 补充建议](#✅ 补充建议)
  • 2.实现原理:

要在 Windows 系统中使用 Charles + Proxifier 对特定软件(尤其是不支持手动设置代理的程序)进行 HTTPS 抓包 ,可以按照以下步骤操作。该方法适用于抓取桌面应用程序(如 Electron 应用、游戏客户端、某些桌面工具等)发出的 HTTPS 请求。


1.安装

🧰 准备工作

  1. 安装 Charles Proxy

  2. 安装 Proxifier

  3. 确保目标软件尚未运行(避免漏抓初始请求)。


🔧 步骤详解

一、配置 Charles Proxy

1. 设置监听端口
  • 打开 Charles → ProxyProxy Settings
  • 确保 HTTP 代理端口为(默认)8888,勾选 Enable transparent HTTP proxying
2. 启用 SSL 代理
  • ProxySSL Proxying Settings

  • 勾选 Enable SSL Proxying

  • Locations 中添加:

    复制代码
    Host: *
    Port: 443

    (或指定具体域名,如 api.example.com:443

3. 安装 Charles 根证书(用于解密 HTTPS)
  • HelpSSL ProxyingInstall Charles Root Certificate
  • 安装到 "受信任的根证书颁发机构"
  • 如果抓包的是其他用户或系统服务,还需在 本地计算机 的证书存储中安装(通过 certlm.msc)

💡 注意:Windows 10/11 可能需要管理员权限安装证书,并重启浏览器/应用。


二、配置 Proxifier

Proxifier 的作用是强制指定程序的所有网络流量(包括 HTTPS)走 Charles 代理。

1. 添加 Charles 作为代理服务器
  • 打开 Proxifier → ProfileProxy Servers
  • 点击 Add
    • Address: 127.0.0.1
    • Port: 8888
    • Protocol: HTTPS
2. 创建规则,指定目标软件走代理
  • ProfileProxification Rules
  • 点击 Add 新建规则:
    • Name : 如 TargetApp via Charles
    • Applications : 点击 Browse,选择你要抓包的 .exe 文件(如 C:\Program Files\App\app.exe
    • Action : 选择刚创建的代理(127.0.0.1:8888 HTTP
    • Enabled: 勾选

⚠️ 确保该规则优先级高于默认直连规则(可拖动调整顺序)。

3. (可选)禁用其他规则
  • 暂时禁用 Default 规则,或确保你的规则在它之上,避免流量绕过。

三、开始抓包

  1. 启动 Charles(保持运行)
  2. 启动 Proxifier(保持运行)
  3. 启动你要抓包的 目标软件
  4. 在 Charles 中查看请求:
    • HTTP 请求直接显示
    • HTTPS 请求如果 SSL Proxying 配置正确,会显示明文内容
    • 如果看到 CONNECT 但内容是加密的,说明证书未正确安装或域名未加入 SSL Proxying 列表

🔍 常见问题排查

问题 解决方案
HTTPS 显示乱码或 <encrypted> 1. 确认证书已安装到"受信任的根证书颁发机构" 2. 确保域名在 SSL Proxying Locations 中(建议用 *:443
软件无法联网 1. 检查 Proxifier 规则是否匹配正确 .exe 2. 检查防火墙/杀毒软件是否拦截 3. 尝试在 Proxifier 中开启日志(View → Log)看是否成功代理
抓不到某些请求 有些程序使用 自定义 TLS 实现(如 Go、Rust 编译的程序)可能忽略系统证书,需额外手段(如 DLL 注入、Frida 等)
Charles 提示 "SSL Proxying not enabled for this host" 在 SSL Proxying Settings 中添加对应 host:port

✅ 补充建议

  • 抓包前清空 Charles(Edit → Clear
  • 使用 Proxifier 的 Log 功能确认流量是否经过代理
  • 对于 UWP 应用(如 Microsoft Store 安装的软件),Proxifier 可能无法捕获,需改用 Fiddler + Loopback ExemptionWinDivert + 自定义工具

如你能提供具体软件名称(如微信 PC 版、某游戏客户端等),我可以给出更针对性的配置建议。

2.实现原理:

Charles 和 Proxifier 是两个常被搭配使用的网络调试工具,它们在抓包(尤其是对不支持手动设置代理的桌面软件)时各司其职、互补协作。下面从 各自职责 和 底层原理 两个层面详细解释:

一、各自职责(分工)

工具 主要职责


Charles Proxy HTTP/HTTPS 代理服务器 + 流量解析器

• 监听本地端口(如 8888)

• 接收客户端发来的 HTTP/HTTPS 请求

• 解密 HTTPS(通过中间人攻击 MITM)

• 展示明文请求/响应内容(Header、Body、Cookies 等)

Proxifier 强制流量重定向器(强制代理)

• 拦截指定进程的所有 TCP/UDP 出站连接

• 将原本直连的流量强制转发到 Charles 的代理端口

• 让"不支持代理设置"的程序也能走代理

✅ 简单说:

Proxifier 负责"把流量送进 Charles",Charles 负责"看懂并展示流量内容"。

二、工作原理详解

  1. Charles 的原理:HTTP 代理 + TLS 中间人(MITM)

    (1)作为 HTTP 代理

    默认监听 127.0.0.1:8888

    客户端(如浏览器)配置代理后,所有 HTTP 请求会先发给 Charles:

    http

    GET http://example.com/api HTTP/1.1

    Host: example.com

    Charles 再以自己身份向目标服务器发起真实请求,返回结果给客户端。

    (2)处理 HTTPS:CONNECT 隧道 + 伪造证书

    客户端想访问 https://api.example.com,会先发:

    http

    CONNECT api.example.com:443 HTTP/1.1

    Charles 收到后建立 TCP 隧道,并动态生成一张伪造的证书(由 Charles 根证书签发)

    如果客户端信任 Charles 根证书,就会认为这是合法证书,继续通信

    Charles 于是能同时解密客户端 ↔ Charles 和 Charles ↔ 服务器 的流量 → 实现 HTTPS 明文抓包

    🔐 关键前提:客户端必须信任 Charles 的根证书,否则会报证书错误。

  2. Proxifier 的原理:Windows 网络层 Hook + 强制代理

    (1)驱动级网络拦截

    Proxifier 安装一个 NDIS Intermediate Driver 或使用 Winsock LSP / WFP(Windows Filtering Platform)

    能在系统内核层捕获所有进程的出站 TCP/UDP 连接

    即使程序没调用 WinHTTP、没读注册表代理设置,也能被拦截

    (2)强制重定向到代理

    当检测到 satellite.exe 尝试连接 api.elegoo.com:443

    Proxifier 不直接连接目标,而是:

  3. 建立到 127.0.0.1:8888(Charles)的连接

  4. 发送 CONNECT api.elegoo.com:443 HTTP/1.1

  5. 将后续所有原始 TCP 数据流透传给 Charles

    🔄 效果:对目标程序来说,它以为自己在直连服务器;实际上所有流量都经过了 Charles。

    (3)规则匹配机制

    基于:进程路径、目标 IP/域名、端口等

    只有匹配规则的流量才被代理,其他流量可直连(Default 规则)

三、完整数据流(以抓取 Elegoo Satellite 为例)

mermaid

sequenceDiagram

participant App as Elegoo Satellite.exe

participant Proxifier

participant Charles

participant Server as api.elegoo.com

App->>Proxifier: 尝试连接 api.elegoo.com:443 (TCP)

Proxifier->>Charles: 建立连接到 127.0.0.1:8888

Proxifier->>Charles: 发送 "CONNECT api.elegoo.com:443"

Charles->>Server: 建立真实 TLS 连接

Charles-->>Proxifier: 返回 "HTTP/1.1 200 Connection Established"

Proxifier-->>App: 通知连接成功(透明)

App->>Proxifier: 发送加密 TLS 数据

Proxifier->>Charles: 转发 TLS 数据

Charles->>Charles: 用私钥解密 → 得到明文 HTTP

Charles->>Charles: 记录请求内容(Header/Body)

Charles->>Server: 转发或修改请求

Server-->>Charles: 返回响应

Charles-->>Proxifier: 转发响应(可能已解密)

Proxifier-->>App: 返回响应

💡 注意:只有 Charles 能看到明文 HTTP 内容,Proxifier 只看到原始 TCP 流(加密的 TLS)。

四、为什么需要两者配合?

场景 单独 Charles 单独 Proxifier Charles + Proxifier


浏览器抓包 ✅ 支持(可设代理) ❌ 无解析能力 ✅(但没必要)

普通 .NET/Java 应用 ⚠️ 可能支持系统代理 ❌ 无内容解析 ✅

不支持代理的 C++/Go/Electron 应用 ❌ 流量不经过 Charles ❌ 只能看 IP/端口 ✅ 唯一可行方案

🎯 核心价值:让"无法配置代理"的程序也能被 Charles 抓包。

五、局限性与注意事项

  1. 仅支持 TCP(HTTP/HTTPS)

    Proxifier 对 UDP、ICMP、WebSocket(非 HTTP Upgrade)支持有限。

  2. HTTPS 抓包依赖证书信任

    若目标程序使用 证书绑定(Certificate Pinning),即使安装 Charles 证书也无法解密。

  3. UWP 应用可能无法拦截

    Windows Store 应用受沙盒限制,需额外开启 loopback 权限。

  4. 性能开销

    所有流量经两次中转(App → Proxifier → Charles → Internet),延迟略增。

总结

工具 角色 技术原理


Charles 内容解析者 HTTP 代理 + TLS MITM(伪造证书)

Proxifier 流量引导者 系统级网络 Hook + 强制 CONNECT 转发

✅ 组合效果:

"看不见代理设置的程序" → 被 Proxifier 强制引流 → Charles 当作普通浏览器一样解析其 HTTPS 流量 → 开发者看到完整明文请求!

这种组合是逆向工程、API 分析、客户端调试的标准利器。

相关推荐
2501_915106325 小时前
iOS 抓包工具有哪些?不同类型的抓包工具可以做什么
android·ios·小程序·https·uni-app·iphone·webview
学后端的小萝卜头5 小时前
如何通过HTTP Range请求分段获取OSS资源(下载篇)
java·网络·http
AI视觉网奇5 小时前
ue http 请求学习笔记
网络·网络协议·http
集智飞行5 小时前
mavros udp url
网络·网络协议·udp
一颗青果12 小时前
HTTP协议详解
linux·网络·网络协议·http
晚枫歌F19 小时前
TCP协议详解
网络·网络协议·tcp/ip
秋42719 小时前
防火墙基本介绍与使用
linux·网络协议·安全·网络安全·架构·系统安全
sweet丶20 小时前
扩展了解DNS放大攻击:原理、影响与防御
网络协议·安全
科技块儿21 小时前
我应该如何选择并使用IP数据库评估不同地区的定位精度(⊙_⊙?)
网络·网络协议·tcp/ip