Proxyman是什么、设置及调试流量的功能

作者: IT Sectr 发布日期: 2026-05-08 阅读时间: 8 分钟

Proxyman是一个原生的macOS和iOS代理客户端,用于在应用程序开发过程中截获、查看和修改HTTPS流量。据Proxyman官方网站(2025)数据,该工具被超过10,000家公司使用,并支持所有现代版本的iOS和macOS。代理客户端提供免费基础版,与Charles Proxy相比拥有更现代的界面、支持JavaScript脚本实时修改数据以及与iOS模拟器的内置兼容。

核心要点

  • Proxyman是一个原生的macOS和iOS代理客户端,拥有现代化UI和广泛的流量调试能力
  • HTTPS代理通过为iOS模拟器自动安装证书实现,相比Charles更简单地配置
  • Scripting—Proxyman独特功能,允许通过JavaScript脚本修改请求和响应,无需Breakpoints
  • 与iOS集成同时支持模拟器(自动)和通过WiFi Proxy的物理设备
  • 免费版包含基础的流量截获功能,无时间限制

什么是Proxyman?

Proxyman是一个专为Apple生态系统设计的HTTPS代理客户端。与跨平台解决方案不同,Proxyman使用原生的macOS框架(Swift、AppKit),从而提供高性能和与系统代理机制的无缝集成。该工具支持macOS 11+和iOS 14+。

市场定位

Proxyman定位为Apple生态系统开发者的现代替代品,取代Charles Proxy。主要优势:免费版拥有完整基础功能、原生界面符合macOS设计系统、为iOS模拟器自动配置无需额外操作。Proxyman自2018年以来积极发展,并与开发者社区拥有开放的反馈系统。

支持的平台

Proxyman运行在macOS(原生应用,非Electron)上,并为iOS提供辅助应用。物理设备(iPhone、iPad)通过WiFi Proxy配置,类似Charles。iOS应用(Proxyman iOS companion)允许在设备上直接查看流量,无需连接电脑——这是Proxyman独有的功能。

Proxyman是如何工作的

Proxyman基于标准的MITM原理工作:应用被配置为系统代理,所有HTTP/HTTPS流量均通过其传输。该工具使用原生的macOS Network Extension机制来截获流量,无需为iOS模拟器手动配置代理。

macOS上的截获机制

在macOS上,Proxyman使用Apple Network Framework进行透明的流量截获。激活代理后,Proxyman创建一个虚拟网络接口,所有应用的流量都经过它。对于iOS模拟器,配置在启动时自动完成——Proxyman通过Xcode检测正在运行的模拟器,并重定向其流量,无需在设置中手动设置代理。

HTTPS流量处理

为了解密HTTPS,Proxyman在macOS系统钥匙串中安装本地根证书。首次启动时,程序会提示安装证书并信任它。所有特定域名的证书都是实时生成的,并由Proxyman的根证书签署。对于iOS模拟器,证书在启动代理时自动安装。

js
// 修改响应的Proxyman脚本示例
// Scripting:将响应状态改为500以测试错误
function onResponse(request, response) {
    if (request.url.includes("/api/users")) {
        response.statusCode = 500;
        response.body = JSON.stringify({
            error: "Internal Server Error",
            code: "SERVER_TIMEOUT"
        });
    }
    return response;
}

Proxyman的主要功能

Proxyman提供独特的功能组合,使其与其他代理工具区分开。特别强调脚本修改流量和原生性能。

Scripting—通过JavaScript进行修改

Proxyman的主要特点——支持JavaScript脚本修改请求和响应。开发者不必像Charles那样通过Breakpoints手动编辑每个请求,而是可以编写脚本,自动应用到特定URL。脚本可以完全访问头部、请求和响应体、状态码和元数据。这可以自动化常规操作:替换授权令牌、修改头部、模拟错误进行测试。

流量过滤和组织

Proxyman提供基于规则的灵活的过滤系统。您可以创建配置文件,自动按域名、内容类型或状态码对流量进行分组。例如,您应用程序API的所有请求自动归入一个独立组,静态内容(CSS、JS、图片)则归入另一组。这在调试时尤其方便,可以只关注特定端点。

功能ProxymanCharles Proxy备注
ScriptingJavaScript无需Breakpoints自动修改
iOS Simulator自动手动配置Proxyman通过Xcode检测模拟器
免费版30天试用Proxyman没有时间限制
平台macOS, iOSWindows, macOS, LinuxCharles跨平台,Proxyman仅Apple
HAR导出两者都支持标准格式

时间线可视化

Proxyman以时间图的形式显示请求时间线,每个请求用一条彩色条带表示,包含持续时间、状态和大小信息。时间线是交互式的:可以选择时间范围只查看该时段的请求。每个请求均可查看阶段拆分:DNS、Connect、TLS Handshake、Request、Response。

Proxyman iOS Companion

Proxyman的独特能力——独立的iOS应用,可以安装在iPhone或iPad上。它允许在设备上直接查看网络流量,无需连接电脑。流量实时显示,可以过滤和搜索。该应用在外出测试时尤其有用,当时无法使用电脑。

为移动设备配置Proxyman

Proxyman为iOS和Android提供不同的配置方法。由于与Xcode的原生集成,为iOS模拟器的配置几乎是自动的。对于物理设备和Android,则需要手动配置。

