Skip to content
文章 / 2 分钟阅读

Firefox SOCKS5 配置器:内置设置、about:config 和按容器代理

Firefox 内置了真正的 SOCKS5 客户端——无需扩展。以下介绍如何在设置和 about:config 中配置它、强制远程 DNS、使用 FoxyProxy 或 Multi-Account Containers 分流流量,并验证没有泄漏。

Firefox SOCKS5 配置器:内置设置、about:config 和按容器代理

Firefox 是少数仍然内置真正 SOCKS5 客户端设置的主流浏览器之一——无需扩展。当你希望通过代理路由浏览器流量而不改动系统级设置时,它是一个实用选择。本指南将介绍内置配置、控制 DNS 行为的 about:config 首选项,以及按站点或按容器分流流量的方式。我们还会介绍验证方法,以便你证明代理正在按预期工作。

为什么 Firefox 的 SOCKS5 支持很重要

Chrome 没有原生 SOCKS5 设置;它依赖操作系统或命令行标志。相比之下,Firefox 有完整的手动代理配置,包括 SOCKS 主机、端口、版本选择器,以及一个用于远程 DNS 解析的专用复选框。这种组合使 Firefox 成为无需安装额外软件即可指向本地或远程 SOCKS5 端点的最简便浏览器。

如果你处于受限网络中、正在测试代理提供商,或者只是偏好按应用路由,Firefox 的内置支持通常是最快的入门方式。它不是系统级的——只有 Firefox 流量使用它——当你不想干扰其他应用程序时,这正是你想要的。

在 Firefox 设置中配置 SOCKS5(图形界面)

  1. 打开 Firefox 设置(或导航到 about:preferences)。
  2. 滚动到 网络设置 部分,点击 设置…。
  3. 选择 手动代理配置。
  4. 在 SOCKS 主机 字段中,输入代理 IP 地址(例如,本地隧道使用 127.0.0.1)。
  5. 输入端口(例如 1080)。
  6. 选择 SOCKS v5。
  7. 确保勾选 使用 SOCKS v5 时代理 DNS。
  8. 点击 确定。

不使用代理 字段接受以逗号分隔的主机列表,这些主机应绕过代理——通常是 localhost, 127.0.0.1,以避免与本地服务形成环路。

图形界面背后的 about:config 首选项

图形界面设置的所有内容都存储在 about:config 中。以下是 SOCKS5 相关的首选项:

首选项 用途 典型值
network.proxy.type 1 = 手动代理配置 1
network.proxy.socks SOCKS 主机地址 127.0.0.1
network.proxy.socks_port SOCKS 端口 1080
network.proxy.socks_version SOCKS5 使用 5 5
network.proxy.socks_remote_dns 在代理处解析 DNS,而不是在本地解析 true
network.proxy.no_proxies_on 绕过列表 localhost, 127.0.0.1

你也可以通过 Firefox 配置文件文件夹中的 user.js 文件设置这些项,这对于配置配置文件或自动化测试环境很有用:

// user.js — Firefox SOCKS5 配置
user_pref("network.proxy.type", 1);
user_pref("network.proxy.socks", "127.0.0.1");
user_pref("network.proxy.socks_port", 1080);
user_pref("network.proxy.socks_version", 5);
user_pref("network.proxy.socks_remote_dns", true);
user_pref("network.proxy.no_proxies_on", "localhost, 127.0.0.1");

远程 DNS:防止泄漏的设置

当你使用 SOCKS5 代理时,DNS 解析可能发生在两个位置:本地机器上,或代理远程端。命令行工具中 socks5 与 socks5h 的区别正是为此而存在。在 Firefox 中,使用 SOCKS v5 时代理 DNS 复选框控制 network.proxy.socks_remote_dns。

如果禁用远程 DNS,Firefox 会在将连接发送到代理之前使用本地解析器解析域名。这可能会将你访问的站点泄漏给 ISP 或本地网络。启用远程 DNS,让代理代你解析主机名。你可以通过访问 DNS 泄漏测试站点并检查解析器 IP 属于你的代理还是 ISP 来验证这一点。

使用 FoxyProxy 进行按站点路由

