Proxifier + SOCKS5:只让你选择的应用通过代理路由
Proxifier 可让你按应用使用 SOCKS5 代理,而非全局使用。如何添加代理、决定 DNS 解析位置、编写行为符合预期的代理化规则,并修复困扰大多数用户的泄漏问题。
大多数代理设置都是全有或全无。要么你更改系统设置,所有流量都走代理;要么你配置单个应用,其他一切都不受影响。Proxifier 处于中间位置:它在套接字层拦截出站连接并应用规则——这个应用使用代理,那个应用直连,这个主机完全阻止。
这使得它天然适合 SOCKS5,因为 SOCKS5 可以承载任何 TCP 流量,而不仅仅是 HTTP。本指南涵盖设置步骤、导致大多数泄漏的 DNS 决策,以及防止你代理本不打算代理的内容的规则。
开始前有一个注意事项:不同 Proxifier 版本和平台之间,菜单名称会略有差异。下面的概念是稳定的,因此如果某个标签不完全匹配,请寻找最接近的等效项。
Proxifier 能提供哪些系统设置无法做到的功能
- 应用级路由。 让一个浏览器走代理,其他所有内容保持直连。
- 目标级路由。 将发往特定域名或 IP 范围的流量走代理,其余直连。
- 协议无关代理。 任何 TCP 应用都可以通过 SOCKS5 代理路由,即使它自身没有代理设置。
- 链式代理。 先通过一个代理路由,然后再通过另一跳。
- 流量日志。 你可以准确看到哪个连接去了哪里,这在发生泄漏时非常宝贵。
开始之前:收集代理详细信息
从你的代理提供商处,你需要:
- 主机名或 IP 地址,以及端口。
- 协议:SOCKS5。
- 如果需要身份验证,则提供用户名和密码。
- 该端点提供的是轮换 IP 还是粘性会话,因为这决定了有状态的多步骤流程是否可行。
提前决定 DNS 是否应在代理处解析。使用 SOCKS5 时,在本机解析主机名是位置泄漏最常见的原因。大多数提供商通过客户端设置或用户名标志来启用远程 DNS。
步骤 1:将 SOCKS5 代理添加到 Proxifier
- 打开 Profile 菜单,选择 Proxy Servers。
- 点击 Add。
- 输入地址和端口,并将协议设置为 SOCKS Version 5。
- 如果代理需要身份验证,请启用并输入凭据。
- 在基于它构建任何规则之前,使用内置的 Check 按钮确认代理有响应。
如果检查失败,原因几乎总是以下三种之一:端口错误;凭据因包含特殊字符而需要进行 URL 编码;或者提供商将连接限制为白名单 IP 地址。
步骤 2:决定如何处理 DNS
这是大多数人会跳过的设置,也正是悄悄产生泄漏的设置。在名称解析设置中(通常位于 Profile 下的 Name Resolution),你需要在本地解析主机名或在代理处解析之间做出选择。
- 通过代理解析,当你的目标是隐藏你的真实位置和 DNS 查询时。这是使用
socks5h://而不是socks5://在 SOCKS5 中的等效做法。 - 本地解析,仅当你特别需要本地 DNS 行为时,例如企业网络中的拆分视界(split-horizon)名称。
如果网站看到的地理位置与你的真实位置匹配,而不是与你的代理位置匹配,这就是第一个要检查的设置。
步骤 3:编写代理化规则
规则位于 Profile 下的 Proxification Rules。它们按顺序评估,第一个匹配项生效,因此顺序比任何单个条目都重要。
一个合理的起始结构:
- 本地地址直连。 回环地址和你的局域网绝不应走代理。
- 代理服务器本身直连。 如果没有这条,某些配置会尝试将代理流量再发回代理。
- 对你关心的特定应用使用代理。 每个可执行文件一条规则,动作设置为你自己的 SOCKS5 代理。
- 其他所有内容直连或阻止。 有意识地选择你希望默认采用两者中的哪一个。
每条规则可以匹配:
- 应用程序——可执行文件名称或路径。
- 目标主机——域名、通配符或 IP 范围。
- 目标端口——例如仅将端口 443 通过代理发送时很有用。
保持列表简短。当出现问题时,包含三十个相互重叠条目的规则集根本无法推理。
步骤 4:验证流量确实流向你认为的位置
验证分为三部分:
- 在流量日志中,确认你刚建立的连接归属于 SOCKS5 代理,而不是 Direct。
- 从应用程序中,检查公共 IP 检查页面报告的 IP。
- 从命令行中,将直接请求与通过代理的请求进行比较:
# 直连
curl -s https://api.ipify.org; echo
# 通过 SOCKS5 代理并使用远程 DNS 解析
curl -s --proxy socks5h://user:[email protected]:1080 https://api.ipify.org; echo
如果这两个命令的结果不一致,说明你的规则并没有匹配到你认为它匹配的应用程序。这通常是顺序问题,或者规则匹配的是启动器,而不是实际进行网络连接的进程。
常见的 Proxifier + SOCKS5 问题
- 规则匹配的是启动器,而不是进程。 浏览器和运行时通常会生成一个单独的子进程来打开套接字。应匹配实际建立连接的进程。
- DNS 泄漏。 上面已讨论过,但它仍然是“我的 IP 变了,可网站仍然知道我在哪里”的第一大原因。
- 代理客户端本身被代理了。 使用过宽泛的应用规则很容易造成循环。
- 与 VPN 或杀毒软件过滤驱动冲突。 分层网络拦截很脆弱。如果 VPN 客户端正在运行,请先单独测试 Proxifier。
- 沙盒化应用程序。 在受限沙盒中运行的应用,可能无法通过与普通桌面软件相同的机制被拦截。
什么时候你根本不需要 Proxifier
如果只有浏览器需要代理,浏览器级配置更简单。如果你需要为命令行工具使用 SOCKS5,SSH 动态转发结合 proxychains 之类的包装器也能起到类似作用。如果你希望设备上的每个应用都被路由,且不需要按应用规则,VPN 是更干净的工具。Proxifier 特别适用于需求是选择性的、按应用路由的场景。
要点总结
先添加 SOCKS5 代理并确认其有响应,有意识地决定 DNS 是在本地解析还是在代理处解析,然后保持规则列表简短且有序,使第一个匹配项始终是你所期望的。通过流量日志和 IP 检查进行验证——并将两者之间的任何不一致视为规则匹配错误,而不是代理问题。