为iOS Simulator配置

最简单的方法:启动Proxyman,打开iOS Simulator选项卡,点击Start。Proxyman将通过Xcode自动检测正在运行的模拟器,并配置代理。HTTPS证书也自动安装。无需额外操作——模拟器的流量立即显示在Proxyman窗口中。这是相比Charles的显著优势,因为Charles需要手动配置代理。

为物理iOS设备配置

对于iPhone或iPad:将设备连接到与电脑相同的WiFi网络。在设备的WiFi设置中,指定HTTP Proxy:电脑的IP地址和端口9090(Proxyman的默认端口)。然后打开Safari,访问http://proxy.man/ssl安装证书。在iOS 10.3+上,在设置→通用→关于本机→证书信任设置中启用对证书的信任。

为Android配置

Android设备的配置与iOS类似:使用电脑的IP地址和端口9090配置WiFi Proxy。对于HTTPS,需要通过浏览器在http://proxy.man/ssl安装证书。在Android 7+上,应用程序的调试构建需要一个包含对用户证书信任的network_security_config.xml文件。对于Android模拟器,请使用主机IP地址(通常为10.0.2.2)代替电脑的IP地址。

xml
<!-- 使用Proxyman的Android network_security_config.xml -->
<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <debug-overrides>
        <trust-anchors>
            <certificates src="user" />
            <certificates src="system" />
        </trust-anchors>
    </debug-overrides>
    <base-config cleartextTrafficPermitted="false">
        <trust-anchors>
            <certificates src="system" />
        </trust-anchors>
    </base-config>
</network-security-config>

Proxyman与Charles Proxy对比

在Proxyman和Charles Proxy之间的选择取决于团队的具体需求和开发平台。让我们来研究关键差异,帮助开发者做出明智的决定。

性能和原生性

Proxyman使用Swift和AppKit编写,提供原生的macOS性能和极低的内存消耗。Charles使用Java(Eclipse RCP)编写,虽然提供了跨平台能力,但在macOS上内存消耗稍高,界面也非原生。对于Apple生态系统的开发者而言,Proxyman通常感觉更响应。

功能差异

Charles提供更成熟、更广泛的工具集:带可视化编辑器的Rewrite Rules、重复请求的Repeat、Map Local/Remote、会话自动保存。Proxyman以更现代的功能回应:JavaScript编程、自动模拟器配置、在设备上查看流量的iOS伴侣。Charles在复杂的自动化场景(Rewrite、Repeat)中具有优势,而Proxyman在通过脚本快速灵活地修改方面更胜一筹。

价格和许可

Proxyman提供免费版,基础功能无时间限制。Pro版(订阅~$12/年或一次性购买~$59)解锁高级功能:脚本、过滤器、导出。Charles的许可费为$50,提供30天试用。对于独立开发者,Proxyman更实惠;对于企业环境,差异微乎其微。

常见问题

Proxyman是免费的吗?

Proxyman有免费版,提供截获HTTP/HTTPS流量的基础功能,无时间限制。付费订阅(Pro和Team)添加脚本、高级过滤器、导出到HAR和优先支持。对于大多数调试任务,免费版就够了。

Proxyman支持Android吗?

Proxyman是一个原生的macOS应用,但可以像Charles那样通过WiFi Proxy截获来自Android设备的流量。Android设备配置为HTTP代理,使用电脑的IP地址和Proxyman端口。对于Android模拟器,使用IP 10.0.2.2。HTTPS证书单独安装。

如何在Proxyman中修改服务器响应?

有两种方法:Local Edit—双击请求,选择Response选项卡,手动编辑,然后点击Execute按钮将修改后的响应发送到应用。Scripting—编写JavaScript脚本,在每次请求时自动应用更改到指定的URL。

可以从Proxyman导出数据吗?

可以。Proxyman支持导出为以下格式:HAR(HTTP Archive)、Proxyman Session (.pxm)、Curl Command(针对每个请求)、纯文本。可以通过请求或请求组的右键菜单导出。HAR格式与Charles Proxy、Chrome DevTools和在线查看器兼容。

Proxyman如何与iOS Simulator一起工作?

Proxyman通过Xcode自动检测正在运行的iOS模拟器,并重定向其流量,无需手动配置。启动代理时,Proxyman通过macOS上的Network Extension应用系统代理,该代理自动适用于所有模拟器。HTTPS证书也自动安装。

总结

  • Proxyman是一个原生的macOS和iOS代理客户端,拥有现代的Swift界面,作为Apple生态系统中Charles Proxy的替代品
  • JavaScript脚本—独特功能,可以自动修改请求和响应,无需Breakpoints,加快边界情况的测试
  • 自动配置通过Xcode为iOS模拟器配置,无需手动设置代理——相比Charles的关键优势
  • iOS伴侣—独立应用,可在iPhone或iPad上直接查看流量,无需连接电脑
  • 性能得益于原生的Swift/AppKit框架——相比Java解决方案更低的内存消耗
  • 免费版提供完整基础功能,无时间限制,适合大多数调试任务
  • 对于跨平台开发(Windows + macOS + Linux),请选择Charles Proxy;对于纯Apple生态系统,Proxyman提供更好的用户体验

我们将开发一款交钥匙移动应用程序

IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。

讨论项目

另请阅读