关于 Proxifier 配置文件编辑器
Proxifier 配置编辑器把 .ppx 配置文件拆成结构化表单——代理、代理链、选项和规则——编辑之后再写回一份新的 .ppx。它同时能读 v2 和 v3 两种布局,保留标识目标 Proxifier 版本的根属性,并在生成下载文件之前校验每一条规则的引用。
.ppx 本质上是一份很小的 XML 文档,由四部分组成:Options 选项块、ProxyList 代理列表、ChainList 代理链列表和 RuleList 规则列表。几乎所有路由决策都落在最后一部分,因为规则是从列表顶部往下逐条匹配的,第一条命中且启用的规则就决定了这条连接的去向。在应用里调整顺序意味着在弹窗里一行行拖动;直接改文本又必须手工维护代理和链的数字 id,只要有一个 id 失效,一条本该走代理的规则就会变成导入报错。这个编辑器介于两者之间:字段和文件里的完全一致,同时多了一道校验——只要规则指向配置中已经不存在的 id,就不允许导出。
如何使用这个开发者工具
- 上传你正在用的 .ppx;如果是从零开始,就直接新建一份空白配置。
- 先确定格式区的内容。v3 / v2 开关决定系统服务相关选项是否写入文件,而平台、产品 ID 和最低版本这几个字段,正是 Proxifier 在接受文件之前会读取的根属性。
- 逐个添加代理,填写类型、地址和端口;上游需要认证时再补上用户名和密码。每个代理都有一个数字 id,规则和代理链引用的就是这个 id。
- 只有在流量确实需要多跳转发时才建代理链:先勾选要使用的代理,再用链路顺序旁边的箭头调整实际转发次序。
- 添加规则,并用箭头把具体规则移到宽泛规则之上,列表最后只保留一条兜底规则。
- 点击校验并下载 .ppx。如果某条规则指向的代理或代理链不在配置中,导出会被拦下——这时候被拒绝是真发现了问题,而不是工具出错。
实例:一份把所有流量都送进代理的 v2 配置
下面是从 Proxifier v2 导出的配置,精简到只剩一个代理和一条规则。它唯一的规则把所有连接都交给 100 号代理,连回环和局域网流量也一并送上了上游。输出是在编辑器里切到 v3、把最低版本改成 300、并把一条 Direct 规则挪到兜底规则之前后写出的文件。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProxifierProfile version="101" platform="Windows" product_id="2" product_minver="200">
<Options>
<Resolve>
<AutoModeDetection enabled="false"/>
<ViaProxy enabled="true">
<TryLocalDnsFirst enabled="false"/>
</ViaProxy>
<ExclusionList ExcludeSimpleHostnames="true" ExcludeLocalhost="true" ExcludeSelfHostname="true" ExcludeLocalDomain="true"></ExclusionList>
</Resolve>
<Encryption mode="disabled"/>
<HttpProxiesSupport enabled="true"/>
<HandleDirectConnections enabled="false"/>
<ConnectionLoopDetection enabled="true"/>
<BlockUDP443 enabled="false"/>
</Options>
<ProxyList>
<Proxy id="100" type="SOCKS5">
<Address>proxy.example.com</Address>
<Port>1080</Port>
<Options>48</Options>
<Authentication enabled="true">
<Username>alice</Username>
<Password>s3cret</Password>
</Authentication>
</Proxy>
</ProxyList>
<ChainList/>
<RuleList>
<Rule enabled="true">
<Name>Default</Name>
<Action type="Proxy">100</Action>
</Rule>
</RuleList>
</ProxifierProfile><?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ProxifierProfile version="101" platform="Windows" product_id="2" product_minver="300">
<Options>
<Resolve>
<AutoModeDetection enabled="false"/>
<ViaProxy enabled="true">
<TryLocalDnsFirst enabled="false"/>
</ViaProxy>
<ExclusionList ExcludeSimpleHostnames="true" ExcludeLocalhost="true" ExcludeSelfHostname="true" ExcludeLocalDomain="true">*.corp.example.com
</ExclusionList>
</Resolve>
<Encryption mode="disabled"/>
<HttpProxiesSupport enabled="true"/>
<HandleDirectConnections enabled="false"/>
<ConnectionLoopDetection enabled="true"/>
<ProcessServices enabled="true"/>
<ProcessOtherUsers enabled="true"/>
<BlockUDP443 enabled="false"/>
</Options>
<ProxyList>
<Proxy id="100" type="SOCKS5">
<Address>proxy.example.com</Address>
<Port>1080</Port>
<Options>48</Options>
<Authentication enabled="true">
<Username>alice</Username>
<Password>s3cret</Password>
</Authentication>
</Proxy>
</ProxyList>
<ChainList>
</ChainList>
<RuleList>
<Rule enabled="true">
<Name>Local</Name>
<Targets>localhost; 127.0.0.1; 192.168.*.*; *.local</Targets>
<Action type="Direct"></Action>
</Rule>
<Rule enabled="true">
<Name>Default</Name>
<Action type="Proxy">100</Action>
</Rule>
</RuleList>
</ProxifierProfile>有三处差异值得细看。切到 v3 之后多出了 ProcessServices 和 ProcessOtherUsers,这两个元素在 v2 文件里根本不存在。最低版本是一个独立字段,是手动改成 300 的——选择 v3 并不会替你改动它。新增的 Local 规则被放在兜底规则之上,否则兜底规则会先匹配回环和局域网地址。另外,密码在下载文件里仍然是明文。
规则动作、匹配字段与版本差异
下表列出的都是这个编辑器实际读写的内容。左列是表单里的控件,中间列是它在文件中生成的标记。
| 字段或动作 | 编辑器写出的内容 | 对匹配流量意味着什么 |
|---|---|---|
| Direct 直连 | <Action type="Direct"></Action> | 命中的连接绕开配置中所有代理,按系统默认路径出网。 |
| Proxy 指定代理 | <Action type="Proxy">100</Action> | 命中的连接走元素内写明的那个数字 id 对应的单个代理。 |
| Chain 代理链 | <Action type="Chain">200</Action> | 命中的连接按代理链列出的顺序,依次穿过链中的每一个代理。 |
| Block 拦截 | <Action type="Block"></Action> | 命中的连接被拒绝,针对该目标不会有任何数据离开本机。 |
| 应用匹配 | <Applications>"Chrome"; com.google.Chrome</Applications> | 进程名、Bundle ID 或通配符,用分号分隔。留空时该元素不写入文件,等同于匹配任意应用。 |
| 目标匹配 | <Targets>*.example.com; 192.168.*.*</Targets> | 主机名、IP 或通配符。端口写在条目内部,例如 example.com:443。留空时不写入,等同于匹配任意目标。 |
| 规则顺序 | 在 <RuleList> 中的位置 | 规则自上而下读取,第一条命中且启用的规则生效,它下面的规则不再参与判断。 |
| 停用的规则 | <Rule enabled="false"> | 仍然保留在文件和编辑器里,但匹配时会被跳过。 |
| 仅 v3 的选项 | <ProcessServices enabled="true"/> | 只有选中 v3 时才会写出,ProcessOtherUsers 同理;v2 输出完全不含这两个元素。 |
| 上传时的版本判定 | product_minver="300" | 上传的文件带有这个属性值,或含有任一 v3 专属选项元素时按 v3 读取,否则按 v2 读取。 |
| 根属性 | version="101" platform="Windows" product_id="2" | 从上传文件中原样带入并可编辑。平台或版本留空时会直接拒绝导出。 |
常见问题排查
下载被拒绝,编辑器提示输入无效,但每个字段看上去都填好了。
成因 仍有规则指向配置中不存在的代理或代理链 id。手工改过的文件上传后这种悬空引用会被保留下来,而校验环节存在的意义正是拦住它。
解决办法 打开每一条 Proxy 或 Chain 规则,从下拉框里重新选择目标。另外要注意:在编辑器里删除代理或代理链时,引用它的规则会被静默改成 Direct,所以删除之后请回头确认那些你以为还在走代理的规则。
新加的具体规则始终不生效。
成因 上面压着一条更宽泛的规则。应用匹配和目标匹配都为空的规则会匹配一切,排在兜底规则之下的内容全是无效配置。
解决办法 用箭头把具体规则移到宽泛规则之上。把整个列表理解成「首个命中即生效」的链条,并且只保留一条兜底规则、放在最后。
Proxifier 拒绝导入这个文件,或者导入后少了一些选项。
成因 版本开关和根属性对不上。选择 v3 只会写出 v3 专属的选项元素,product_minver 仍然维持文件原来的取值;而带着 platform="MacOSX" 的配置也不是 Windows 端所期望的。
解决办法 先用目标版本的 Proxifier 导出一份新配置,对照它的四个根属性,把版本、平台、产品 ID 和最低版本改成一致,再重新下载。
回环或局域网流量被送进了上游代理。
成因 兜底规则对 127.0.0.1 和 192.168.x.x 一视同仁地匹配。内置排除开关影响的是名称解析方式,而不是规则做出的路由决定。
解决办法 在兜底规则之上加一条 Direct 规则,目标列表覆盖 localhost、127.0.0.1、你的局域网网段,以及 *.local、*.corp.example.com 这类内网后缀。
配置里带着可用的凭据,却要分享出去或保存在共用设备上。
成因 用户名和密码以明文写在 Authentication 元素中,而「保存到浏览器历史」会在当前浏览器的 localStorage 里最多留下 12 份完整快照。
解决办法 分享前先清空用户名和密码,或直接关闭认证开关,让对方自己填写。在不属于你的机器上不要使用保存到浏览器历史,用完把下载的文件删掉。
适合用这个工具的场景
- 重排很长的规则列表,让具体规则排到兜底规则之上,而且整张列表一眼看得全。
- 把同事导出的配置改写成指向你自己的代理地址和凭据,然后再导入。
- 在保留代理、代理链和规则的前提下,把 v3 配置产出成 v2 可用的文件,或者反过来。
- 在没有安装 Proxifier 的机器上,看清一份配置究竟为哪些应用和目标做了转发。
应该换用别的工具的场景
- 把杂乱的代理地址列表规整成统一格式。那是代理格式化工具的活,整理好的结果再填进这里的代理表单。
- 确认这些代理是否真的可用。批量代理检测工具会对你有权测试的列表做连通性和认证测试;本编辑器不会发起任何连接。
- 转发流量本身。这里下载的只是配置文件,真正拦截连接的是装在机器上的 Proxifier 应用。
隐私与数据处理
上传的文件由浏览器自带的 XML 解析器读取,在内存里以对象形式编辑,再在当前标签页序列化回文本,下载来自本地的 blob 链接。没有任何内容发送到本站,因此也不存在需要我们删除的服务端副本。但有两点仍需注意。「保存到浏览器历史」会把整份配置的快照——包括你填写的密码——写进当前浏览器的 localStorage,最多保留 12 条,所以不要在共享或受管控的设备上使用它。另外,下载得到的 .ppx 会把凭据以明文写在 Authentication 元素里:密码加密下拉框只是给 Encryption 元素写上一个 mode 属性,在这里并不会真的加密任何内容。请把下载下来的文件当作机密文件对待。
相关开发者工具
常见问题
不装 Proxifier 也能编辑配置文件吗?
可以。.ppx 就是纯 XML,本页的解析、编辑和重新序列化全部在浏览器内完成。没有应用本体时做不到的,是让配置真正生效,以及测试其中的代理是否可用。
v2 和 v3 的配置都支持吗?
都支持。上传的文件带 product_minver="300" 或含有任一 v3 专属选项元素时按 v3 读取,否则按 v2 读取。之后也可以随时切换开关:v3 输出会补上系统服务和其他用户两个选项,v2 输出则不写入,两种情况下代理、代理链和规则都保持不变。
我的代理密码会被上传吗?
不会。解析、编辑和序列化都在当前标签页内完成,文件通过本地 blob 下载。但密码会以明文写进下载的配置文件,「保存到浏览器历史」也会在你自己设备的 localStorage 里留一份副本。
为什么 Proxifier 不认我下载的文件?
先看扩展名:导入对话框按 .ppx 过滤,部分浏览器在保存时会补上 .txt 或 .xml。其次把四个根属性和你本机导出的配置逐一对照,平台或最低版本不匹配是第二常见的原因。
能把 Proxifier 配置转成 ProxyBridge 的吗?
没法自动转,两者的模型也对不齐。代理定义以及 Direct、Proxy、Block 三类规则可以手工搬进本站的 ProxyBridge 配置编辑器,但代理链在那边没有对应概念,Proxifier 特有的选项也带不过去。
代理条目里的 Options 值是什么?
那是 Proxifier 自己维护的数字标志位,编辑器把它当作自由文本保留,因此上传的值可以原样往返。在这里新增的代理默认是 0;除非你是刻意从应用导出的配置里抄一个值过来,否则不要改动它。
本站和 Proxifier 有关联吗?
没有。这里只是一个独立的 .ppx 文件格式编辑器。Proxifier 是其厂商的产品,该名称及相关商标归各自权利人所有。