如果您在 Linux 上工作,并且需要通过代理转发流量 — 用于解析、监控市场价格或处理多个帐户 — 网上标准说明往往无效。有些只描述浏览器,有些只描述终端,哪里也没有完整的图景。在本指南中,我们将讨论所有方法:从终端中的一条命令到覆盖整个 Ubuntu 和 Debian 流量的系统设置。
选择哪种类型的代理用于 Linux
在进行设置之前,重要的是要理解:并非所有代理都适合不同的任务。Linux 机器通常用于自动化任务 — 解析、监控、大规模请求 — 选择代理类型在这里至关重要。
| 代理类型 | 协议 | 适合于 | 封锁风险 |
|---|---|---|---|
| 数据中心代理 | HTTP, HTTPS, SOCKS5 | 解析、curl、脚本 | 中等 |
| 住宅代理 | HTTP, HTTPS, SOCKS5 | 市场、社交网络、帐户 | 低 |
| 移动代理 | HTTP, SOCKS5 | Facebook, Instagram, TikTok | 最小 |
对于大多数 Linux 任务,HTTP/HTTPS 或 SOCKS5 代理都是合适的。SOCKS5 更受欢迎 — 它在 TCP 层工作,并且被大多数工具支持,包括 curl、wget 和 proxychains。接下来在所有示例中,我们将使用这两种选项。
代理数据格式
以下所有设置都需要以下格式的数据:
host:port 或 host:port:login:password
这些数据您可以从代理提供商的个人账户中获取。
通过终端中的环境变量进行设置
在 Linux 中通过代理转发流量的最快方法是设置环境变量。大多数控制台工具(curl、wget、pip、apt 等)会自动读取这些变量,并在没有额外设置的情况下使用指定的代理。
临时设置(仅适用于当前会话)
打开终端并执行以下命令。将值替换为您的代理数据:
# 对于无认证的 HTTP 代理 export http_proxy="http://192.168.1.1:3128" export https_proxy="http://192.168.1.1:3128" # 对于带有登录和密码的 HTTP 代理 export http_proxy="http://login:[email protected]:3128" export https_proxy="http://login:[email protected]:3128" # 对于 SOCKS5 代理 export http_proxy="socks5://login:[email protected]:1080" export https_proxy="socks5://login:[email protected]:1080" # 排除项 — 无代理的地址(localhost 和本地网络) export no_proxy="localhost,127.0.0.1,::1,192.168.0.0/16"
在这些命令之后,当前终端中的所有工具将使用代理。一个重要的细节:某些程序仅以大写读取变量。为了保险起见,请用大写字母重复命令:
export HTTP_PROXY="http://login:[email protected]:3128" export HTTPS_PROXY="http://login:[email protected]:3128" export NO_PROXY="localhost,127.0.0.1"
为您的用户进行永久设置
为了在每次登录终端时自动应用代理,请将变量添加到文件 ~/.bashrc(对于 bash)或 ~/.zshrc(对于 zsh):
# 在 nano 编辑器中打开文件 nano ~/.bashrc # 在文件末尾添加以下行: export http_proxy="http://login:password@host:port" export https_proxy="http://login:password@host:port" export HTTP_PROXY="http://login:password@host:port" export HTTPS_PROXY="http://login:password@host:port" export no_proxy="localhost,127.0.0.1" # 保存:Ctrl+O, Enter, Ctrl+X # 在不重启终端的情况下应用更改: source ~/.bashrc
为所有用户进行系统设置
如果 Linux 用作服务器,或者您希望为系统中的所有用户应用代理,请将变量添加到文件 /etc/environment:
sudo nano /etc/environment # 添加行(不带 export 命令!): http_proxy="http://login:password@host:port" https_proxy="http://login:password@host:port" HTTP_PROXY="http://login:password@host:port" HTTPS_PROXY="http://login:password@host:port" no_proxy="localhost,127.0.0.1,::1"
保存文件后,变更将在下次登录时生效。要在不重启的情况下应用,请执行 source /etc/environment。
通过图形界面 (GNOME) 进行系统代理设置
如果您使用的是带有 GNOME 桌面的 Ubuntu(标准安装的 Ubuntu Desktop),则可以通过图形界面设置代理,而无需输入任何命令。这对刚开始使用 Linux 的人来说很方便。
Ubuntu GNOME 的逐步指南
- 点击屏幕右上角的图标 → 选择 “设置” (Settings)
- 在左侧菜单中向下滚动并选择 “网络” (Network)
- 在“网络代理”部分,点击带箭头的按钮(设置图标)
- 选择代理模式:
- 禁用 — 不使用代理
- 手动 — 您自己输入代理数据(推荐)
- 自动 — 使用提供商的 PAC 文件
- 选择 “手动” 并填写字段:
- HTTP 代理:输入主机地址和端口
- HTTPS 代理:相同数据
- SOCKS 主机:地址和端口(如果使用 SOCKS5)
- 忽略主机:
localhost, 127.0.0.0/8
- 关闭窗口 — 设置会自动应用
⚠️ 重要提示
通过 GNOME 设置的代理仅适用于读取系统设置的应用程序:GNOME Web 浏览器、某些 GNOME 应用程序。终端工具(curl、wget、apt)不使用这些设置 — 对于它们,需要使用上一部分的环境变量。Firefox 和 Chromium 有自己的代理设置。
通过 gsettings 进行设置(终端 + GUI)
如果您希望通过终端管理 GNOME 的系统代理设置(例如,进行自动化),请使用 gsettings 命令:
# 启用手动代理模式 gsettings set org.gnome.system.proxy mode 'manual' # 设置 HTTP 代理 gsettings set org.gnome.system.proxy.http host 'host' gsettings set org.gnome.system.proxy.http port 3128 # 设置 HTTPS 代理 gsettings set org.gnome.system.proxy.https host 'host' gsettings set org.gnome.system.proxy.https port 3128 # 设置 SOCKS5 代理 gsettings set org.gnome.system.proxy.socks host 'host' gsettings set org.gnome.system.proxy.socks port 1080 # 禁用代理 gsettings set org.gnome.system.proxy mode 'none'
APT 的代理 — 通过代理安装软件包
APT 包管理器(在 Ubuntu 和 Debian 中使用)有自己的代理设置系统,不依赖于环境变量。这对于没有直接互联网访问的服务器或企业网络尤其重要。
方法 1:为单个命令设置临时代理
# 使用代理进行单个 apt 命令 sudo apt-get -o Acquire::http::Proxy="http://login:password@host:port" update # 或通过环境变量 sudo http_proxy="http://login:password@host:port" apt-get update
方法 2:为 APT 设置永久代理
创建 APT 的配置文件。此方法推荐用于需要持续使用代理的服务器:
# 创建配置文件 sudo nano /etc/apt/apt.conf.d/95proxies # 添加内容: Acquire::http::Proxy "http://login:password@host:port"; Acquire::https::Proxy "http://login:password@host:port"; Acquire::ftp::Proxy "ftp://login:password@host:port"; # 保存并检查: sudo apt-get update
如果代理没有认证,行看起来更简单: Acquire::http::Proxy "http://host:port";。要禁用 APT 的代理,只需使用命令 sudo rm /etc/apt/apt.conf.d/95proxies 删除创建的文件。
curl 和 wget 的代理
Curl 和 wget 是在 Linux 中处理 HTTP 请求的主要工具。它们用于解析、测试 API、下载文件。这两个工具都通过命令行参数直接支持代理。
带代理的 Curl
# HTTP 代理 curl -x http://login:password@host:port https://example.com # SOCKS5 代理 curl --socks5 host:port --proxy-user login:password https://example.com # 通过代理检查自己的 IP curl -x http://login:password@host:port https://api.ipify.org # 忽略 SSL 错误(如有需要) curl -x http://login:password@host:port -k https://example.com
为了避免每次都指定代理,请将设置添加到文件 ~/.curlrc:
nano ~/.curlrc # 添加行: proxy = "http://login:password@host:port" # 现在 curl 总是使用这个代理: curl https://api.ipify.org
带代理的 Wget
# 通过命令行参数 wget -e "http_proxy=http://login:password@host:port" https://example.com # 在 ~/.wgetrc 中进行永久设置 nano ~/.wgetrc # 添加行: http_proxy = http://login:password@host:port https_proxy = http://login:password@host:port use_proxy = on
Linux 上 Firefox 和 Chromium 的代理
Linux 上的浏览器有自己的代理设置,这些设置独立于系统设置。这很方便,如果您只想在浏览器中使用代理,而不影响其他流量。
Firefox:手动设置
- 打开 Firefox → 点击右上角的三条横线 → “设置”
- 向下滚动到 “代理服务器” 部分 → 点击 “设置”
- 选择 “手动设置代理”
- 填写字段:
- HTTP 代理:主机地址,端口
- 勾选“将此代理服务器用于所有协议”
- 或者单独指定 SOCKS:地址,端口,选择 SOCKS v5
- 点击 确定
如果代理需要认证,Firefox 在第一次访问时会请求登录和密码并记住它们。为了在多个代理之间快速切换,可以安装扩展 FoxyProxy — 它允许创建配置文件并一键切换。
Chromium / Google Chrome:使用代理启动
Linux 上的 Chromium 在界面中没有内置的代理设置 — 它使用系统设置。但是可以通过命令行参数使用特定代理启动浏览器:
# 使用 HTTP 代理启动 Chromium chromium-browser --proxy-server="http://host:port" # 使用 SOCKS5 代理启动 chromium-browser --proxy-server="socks5://host:port" # 使用代理并忽略 localhost 启动 chromium-browser --proxy-server="http://host:port" \ --proxy-bypass-list="localhost;127.0.0.1" # 对于 Google Chrome,将 chromium-browser 替换为 google-chrome google-chrome --proxy-server="socks5://host:port"
💡 多账户操作建议
如果您通过 Linux 浏览器管理多个账户,使用普通浏览器加代理是不够的 — 网站会跟踪浏览器的指纹、cookies 和其他参数。要实现完整的多账户操作,请使用反检测浏览器: Dolphin Anty、 AdsPower 或 GoLogin — 它们为每个账户创建独立的配置文件和单独的代理。
Proxychains — 无支持的任何应用程序的代理
某些应用程序不支持通过环境变量或自己的参数设置代理。在这种情况下,proxychains 会派上用场 — 这是一个拦截任何程序的网络调用并通过代理转发的工具。这对于用 Python 编写的解析器或专用工具尤其有用。
安装 proxychains
# Ubuntu / Debian sudo apt-get update sudo apt-get install proxychains4 # 检查安装 proxychains4 --version
配置文件设置
# 打开配置 sudo nano /etc/proxychains4.conf # 找到 "dynamic_chain" 行 — 取消注释(去掉 #): dynamic_chain # 注释掉 "strict_chain"(在开头添加 #): # strict_chain # 在文件末尾的 [ProxyList] 部分添加我们的代理: # 格式:类型 主机 端口 [登录] [密码] # 无认证的 HTTP 代理: http 192.168.1.1 3128 # 带认证的 SOCKS5: socks5 host 1080 login password
使用 proxychains
设置完成后,只需在任何命令前添加 proxychains4:
# 通过代理启动 curl proxychains4 curl https://api.ipify.org # 通过代理启动 Python 脚本 proxychains4 python3 parser.py # 通过代理启动 nmap proxychains4 nmap -sT target.com # 通过代理启动 Firefox proxychains4 firefox
dynamic_chain 模式意味着如果一个代理不可用,proxychains 会尝试列表中的下一个。这很方便,如果您有多个代理 — 将它们全部添加到 [ProxyList] 中,您将获得自动轮换。
如何检查代理是否工作
设置完成后,请务必检查流量是否确实通过代理,而不是直接传输。以下是一些快速方法:
通过 curl 检查
# 获取当前 IP(无代理) curl https://api.ipify.org # 结果:您的真实 IP,例如 85.12.34.56 # 通过代理获取 IP curl -x http://login:password@host:port https://api.ipify.org # 结果应不同 — 这是代理服务器的 IP # 获取 IP 的详细信息 curl -x http://login:password@host:port https://ipinfo.io/json
检查环境变量
# 查看设置的代理变量 env | grep -i proxy # 预期结果: # http_proxy=http://login:password@host:port # https_proxy=http://login:password@host:port
检查代理服务器的可用性
# 检查代理端口是否开放并响应 nc -zv host port # 例如:nc -zv 192.168.1.1 3128 # 如果未安装 nc: telnet host port
✅ 代理检查清单
- curl 响应中的 IP 与您的真实 IP 不同
- ipinfo.io 中的国家和城市与所选代理相符
- 没有
Connection refused或407 Proxy Authentication Required错误 - 连接速度可接受(通过 curl 检查,使用标志
-w "%{time_total}")
实际场景:解析、监控、多账户操作
让我们考虑用户在 Linux 上设置代理时最常遇到的具体任务。
场景 1:在 Linux 服务器上解析 Wildberries 和 Ozon
市场卖家通常在带有 Ubuntu 的 VPS 上运行价格解析器。Wildberries 和 Ozon 积极阻止来自服务器 IP 地址的请求。为了绕过这种保护,需要使用住宅代理 — 它们看起来像普通的家庭用户。
推荐的市场解析设置方案:
- 在文件
~/.bashrc中设置带有 住宅代理 的环境变量 - 如果使用 Python 脚本 — 确保
requests库读取环境变量(默认情况下会读取) - 为了轮换 IP,请在 proxychains 中设置多个代理,使用
dynamic_chain模式 - 在请求之间添加延迟(1-3 秒) — 这降低了被封锁的风险
- 每 50-100 个请求后检查 IP,通过
curl https://api.ipify.org检查
场景 2:在 Avito 上监控竞争对手的价格
Avito 根据多个标准阻止请求:请求频率、User-Agent 类型、IP 地址。要在 Linux 服务器上监控广告,请使用以下方法:
# 通过代理和正确的头部请求 Avito 的示例 curl -x http://login:password@host:port \ -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36" \ -H "Accept-Language: ru-RU,ru;q=0.9" \ -H "Accept: text/html,application/xhtml+xml" \ "https://www.avito.ru/moskva/nedvizhimost"
对于 Avito,使用俄罗斯 IP 地址的代理尤其重要。具有所需城市地理位置的住宅代理可以查看与特定地区相关的广告。
场景 3:通过 Linux 使用 Facebook Ads 和 Instagram
在 Linux 上工作的套利者(通常通过 VPS)使用反检测浏览器管理广告账户。工作方案:
- 在 Linux 上安装 Dolphin Anty 或 AdsPower(两者都有 Linux 版本)
- 为每个 Facebook Ads 账户创建单独的浏览器配置文件
- 在每个配置文件的设置中指定单独的代理
- 对于 Facebook 和 Instagram,推荐使用移动代理 — 它们具有真实的移动运营商 IP,封锁风险最小
- 此时不需要 Linux 的系统代理 — 反检测浏览器在每个配置文件级别管理代理
Linux 上代理设置方法的比较
| 方法 | 覆盖范围 | 复杂性 | 更适合于 |
|---|---|---|---|
| 环境变量 | 大多数 CLI 工具 | 低 | 脚本、curl、pip |
| GNOME GUI | GNOME 应用程序 | 低 | 无终端的桌面 |
| APT 配置 | 仅限 APT | 低 | NAT 后的服务器 |
| Proxychains | 任何应用程序 | 中等 | 解析器、第三方工具 |
| 浏览器设置 | 仅限浏览器 | 低 | 在浏览器中的手动操作 |
在 Linux 上设置代理时的常见错误
- 仅小写变量 — 某些程序仅读取
HTTP_PROXY(大写),其他程序仅读取http_proxy。请同时设置这两种选项。 - 忘记 source — 修改
.bashrc后,需要执行source ~/.bashrc,否则更改不会生效。 - 代理在 sudo 下不起作用 — 使用 sudo 时,用户的环境变量不会传递。使用
sudo -E以传递变量。 - localhost 通过代理 — 始终在
no_proxy中添加localhost,127.0.0.1的值。 - URL 格式不正确 — 对于 HTTP 代理,务必指定方案:
http://或socks5://。
结论
在 Linux Ubuntu 和 Debian 上设置代理是一个可以根据您的目标通过多种方式解决的任务。对于大多数任务,环境变量就足够了:它们覆盖 curl、wget、pip 和大多数脚本。要全面覆盖任何应用程序的流量,请使用 proxychains。对于浏览器 — 使用内置设置或通过参数 --proxy-server 启动。对于 APT — 单独的配置文件。
主要原则:根据具体任务选择方法。如果您只需要为一个脚本设置代理,则无需设置系统代理。反之亦然 — 如果服务器的所有流量都必须通过代理,则只需在 /etc/environment 中设置一次变量,您就可以忘记它。
如果您使用 Linux 进行市场解析、价格监控或自动化请求,请注意 住宅代理 — 它们具有真实的家庭用户 IP,几乎不受 Wildberries、Ozon 和 Avito 的封锁。对于通过反检测浏览器在 Linux 上处理 Facebook Ads 和 Instagram 广告账户,移动代理 是一个不错的选择 — 封锁风险最小,平台信任度最高。