如何在Firefox中设置代理服务器连接
Mozilla Firefox 提供原生、精细化的代理配置功能,让您无需安装任何第三方扩展即可将浏览器流量通过中间服务器路由。无论您需要通过企业网关强制路由流量、测试受地理限制的内容,还是将浏览会话与系统级代理隔离,Firefox 内置的连接设置面板都能让您独立完全控制每种代理协议。
本指南涵盖 Firefox 支持的所有配置模式,解释代理协议之间的技术差异,并指出大多数教程完全忽略的实际问题。
为什么要在 Firefox 中直接配置代理而非系统级配置
大多数操作系统提供全局代理设置,所有应用程序都会继承该设置。Firefox 可以使用这些设置,但在浏览器级别配置代理具有明显优势:
- 按应用程序隔离:您的系统代理保持不变,而 Firefox 通过单独的服务器路由——对于在代理浏览的同时运行本地服务的开发人员非常有用。
- 协议级精细控制:Firefox 允许您为 HTTP、HTTPS 和 SOCKS 流量独立分配不同的代理服务器,而系统级设置无法做到这一点。
- 无需管理员权限即可快速切换:在受限的企业机器上,您可能没有权限更改操作系统网络设置,但仍可调整 Firefox 自身的配置。
- PAC 文件支持:Firefox 可以从 URL 加载代理自动配置脚本,实现基于规则的动态路由,而系统代理很少能在此灵活程度上支持。
如果您正在运行 VPS Hosting 环境,并需要测试您的服务器如何响应来自不同地理出口节点的请求,浏览器级代理配置是模拟该场景而无需触及服务器网络堆栈的最快方式。
了解 Firefox 代理配置模式
在调整任何设置之前,请先了解每种模式在底层实际执行的操作。
| 模式 | 工作原理 | 最佳使用场景 |
|---|---|---|
| — | — | — |
| 无代理 | 直接连接;Firefox 忽略任何系统代理 | 本地开发、受信任网络 |
| 自动检测 (WPAD) | 发送 DHCP/DNS 查询以获取 `wpad.dat` PAC 文件 | 具有 WPAD 基础设施的受管企业网络 |
| 使用系统代理设置 | 读取操作系统代理配置(例如 Windows Internet 选项、macOS 网络偏好设置) | 与同一机器上其他应用程序保持一致 |
| 手动代理配置 | 您为每种协议指定服务器地址和端口 | 个人代理、SOCKS5 隧道、SSH 端口转发 |
| 自动代理配置 URL | 从您提供的 URL 获取并执行 PAC 文件 | 多区域设置、负载均衡代理池 |
WPAD 自动检测存在真实的安全风险:在不受信任的网络(公共 Wi-Fi、共享办公室局域网)上,恶意 DHCP 服务器可能提供伪造的 wpad.dat 文件并重定向您的所有流量。除非您在自己控制的网络上,否则请避免使用此模式。
分步指南:在 Firefox 中配置代理服务器
第 1 步 — 打开 Firefox 设置
启动 Firefox 并使用以下任一方法访问设置面板:
- 点击右上角的汉堡菜单(三条横线),然后选择设置。
- 在地址栏中直接输入
about:preferences并按 Enter。 - 在 macOS 上,菜单项显示为偏好设置而非设置——两者打开的是同一面板。
第 2 步 — 导航至网络设置
在设置页面中,保持在常规选项卡(默认加载)。滚动到页面最底部,直到找到网络设置部分。点击设置…按钮打开连接设置对话框。
或者,使用设置页面顶部的搜索栏输入 proxy——Firefox 将立即高亮显示相关部分。
第 3 步 — 选择代理配置模式
连接设置对话框提供五个单选按钮选项。选择与您的基础设施匹配的选项。对于大多数手动设置,您将选择手动代理配置——下一节将详细介绍。
第 4 步 — 手动代理配置详解
选择手动代理配置后,将显示每种协议的各个字段。以下是每个字段的控制内容及注意事项:
HTTP 代理
输入代理服务器的 IP 地址或主机名及其端口(通常为 3128、8080 或 8888)。此代理处理纯 HTTP 流量。请注意,在现代 Firefox 中,HTTP 代理字段默认还会通过 CONNECT 隧道方式拦截 HTTPS 请求——这意味着即使 SSL 代理字段留空,您的 HTTPS 流量也会通过此代理进行隧道传输。
SSL 代理
历史上用于专用 HTTPS 代理。在当前 Firefox 版本中,如果您填写了 HTTP 代理字段并将 SSL 代理留空,HTTPS 仍会通过 CONNECT 进行代理。仅当您的基础设施通过单独的端点路由 SSL 流量时,才需填写此字段。
SOCKS 主机
对于 SOCKS 代理,请在此处输入主机和端口。您还必须选择 SOCKS 版本:
- SOCKS v4:仅支持 TCP,无身份验证,不支持 IPv6,不支持 UDP。更简单但功能有限。
- SOCKS v5:支持 TCP 和 UDP,可选用户名/密码身份验证,完全支持 IPv6。除非您的代理明确要求 v4,否则始终优先选择 SOCKS v5。
选择 SOCKS v5 时会出现一个关键子选项:使用 SOCKS v5 时代理 DNS。启用此复选框会将 DNS 解析请求通过 SOCKS 代理发送,而不是在本地解析。这对于隐私保护和防止泄漏至关重要。如果不勾选此项,即使您的流量通过代理,DNS 查询仍会发送到本地解析器——这种 DNS 泄漏会将您访问的每个主机名暴露给您的 ISP 或本地网络。
对所有协议使用此代理服务器
勾选此框会将您在 HTTP 代理字段中输入的内容复制到所有其他协议字段。仅当您的代理服务器确实在同一地址和端口上处理所有协议时才使用此选项。如果您只有一个仅支持 SOCKS 的代理,盲目启用此选项会导致问题。
不使用代理
以逗号分隔的主机名、IP 地址和 CIDR 范围列表,这些地址将完全绕过代理。至少应包含:
localhost, 127.0.0.1, ::1对于企业环境,请添加您的内部域名后缀(例如 .corp.example.com)以及应用程序需要直接访问的任何 RFC 1918 子网。忘记此操作会导致本地开发服务器和内部工具通过代理路由,这要么会破坏它们,要么会将内部主机名泄漏到外部服务器。
第 5 步 — 自动代理配置 URL(PAC 文件)
如果您管理代理池或需要基于规则的路由,请选择自动代理配置 URL并输入您的 PAC 文件 URL。PAC 文件是一个包含 FindProxyForURL(url, host) 函数的 JavaScript 文件。Firefox 下载并缓存此文件,然后为每个请求调用该函数以确定使用哪个代理(或直接连接)。
一个最简 PAC 文件示例:
function FindProxyForURL(url, host) {
if (shExpMatch(host, "*.internal.example.com")) {
return "DIRECT";
}
if (isInNet(dnsResolve(host), "10.0.0.0", "255.0.0.0")) {
return "DIRECT";
}
return "SOCKS5 192.0.2.10:1080; DIRECT";
}此配置将内部主机直接路由,绕过 RFC 1918 地址,并将其他所有流量回退到 SOCKS5 代理,如果代理不可达则故障转移到直接连接。
第 6 步 — 保存并验证配置
点击确定以应用设置。Firefox 会立即将代理设置应用于新连接——不需要完全重启浏览器,但重启可以清除任何已缓存的直接连接。
要验证代理是否处于活动状态,请访问 https://ifconfig.me 或 https://ipinfo.io 等网站。显示的 IP 地址应与您的代理服务器出口 IP 匹配,而非您的本地 IP。
如果您看到“代理服务器拒绝连接”错误,最常见的原因是:
- 端口号错误
- 代理进程未运行或绑定到不同的接口
- 代理服务器上的防火墙正在阻止您的源 IP
- 代理需要身份验证,而 Firefox 尚未提示输入凭据
如果您看到“代理服务器无响应”错误,则主机地址不可达——请检查 DNS 解析、路由以及服务器是否在线。
第 7 步 — 代理身份验证
如果您的代理服务器需要凭据,Firefox 将在首次尝试通过该代理连接时显示身份验证对话框。输入用户名和密码。Firefox 会在会话期间缓存这些凭据,如果您允许,还会将其保存在密码管理器中供以后的会话使用。
对于需要身份验证但用于自动化或无头环境的代理,凭据可以直接嵌入 PAC 文件中,或通过 network.proxy.socks_username 和 network.proxy.socks_password 首选项在 about:config 中管理——但在配置文件中存储明文凭据存在明显的安全隐患。
第 8 步 — 禁用代理
要恢复直接连接,请返回设置 > 网络设置并选择无代理,然后点击确定。要恢复系统级代理行为,请改为选择使用系统代理设置。
通过 about:config 进行高级配置
对于 GUI 不足以满足需求的场景,Firefox 在 about:config 中将每个代理参数作为首选项公开。主要首选项包括:
| 首选项键 | 类型 | 描述 |
|---|---|---|
| — | — | — |
| `network.proxy.type` | 整数 | 0=无代理,1=手动,2=PAC URL,4=自动检测,5=系统 |
| `network.proxy.http` | 字符串 | HTTP 代理主机名 |
| `network.proxy.http_port` | 整数 | HTTP 代理端口 |
| `network.proxy.socks` | 字符串 | SOCKS 代理主机名 |
| `network.proxy.socks_port` | 整数 | SOCKS 代理端口 |
| `network.proxy.socks_version` | 整数 | 4 或 5 |
| `network.proxy.socks_remote_dns` | 布尔值 | 启用 DNS-over-SOCKS(防止 DNS 泄漏) |
| `network.proxy.no_proxies_on` | 字符串 | 绕过列表,以逗号分隔 |
| `network.proxy.autoconfig_url` | 字符串 | PAC 文件的 URL |
这些首选项也可以通过 mozilla.cfg 或企业部署中的组策略锁定,防止用户更改代理设置。
代理协议比较:HTTP、HTTPS、SOCKS4 和 SOCKS5
| 功能 | HTTP 代理 | HTTPS 代理 (CONNECT) | SOCKS4 | SOCKS5 |
|---|---|---|---|---|
| — | — | — | — | — |
| 协议感知 | 仅 HTTP | HTTP + HTTPS 隧道 | 仅 TCP | TCP + UDP |
| DNS 解析 | 本地 | 本地 | 本地 | 远程(可选) |
| 身份验证 | 基本/摘要 | 基本/摘要 | 无 | 用户名/密码 |
| IPv6 支持 | 取决于服务器 | 取决于服务器 | 否 | 是 |
| 非 HTTP 流量 | 否 | 否 | 否 | 是 |
| 匿名级别 | 低(标头暴露) | 中 | 中 | 高(启用远程 DNS) |
| 典型使用场景 | 企业过滤 | 一般 HTTPS 浏览 | 旧版系统 | SSH 隧道、隐私保护 |
对于注重隐私的使用场景,启用远程 DNS 的 SOCKS5 是 Firefox 原生配置中可用的最强选项。它处理所有 TCP 流量,在代理端解析 DNS,并支持身份验证——使其适合通过 SSH 隧道(ssh -D 1080)或运行在独立服务器上的专用 SOCKS5 服务器进行路由。
安全与隐私注意事项
流量检查风险:您未加密的 HTTP 流量的每个字节都以明文形式通过代理服务器。即使对于 HTTPS,代理也能通过 CONNECT 请求看到目标主机名。请仅使用您控制或明确信任的提供商或基础设施的代理。
证书拦截:某些企业和”透明” HTTPS 代理通过充当中间人来执行 SSL 检查,向 Firefox 呈现其自己的证书。除非代理的根 CA 已安装在您的证书存储中,否则 Firefox 会发出警告。如果您在启用代理后看到意外的证书警告,这很可能是原因所在。
WebRTC 泄漏:Firefox 的 WebRTC 实现可能绕过代理设置,并通过 STUN 请求暴露您的真实 IP 地址。为防止这种情况,如果不需要 WebRTC,请在 about:config 中将 media.peerconnection.enabled 设置为 false,或使用控制 WebRTC 行为的浏览器扩展。
通过直接 DNS 绕过代理:如前所述,请始终启用使用 SOCKS v5 时代理 DNS 以防止 DNS 泄漏。将 SOCKS5 代理与在您的源服务器上正确配置的 SSL 证书结合使用,即使流量通过中间基础设施,也能确保端到端加密。
凭据暴露:HTTP 代理身份验证以 Base64 编码发送凭据,这是极易逆向的。如果您的代理需要身份验证,请确保到代理本身的连接是加密的(即通过 TLS 使用 HTTPS 或 SOCKS5 代理,或使用 SSH 隧道)。
搭建您自己的代理服务器
使用第三方代理服务意味着将您的流量信任给该提供商。在 VPS 上运行您自己的代理可以让您完全掌控。在 Debian/Ubuntu 服务器上使用 dante 搭建最简 SOCKS5 代理:
apt update && apt install dante-server -y编辑 /etc/danted.conf:
logoutput: syslog
internal: 0.0.0.0 port = 1080
external: eth0
clientmethod: none
socksmethod: username
user.privileged: root
user.notprivileged: nobody
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
log: connect disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username
log: connect disconnect
}systemctl enable danted --now然后在 Firefox 的 SOCKS 主机字段中输入您的 VPS IP 和端口 1080,选择 SOCKS v5,并启用使用 SOCKS v5 时代理 DNS。此设置运行在带有 cPanel 的 VPS 或裸 VPS 上,为您提供具有完整日志控制的私有、经身份验证的 SOCKS5 代理。
对于需要共享代理基础设施的团队,共享虚拟主机不适合运行代理守护进程——您需要具有 root 访问权限且能够开放任意端口的 VPS 或独立服务器。
关键要点与决策矩阵
在最终确定 Firefox 代理配置之前,请使用此检查清单:
- 只要代理服务器支持,选择 SOCKS v5 而非 SOCKS v4——UDP 支持、IPv6 和远程 DNS 功能对于现代使用场景是不可或缺的。
- 如果隐私或防泄漏是需求,启用”使用 SOCKS v5 时代理 DNS”。
- 在“不使用代理”字段中填入
localhost、127.0.0.1、::1以及任何内部子网或域名后缀。 - 应用设置后,使用
ifconfig.me或同类工具验证出口 IP。 - 如果目标是匿名,通过
about:config禁用 WebRTC。 - 在不受信任的网络上避免使用 WPAD 自动检测模式。
- 如果需要凭据,确认代理身份验证使用加密通道。
- 对于敏感流量,考虑在受控 VPS 上运行您自己的代理,而非依赖第三方服务。
如果您需要跨多个出口节点进行动态、基于规则的路由,请花时间编写 PAC 文件——这比每次代理拓扑更改时手动重新配置 Firefox 要易于维护得多。
常见问题
在 Firefox 中配置代理是否会影响其他浏览器或系统应用程序?
不会。Firefox 独立于操作系统存储其代理设置。在 Firefox 连接设置中所做的更改对 Chrome、系统 curl 或任何其他应用程序没有任何影响。只有来自 Firefox 的流量才会通过配置的代理路由。
为什么即使我将 SSL 代理字段留空,我的 HTTPS 流量仍然通过代理?
这是现代 Firefox 的预期行为。配置 HTTP 代理后,Firefox 使用 HTTP CONNECT 方法通过同一代理隧道传输 HTTPS 连接。SSL 代理字段仅在您希望 HTTPS 流量通过与 HTTP 流量不同的代理端点时才相关。
在 Firefox 中使用 SOCKS5 代理时如何防止 DNS 泄漏?
打开连接设置,选择您的 SOCKS v5 代理,并勾选使用 SOCKS v5 时代理 DNS 复选框。或者,在 about:config 中将 network.proxy.socks_remote_dns 设置为 true。这会强制 Firefox 通过 SOCKS 隧道发送 DNS 查询,而不是在本地解析。
我可以将 Firefox 的代理设置与 SSH 隧道一起使用吗?
可以。使用 ssh -D 1080 -N user@your-server.com 创建本地 SOCKS5 隧道,然后将 Firefox 配置为使用 127.0.0.1 的端口 1080 作为启用远程 DNS 的 SOCKS v5 代理。所有 Firefox 流量将通过 SSH 隧道加密传输到您的远程服务器,然后再出口到互联网。
“自动检测代理设置”与”自动代理配置 URL”有什么区别?
自动检测使用 WPAD 协议通过 DHCP 或 DNS 自动发现 PAC 文件——您无需提供 URL。自动代理配置 URL 要求您明确提供 PAC 文件 URL。后者更可预测、更安全,在您提前知道 PAC 文件位置时推荐使用。
