命令行
使用 proxyman-cli 在终端中控制 Proxyman for macOS:导出和导入规则、切换工具与系统代理、导出日志并管理证书。
Proxyman for macOS 自带 proxyman-cli,这是一个命令行工具,可用于在终端和你自己的脚本中控制 Proxyman ✅。
该工具位于 /Applications/Proxyman.app/Contents/MacOS/proxyman-cli。
要查看当前已安装版本的全部命令,请运行:
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli --help
1. 导出 Proxyman 配置
导出所有调试工具的规则,例如 SSL Proxying List、Breakpoint、Map Local、Scripting、Block List、Allow List、Reverse Proxy 和 Network Conditions。
$ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export -h
OVERVIEW: Export all debugging tools rules (Breakpoint, SSL Pinning, Map Local, Map
Remote, Scripting, etc).
USAGE: proxyman-cli export [--mode <mode>] --output <output>
OPTIONS:
-m, --mode <mode> Export Mode (all = "All debugging tools's rules", enabledRules
= "Only enabled rules"). (default: all)
-o, --output <output> A Output file to save the config to.
--version Show the version.
-h, --help Show help information.
默认情况下,export 命令会导出所有规则。如需排除特定规则,请取消勾选各调试工具中的 “Enabled” 列,并使用 -m enabledRules
示例:
- 导出所有调试工具规则:
$ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export -o ~/Desktop/data.json
- 仅导出已启用的规则:
$ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export -m enabledRules -o ~/Desktop/data.json
2. 导入 Proxyman 配置
导入之前通过 export 命令导出的 Proxyman 调试工具规则。
$ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli import -h
OVERVIEW: Import config to Proxyman.
USAGE: proxyman-cli import [--mode <mode>] --input <input>
OPTIONS:
-m, --mode <mode> Import Mode (append = "Append to the existing rules"),
override = "Import and Replace all existing rules". (default:
append)
-i, --input <input> A input file to import.
--version Show the version.
-h, --help Show help information.
默认情况下,导入的新规则会追加到现有的调试规则中。如需覆盖所有规则,请使用 -m override
示例:
- 以追加方式导入所有调试规则:
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli import -i ~/Desktop/data.json
- 导入,但覆盖所有现有规则:
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli import -m override -i ~/Desktop/data.json
3. 激活/解绑许可证
激活和解绑许可证的命令,请参阅许可证页面。
4. 切换 HTTP 系统代理
从 Proxyman 4.8.0 版本开始,可以通过命令行开启或关闭 macOS 系统代理。Raycast 扩展即通过此命令实现。
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli proxy on
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli proxy off
参考:https://github.com/ProxymanApp/Proxyman/issues/1626#issuecomment-1545862020
5. 清除会话
- 可通过命令行清除当前会话。Proxyman 4.12.0 及更高版本可用。
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli clear-session
6. 切换调试工具
- 通过命令行切换 Breakpoint、Map Local 和 Scripting 工具。Proxyman 4.12.0 及更高版本可用。
# Scripting
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli scripting on
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli scripting off
# Map Local
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli maplocal on
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli maplocal off
# Breakpoint
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli breakpoint on
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli breakpoint off
- 从 Proxyman macOS 6.3.0 版本开始,还可以用同样的方式切换以下工具:
map-remote、block-list、allow-list、reverse-proxy、network-condition、no-caching和dns-spoofing。 - 使用
open代替on或off可打开工具窗口,例如proxyman-cli map-remote open。no-caching仅支持on和off。 - 运行这些命令时,Proxyman 必须处于运行状态。
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli map-remote on
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli block-list off
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-condition open
7. 通过命令行安装代理辅助工具
从 Proxyman macOS 4.12.0 版本开始,无需图形界面即可安装辅助工具。
sudo /Applications/Proxyman.app/Contents/MacOS/proxyman --install-privileged-components
8. 导出 Proxyman 日志
Proxyman macOS v5.11.0+ 现已支持:
- 导出全部(ProxymanSession 格式)
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m all -o "~/desktop/output"
- 导出指定域名(仅填写主机名,不含协议、端口、路径和查询字符串)
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m domains -o "~/desktop/output" --domains 'api.twitter.com' --domains 'www.producthunt.com'
从 Proxyman macOS 5.20.0+ 起,可导出为 Raw 或 HAR 格式。
- 导出全部 - RAW 请求/响应格式
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m all -o "~/desktop/output" --format raw
- 导出全部 - HAR 格式
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m all -o "~/desktop/output" --format har
- 导出指定域名 - RAW 请求/响应格式
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m domains -o "~/desktop/output" --domains 'api.twitter.com' --domains 'www.producthunt.com' --format raw
- 导出指定域名 - HAR 格式
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m domains -o "~/desktop/output" --domains 'api.twitter.com' --domains 'www.producthunt.com' --format har
从 Proxyman macOS 6.2.0+ 起,可添加 --since <flow_id>,仅导出从该 flow ID 开始的记录(包括该 ID 对应的记录)。该参数适用于所有导出格式。
--format 支持的格式包括 proxymansession(默认)、har 和 raw。
9. 导入自定义根证书
- ✅ 将自定义 p12 根证书导入 Proxyman
- 自动在系统钥匙串中信任该证书(需要 sudo 权限)
- 自 Proxyman macOS 5.15.0 版本起可用
安装并信任
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli install-root-cert <certificate_path> --password <your_cert_password> --trust
仅安装,不信任(可能需要在钥匙串中手动信任)
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli install-root-cert <certificate_path> --password <your_cert_password>
10. 导出当前 IP 和端口
- 自 Proxyman macOS 6.7.0 版本起可用
- 以 JSON 格式获取当前监听的 IP 和端口
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli proxy-host
输出包含 ip 和 port 字段,例如 {"ip":"192.168.1.10","port":9090}。如果 Proxyman 仅监听 localhost,则 IP 为 127.0.0.1。
11. 添加、删除和替换自定义证书(客户端和服务器)
- 自 Proxyman macOS 6.10.0 版本起可用 ✅
- 支持带密码的 P12 证书
- 对于客户端证书,
--port默认为443
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli custom-cert add server ~/Desktop/mycert.p12 --password 123
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli custom-cert add client ~/Desktop/mycert.p12 --password 123 --host myserver.com --port 443
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli custom-cert replace server ~/Desktop/mycert.p12 --password 123 --name mycert.p12
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli custom-cert replace client ~/Desktop/mycert.p12 --password 123 --host myserver.com --port 443
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli custom-cert remove server --name mycert.p12
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli custom-cert remove client --host myserver.com --port 443
12. External Proxy 命令行
- Proxyman macOS 6.12.0 及更高版本 ✅
启用
在不修改已保存配置的情况下启用 External Proxy:
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy enable
- 启用并配置代理模式:
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy enable http --host proxy.example.com --port 8080
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy enable https --host proxy.example.com --port 8443
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy enable socks --host proxy.example.com --port 1080
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy enable pac --url https://example.com/proxy.pac
禁用
完全禁用 External Proxy 功能:
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy disable
- 仅禁用单一代理模式:
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy disable http
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy disable https
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy disable socks
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy disable pac
打开设置
在 Proxyman 中打开 External Proxy 设置窗口:
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy open
13. 所有调试工具的增删改查
仅适用于 Proxyman macOS 6.14.0 及更高版本
支持的工具
block-list、allow-list、ssl-proxying、map-local、map-remote、breakpoint、scripting、network-condition、reverse-proxy、protobuf 和 dns-spoofing。
常用命令
将 <tool> 替换为上述受支持的工具之一,并将 <id> 替换为通过 list 或 get 获取的规则 ID。
# Read rules
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> list
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> list --enabled true
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> get <id>
# Change one rule
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> update <id> --name "New name"
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> delete <id>
# Turn a whole tool on or off
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> enable
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> disable
# Turn one rule on or off
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> enable <id>
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> disable <id>
enable <id> 需要时也会同时开启对应工具。关闭工具不会改变各规则自身的启用设置。更新操作只会修改所传入的字段;删除操作会立即移除规则。
map-local、map-remote、breakpoint 和 scripting 还提供 folders 命令用于管理规则文件夹,它们的 list 和 create 命令均接受 --folder <name or id> 参数。运行 /Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules map-local folders --help 查看相关选项。
创建规则
以下为最简的创建命令。可选参数可用于设置更多字段。运行 /Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> create --help 查看全部参数。
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules block-list create https://ads.example.com/*
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules allow-list create https://api.example.com/*
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules ssl-proxying create '*.example.com' --list include
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules map-local create https://api.example.com/* --path ./response.json
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules map-remote create https://old.example.com/* https://new.example.com/
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules breakpoint create https://api.example.com/* --phase both
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules scripting create https://api.example.com/* --script-file ./rule.js
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules network-condition create --profile 3g
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules reverse-proxy create https://upstream.example.com --local-port 8080
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules protobuf create https://api.example.com/* --request-type package.Request
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules dns-spoofing create example.com 127.0.0.1
规则的常用参数包括 --name、--enabled true|false、--method、--match wildcard|regex,以及工具支持时可用的 --include-subpaths true|false。名称为可选项。若省略可选值,Proxyman 将使用该工具的默认值。
JSON 输入
创建和更新时,可使用 --input <file> 传入 JSON 对象;使用 --input - 从标准输入读取 JSON。请勿将 --input 与字段参数混用。
printf '%s' '{"url":"https://api.example.com/*","name":"Local API","enabled":true}' \
| /Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules map-local create --input -
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules map-local update <id> --input ./map-local-change.json
Proxyman 未运行时,命令会返回 JSON,其中 ok 为 false,错误代码为 app_not_running。输入错误的退出码为 2,其他错误的退出码为 1。
14. 企业策略
MCP(Proxyman macOS 6.15.0+)
- 即使 Proxyman 已关闭,也可以启用或禁用 MCP 功能
- 如果通过命令行禁用了 MCP,用户将无法在设置中重新启用
禁用 MCP 并锁定设置中的开关:
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli mcp off
启用 MCP 并解锁开关:
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli mcp on
15. HTTP 版本
读取或修改全局 HTTP/2 策略。请保持 Proxyman 处于打开状态;即使 MCP 已禁用,这些命令仍可正常工作。
# Read the current policy
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli http-version status
# Prefer HTTP/2, with HTTP/1.1 fallback
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli http-version set prefer_http2
# Turn the HTTP/2 preference off
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli http-version set http1_only
HTTP/2 默认关闭。修改策略会关闭当前活动的 HTTP、WebSocket 和 Server-Sent Events 连接,并刷新 Compose 客户端。再次设置当前策略不会关闭连接。
该策略并不能证明某个请求实际使用了哪种协议。请检查捕获到的请求及上游连接。使用 Network Extension 捕获时,即使设置为 http1_only,仅提供 h2 的客户端仍会保持 HTTP/2。
两个命令均返回 JSON。status 的结果包含 httpVersionMode 和 http2Enabled;set 的结果还包含 previousMode 和 changed。例如,从 HTTP/1 切换为 HTTP/2 优先时,返回结果如下:
{
"success": true,
"data": {
"httpVersionMode": "prefer_http2",
"http2Enabled": true,
"previousMode": "http1_only",
"changed": true
}
}
16. 管理 Network Extension
通过命令行管理 Network Extension 的安装与捕获。请保持 Proxyman 处于打开状态;无需启用 MCP。
Network Extension 需要直接下载版的 Proxyman 及 macOS 26 或更高版本。安装和捕获需要 Proxyman PRO。状态查询和卸载无需 PRO 即可使用。Setapp 不支持 Network Extension。
# Read installation and capture status without changing either
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension status
# Install or update the bundled extension without enabling capture
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension install
# Enable capture, installing the extension if necessary
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension enable
# Stop capture and keep the extension installed
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension disable
# Retry requested installation or capture after resolving an error
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension retry
# Stop capture and remove the extension and its saved network configurations
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension uninstall
install 在捕获已关闭时会保持关闭状态。enable 会启动捕获,并关闭基于辅助工具的系统代理。Network Extension 捕获开启时,无法启用系统代理。
disable 和 uninstall 会通过提供程序关闭现有连接,包括直接 TCP 连接。之后,系统代理将遵循 Auto Override System Proxy Settings at Launch 设置。
macOS 可能会要求批准或重启。请完成相应步骤,然后再次运行 network-extension status。命令成功仅表示请求已被接受,并不代表安装或捕获已完成。如果操作处于忙碌状态或超时,请先查看状态,再重复执行。
HTTPS 解密仍需要受信任的 Proxyman 证书以及匹配的 SSL Proxying 规则。请让客户端重新连接,以便捕获新建立的连接。
读取 JSON 状态
| 字段 | 含义 |
|---|---|
supported | 当前应用和 macOS 版本是否支持 Network Extension。不支持的主机会返回 false,并拒绝所有更改。 |
installed, installedBuild, bundledBuild | macOS 报告的安装状态,以及随正在运行的应用一同打包的构建版本。 |
systemExtensionEnabled | macOS 是否报告已安装的扩展已启用。 |
proAvailable | Proxyman PRO 是否可用于安装和捕获。 |
captureEnabled | 是否已请求开启捕获。 |
captureActive | 提供程序是否已确认捕获会话。 |
state, message | 应用当前状态及可读的说明。 |
operationPending | 安装、移除或捕获启动是否正在进行中。 |
approvalRequired, restartRequired | 是否需要批准或重启。 |
removalPending | macOS 中是否仍有等待移除的扩展记录,包括应用重新启动后的情况。 |
systemProxyEnabled | Proxyman 当前是否报告 macOS 系统代理已启用。 |
受支持的主机会在 data 下返回上述字段。disable 不会等待安装查询,因此其响应中的 installed 为 null。如需检查最新安装状态,请使用 status。
JSON 输出与退出码
http-version 和 network-extension 命令组返回的 JSON 响应包含 success;可用时包含 data,失败时包含 error。
0:读取成功,或更改已被接受。请通过 Network Extension 状态确认是否已完成。1:命令执行失败、Proxyman 未运行或命令超时。64:命令行参数无效。解析错误和帮助信息均为纯文本。
通过以下命令检查已安装应用支持的语法:
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli http-version --help
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension --help