王麑 2025-08-12 22:30 采纳率: 98.8%
浏览 0
已采纳

Charles 如何配置代理端口抓包?

**问题描述:** 在使用 Charles 进行抓包时,如何正确配置代理端口以实现对目标应用或设备的流量捕获?请简述配置代理端口的具体步骤,并说明常见问题如端口冲突、代理未生效等的排查方法。
  • 写回答

1条回答 默认 最新

  • 蔡恩泽 2025-08-12 22:30
    关注

    一、Charles 抓包与代理端口配置概述

    在进行网络调试、接口分析或安全测试时,Charles 是一款常用的 HTTP 代理/抓包工具。它通过设置本地代理服务器来拦截和查看客户端与服务器之间的通信。正确配置代理端口是实现流量捕获的关键。

    1.1 Charles 的基本工作原理

    Charles 运行时会在本地启动一个 HTTP 代理服务器,默认端口为 8888。客户端(如浏览器、手机、应用)通过设置代理指向 Charles 的 IP 和端口,其所有 HTTP/HTTPS 请求都会经过 Charles,从而实现抓包。

    1.2 常见使用场景

    • Web 开发调试前后端接口
    • 移动端 App 抓包分析
    • HTTPS 请求解密查看明文
    • 网络请求性能优化分析

    二、配置 Charles 代理端口的具体步骤

    2.1 设置 Charles 本地代理端口

    1. 打开 Charles,点击菜单栏 Proxy → Proxy Settings
    2. 在弹出窗口中,设置 Port 字段,默认为 8888,可自定义
    3. 点击 OK 保存配置

    2.2 配置设备使用 Charles 代理

    设备类型配置方式
    PC 浏览器使用系统代理或浏览器插件设置代理为 Charles 的 IP 和端口
    Android 手机在 Wi-Fi 设置中配置代理,IP 为 Charles 所在电脑 IP,端口为设置的代理端口
    iOS 设备同 Android,也可通过配置描述文件实现自动代理

    2.3 HTTPS 解密配置(可选)

    如需查看 HTTPS 请求内容,需在 Charles 安装证书:

    1. 访问 http://chls.pro/ssl 下载并安装 Charles 根证书
    2. 在 Charles 中启用 SSL Proxying 功能
    3. 为特定域名添加 SSL 代理规则

    三、常见问题排查方法

    3.1 端口冲突问题

    若设置的代理端口已被其他程序占用,Charles 无法启动代理服务。

    排查步骤:

    1. 检查端口占用情况:Windows 使用 netstat -ano | findstr :8888,Mac/Linux 使用 lsof -i :8888
    2. 更换 Charles 代理端口为未被占用的端口(如 8080)
    3. 关闭冲突程序或更改其配置

    3.2 代理未生效

    设备设置代理后仍无法抓包,可能是代理未生效或未指向正确地址。

    排查步骤:

    • 确认设备与 Charles 运行在相同局域网内
    • 检查设备代理设置的 IP 是否为 Charles 主机的局域网 IP
    • 尝试访问 http://ifconfig.me 查看请求是否经过 Charles
    • 关闭系统防火墙或杀毒软件,防止其拦截代理连接

    3.3 HTTPS 请求无法解密

    部分 HTTPS 请求显示为 <plain text>,说明证书未正确安装或未启用 SSL 代理。

    排查步骤:

    1. 确认设备已安装 Charles 根证书
    2. 在 Charles 中启用 Proxy → SSL Proxying 选项
    3. SSL Proxying Settings 中添加目标域名

    四、进阶建议与流程图

    为提升 Charles 使用效率,可结合自动化脚本、重写规则、断点调试等功能。

    以下为 Charles 抓包流程的简化流程图:

    graph TD
        A[启动 Charles] --> B[设置代理端口]
        B --> C{设备是否设置代理?}
        C -->|是| D[访问目标服务]
        C -->|否| E[配置设备代理]
        D --> F[是否启用 SSL 解密?]
        F -->|是| G[安装证书并配置域名]
        F -->|否| H[查看 HTTP 请求]
        G --> I[查看 HTTPS 请求]
        H --> J[完成抓包]
        I --> J
        
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 8月12日