返回博客

在Linux Ubuntu和Debian上设置代理:终端、GUI和所有应用程序的逐步指南

完整的Linux Ubuntu和Debian代理设置指南——通过终端、系统设置和单个应用程序。适用于解析、监控和多个账户的操作。

📅2026年4月15日
```html

如果您在 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:porthost: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 的逐步指南

  1. 点击屏幕右上角的图标 → 选择 “设置” (Settings)
  2. 在左侧菜单中向下滚动并选择 “网络” (Network)
  3. 在“网络代理”部分,点击带箭头的按钮(设置图标)
  4. 选择代理模式:
    • 禁用 — 不使用代理
    • 手动 — 您自己输入代理数据(推荐)
    • 自动 — 使用提供商的 PAC 文件
  5. 选择 “手动” 并填写字段:
    • HTTP 代理:输入主机地址和端口
    • HTTPS 代理:相同数据
    • SOCKS 主机:地址和端口(如果使用 SOCKS5)
    • 忽略主机: localhost, 127.0.0.0/8
  6. 关闭窗口 — 设置会自动应用

⚠️ 重要提示

通过 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:手动设置

  1. 打开 Firefox → 点击右上角的三条横线 → “设置”
  2. 向下滚动到 “代理服务器” 部分 → 点击 “设置”
  3. 选择 “手动设置代理”
  4. 填写字段:
    • HTTP 代理:主机地址,端口
    • 勾选“将此代理服务器用于所有协议”
    • 或者单独指定 SOCKS:地址,端口,选择 SOCKS v5
  5. 点击 确定

如果代理需要认证,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 AntyAdsPowerGoLogin — 它们为每个账户创建独立的配置文件和单独的代理。

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 refused407 Proxy Authentication Required 错误
  • 连接速度可接受(通过 curl 检查,使用标志 -w "%{time_total}"

实际场景:解析、监控、多账户操作

让我们考虑用户在 Linux 上设置代理时最常遇到的具体任务。

场景 1:在 Linux 服务器上解析 Wildberries 和 Ozon

市场卖家通常在带有 Ubuntu 的 VPS 上运行价格解析器。Wildberries 和 Ozon 积极阻止来自服务器 IP 地址的请求。为了绕过这种保护,需要使用住宅代理 — 它们看起来像普通的家庭用户。

推荐的市场解析设置方案:

  1. 在文件 ~/.bashrc 中设置带有 住宅代理 的环境变量
  2. 如果使用 Python 脚本 — 确保 requests 库读取环境变量(默认情况下会读取)
  3. 为了轮换 IP,请在 proxychains 中设置多个代理,使用 dynamic_chain 模式
  4. 在请求之间添加延迟(1-3 秒) — 这降低了被封锁的风险
  5. 每 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)使用反检测浏览器管理广告账户。工作方案:

  1. 在 Linux 上安装 Dolphin Anty 或 AdsPower(两者都有 Linux 版本)
  2. 为每个 Facebook Ads 账户创建单独的浏览器配置文件
  3. 在每个配置文件的设置中指定单独的代理
  4. 对于 Facebook 和 Instagram,推荐使用移动代理 — 它们具有真实的移动运营商 IP,封锁风险最小
  5. 此时不需要 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 广告账户,移动代理 是一个不错的选择 — 封锁风险最小,平台信任度最高。

```