Firefox 的内置代理设置适用于所有流量。如果你只需要将某些站点通过代理发送——其他站点保持直连——FoxyProxy Standard 是常见解决方案。

  1. 安装 FoxyProxy Standard 扩展。
  2. 打开其选项并添加新代理:选择 SOCKS5,输入主机和端口。
  3. 如果代理需要身份验证,输入用户名和密码。FoxyProxy 会存储这些信息,不像 Firefox 内置提示每次会话都会询问。
  4. 创建匹配你想要代理的站点的模式。模式可以是通配符(例如 *.example.com/*)或正则表达式。
  5. 将模式设置为 根据预定义模式和优先级使用代理。
  6. 通过访问一个回显你 IP 的站点进行测试——对于匹配的模式,它应显示代理的地址;对于其他模式,显示你的真实地址。

FoxyProxy 对拆分隧道特别有用:将特定 Web 应用通过地理限制代理路由,同时不影响普通浏览。

按容器代理和隔离配置文件

Firefox Multi-Account Containers 隔离 Cookie 和存储,但它们本身并不支持按容器设置不同的代理。要按容器分配代理,你可以使用第三方扩展,例如 Container Proxy,它将容器映射到代理配置。这是高级设置,且该扩展并非由 Mozilla 维护,因此请谨慎测试。

更简单、更稳健的替代方案是运行单独的 Firefox 配置文件。每个配置文件都有自己的 about:config、扩展和代理设置。你可以从命令行启动特定配置文件:

firefox -P "Work" -no-remote

将 "Work" 替换为你的配置文件名称。-no-remote 标志允许新实例与现有 Firefox 进程一起运行。你可以通过 Firefox 配置文件管理器(firefox -ProfileManager)创建配置文件,然后在每个配置文件中设置不同的 SOCKS5 代理。

通过 SSH 隧道使用本地 SOCKS5(无需提供商)

如果你有 VPS 或任何 SSH 访问权限,你可以在没有商业代理服务的情况下创建本地 SOCKS5 代理。SSH 动态转发功能(-D)将你的 SSH 连接转换为本地端口上的 SOCKS5 代理:

ssh -D 1080 -N -C [email protected]
  • -D 1080 告诉 SSH 在本地端口 1080 上监听,作为 SOCKS5 代理。
  • -N 阻止运行远程命令——你只需要隧道。
  • -C 启用压缩,这在慢速链路上可能有帮助。

然后将 Firefox 指向 127.0.0.1:1080,并启用 SOCKS v5 和远程 DNS。你的流量从服务器的 IP 出口,SSH 层加密你与服务器之间的连接。这是测试或临时访问地理限制内容的常见模式。

验证代理是否正常工作(且没有泄漏)

配置 Firefox 后,不要假设一切正确。请运行以下检查:

  • IP 检查: 访问回显你公网 IP 的服务(例如 ifconfig.me)。显示的 IP 应匹配代理的出口地址,而不是你的真实地址。
  • DNS 泄漏测试: 使用 DNS 泄漏测试站点。解析器应是代理的解析器或公共 DNS 服务,而不是 ISP 的服务器。如果你看到 ISP 的解析器,远程 DNS 可能已禁用。
  • WebRTC 检查: 即使代理处于活动状态,某些站点仍可通过 WebRTC 发现你的本地 IP。你可以在 about:config 中将 media.peerconnection.enabled 设置为 false 来禁用 WebRTC,但这会破坏视频会议和一些 Web 应用。仅当你需要隐藏本地 IP 时才使用它。
  • 命令行测试: 从终端直接使用 curl 测试代理:
curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me

--socks5-hostname 标志强制 curl 通过代理远程解析 DNS,与 Firefox 的远程 DNS 行为一致。如果 curl 正常工作但 Firefox 不正常,问题很可能出在 Firefox 的配置或某个扩展的干扰上。

常见问题与修复

  • 代理身份验证提示: Firefox 的内置代理设置不存储凭据,因此每次新会话都会提示。使用 FoxyProxy 或类似扩展来保存它们。
  • 代理完全无法工作: 验证主机和端口,确保代理可访问(先用 curl 测试),并检查没有防火墙阻止该端口。
  • DNS 泄漏: 确认 network.proxy.socks_remote_dns 为 true。这是最常见的泄漏。
  • WebRTC 泄漏: 如果你需要防止本地 IP 暴露,请禁用 media.peerconnection.enabled。
  • 绕过列表问题: 确保 localhost 和 127.0.0.1 位于 network.proxy.no_proxies_on 中,以避免与本地服务形成环路。

当浏览器代理不够用时

Firefox 仅代理其自身流量。如果你需要系统级路由、按应用控制,或让命令行工具使用代理,则需要不同的层。关于 Windows 和 macOS 上的按应用路由,请参阅我们的 Proxifier + SOCKS5 指南。在 Linux 上,proxychains 和 redsocks 是常见方法。如果你需要用于抓取的轮换代理,浏览器配置并不是正确的层——请改用 Python 库或轮换网关。

要点总结

Firefox 的内置 SOCKS5 支持是在不进行系统级更改的情况下通过代理路由浏览器的最简洁方式之一。在设置或 about:config 中配置它,始终启用远程 DNS,当你需要按站点或按容器控制时,使用 FoxyProxy 或单独的配置文件。在将其用于敏感流量之前,请通过 IP 检查、DNS 泄漏测试和 curl 命令进行验证。