Skip to content
文章 / 2 分钟阅读

如何在 Chrome 中使用 SOCKS5 代理:扩展程序、系统设置和 SSH 隧道

Chrome 没有内置的 SOCKS5 设置。以下是让 Chrome 通过 SOCKS5 代理路由的实用方法——系统设置、命令行标志、扩展程序和 SSH 隧道——以及如何验证它并避免 DNS 和 WebRTC 泄漏。

如果你曾经打开 Chrome 的设置并搜索 SOCKS5 代理选项,你就已经知道结果:它不存在。与 Firefox 不同(Firefox 在其连接设置中有专门的 SOCKS5 主机字段),Chrome 有意省略了按浏览器配置代理的 UI。这并不意味着你无法在 Chrome 中使用 SOCKS5——只是意味着你必须在几种间接途径中选择一种。本指南涵盖了每种实用方法、权衡取舍,以及真正重要的泄漏检查。

为什么 Chrome 没有原生 SOCKS5 设置

在 Windows 和 macOS 上,Chrome 将代理配置委托给操作系统。在 Linux 上,它遵循环境变量和命令行标志。原因很简单:浏览器级别的代理设置会与企业系统策略和其他应用程序冲突。但副作用是,Windows 系统代理对话框不支持 SOCKS5,这使得 SOCKS5 在该平台上变得很别扭。

当你通过命令行标志或代理扩展程序告知 Chrome 时,Chrome 确实理解 SOCKS5。重要的区别在于 Chrome 解析什么:当你将 Chrome 指向 socks5:// 代理时,它会将主机名发送给代理进行远程 DNS 解析(相当于 curl 等工具中的 socks5h 方案)。这正是你在地理位置解锁和防止 DNS 泄漏时想要的。

方法 1:系统级 SOCKS5 代理(仅 macOS 和 Linux)

在 macOS 和 Linux 上,你可以设置系统级 SOCKS5 代理,Chrome 会遵循它。在 Windows 上,此方法不起作用,因为 Windows 代理设置只接受 HTTP 和 HTTPS。

macOS

  1. 打开 系统设置(较旧 macOS 上为 系统偏好设置)。
  2. 前往 网络 → 选择你的活动连接 → 详细信息 → 代理。
  3. 启用 SOCKS 代理 并输入主机和端口(例如 127.0.0.1:1080)。
  4. 点击 好 和 应用。

现在 Chrome 将通过 SOCKS5 代理路由所有流量。请注意,这会影响所有遵循系统代理设置的应用程序,而不仅仅是 Chrome。

Linux

Linux 上的 Chrome 会读取 all_proxy 环境变量。在启动 Chrome 之前设置它:

export all_proxy="socks5://127.0.0.1:1080"
google-chrome

如果这对所有流量都不起作用,你可以改用 --proxy-server 标志(见方法 2)。

方法 2:Chrome 命令行标志(所有平台)

无论操作系统如何,强制 Chrome 通过 SOCKS5 代理的最可靠方法是使用代理服务器标志启动它。先关闭所有 Chrome 实例,然后运行:

# macOS
/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --proxy-server="socks5://127.0.0.1:1080"

# Linux
google-chrome --proxy-server="socks5://127.0.0.1:1080"

# Windows (Command Prompt)
"C:\Program Files\Google\Chrome\Application\chrome.exe" --proxy-server="socks5://127.0.0.1:1080"

此标志使 Chrome 对所有请求使用 SOCKS5 代理并执行远程 DNS 解析。要确认,请访问 chrome://net-internals/#proxy 并查看生效的代理设置。

一个注意事项:这仅适用于使用该标志启动的 Chrome 实例。如果你从现有 Chrome 进程打开新窗口,它可能不会继承该设置。如果需要隔离,请使用单独的 user-data-dir。

方法 3:用于 SOCKS5 的代理扩展程序

浏览器扩展程序是在不触及系统设置的情况下向 Chrome 添加 SOCKS5 的最常见方式。SwitchyOmega(以及类似的代理管理器)等扩展程序允许你定义 SOCKS5 配置文件,并按标签页或按域名在直连和代理连接之间切换。

如何设置一个典型扩展程序:

  1. 从 Chrome 网上应用店安装该扩展程序。
  2. 创建一个新配置文件,选择 SOCKS5 作为协议。
  3. 输入代理主机和端口(例如 127.0.0.1:1080)。
  4. 如果你的代理不需要身份验证,请将身份验证留空。
  5. 应用该配置文件。

扩展程序仅影响 Chrome 流量,并且它们对测试来说可能很方便。但是,它们不能防止 WebRTC 泄漏,并且可能无法在所有情况下覆盖 Chrome 的内部 DNS 查询。始终使用泄漏测试进行验证。

方法 4:SSH 动态端口转发(本地 SOCKS5 隧道)

如果你对远程服务器有 SSH 访问权限,可以用一条命令创建本地 SOCKS5 代理:

ssh -D 1080 -N -f [email protected]

这会在 localhost:1080 上打开一个 SOCKS5 代理,通过你的服务器隧道传输流量。然后使用命令行标志或代理扩展程序将 Chrome 指向它。此方法很受欢迎,因为它加密你和服务器之间的流量,并且不需要第三方代理服务。

要关闭隧道,找到 SSH 进程并终止它,或者在终端中使用 ssh -D 1080 -N [email protected],完成后按 Ctrl+C。

验证你的 SOCKS5 代理正常工作(并且没有泄漏)

配置任意方法后,检查以下内容:

  • 公共 IP:访问 IP 检查网站并确认它显示的是代理的 IP,而不是你的真实 IP。
  • DNS 泄漏:使用 DNS 泄漏测试网站。由于 Chrome 的 socks5:// 执行远程 DNS,你应该看到属于代理的 DNS 服务器,而不是你的 ISP。
  • WebRTC 泄漏:即使代理处于活动状态,Chrome 也可能通过 WebRTC 暴露你的本地和公共 IP。使用 WebRTC 泄漏测试进行测试。要缓解,请完全禁用 WebRTC 或使用阻止它的扩展程序。
  • Chrome 内部视图:前往 chrome://net-internals/#proxy 查看当前代理配置,前往 chrome://net-internals/#dns 查看 DNS 解析行为。

常见陷阱:SOCKS5h、身份验证和 Chrome 策略

  • SOCKS5 与 SOCKS5h:在 Chrome 中,socks5:// 已经执行远程 DNS。没有单独的 socks5h 方案。如果你习惯 curl 的 socks5h://,在 Chrome 中只需使用 socks5://。
  • 身份验证:Chrome 通过 --proxy-server 标志支持 SOCKS5 用户名/密码身份验证,格式为 socks5://user:pass@host:port。一些扩展程序也支持它。
  • 企业策略:如果你的 Chrome 由组织管理,代理设置可能会通过策略强制执行。检查 chrome://policy 查看代理配置是否被锁定。

关键要点

Chrome 不会给你一个 SOCKS5 复选框,但你有四条可靠途径:macOS/Linux 上的系统设置、任何操作系统上的命令行标志、代理扩展程序或 SSH 隧道。对于大多数用户,代理扩展程序是在 Chrome 中测试 SOCKS5 代理的最快方式,而命令行标志对于持久使用来说最可靠。无论你选择哪种,始终验证你的 IP、DNS 和 WebRTC 状态——泄漏的代理比完全没有代理更糟。