1446 字
7 分钟

终端使用代理加速的正确方式

🤖AI 摘要
AI

终端使用代理加速的正确方式#

我们在终端使用 Homebrewgitnpmpip 等命令时,经常因为网络问题而安装失败。尤其是第一次安装 Homebrew,不少人需要花很长时间解决,心里不知吐槽了多少遍“该死的网络”。

虽然设置国内镜像确实有用,但镜像有时更新不及时,且没有普适性。今天就介绍一种通用的方法:让终端也走代理。这样无论你用什么包管理器,都能享受代理带来的加速。

本文以 Shadowsocks 为例,其他代理软件(如 Clash、V2Ray)配置思路完全一致,只需找到对应的 HTTP 代理端口即可。

一、macOS & Linux#

1. 基础环境变量#

终端命令行的网络请求默认不会经过代理,我们需要通过设置环境变量来告诉系统使用代理。

在终端中直接执行以下命令可以临时开启代理(仅对当前终端窗口有效):

bash

Terminal window
export http_proxy=http://127.0.0.1:1080
export https_proxy=$http_proxy

注意1080 是 HTTP 代理的默认端口,但你的实际端口可能不同。请打开 Shadowsocks 的偏好设置 → 高级,查看 HTTP 代理端口,将上述命令中的 1080 替换为你自己的端口。

2. 便捷脚本(永久生效)#

每次都手动敲命令太麻烦,我们可以写两个函数,方便随时开关代理。

首先根据你使用的 Shell 决定配置文件:

  • 执行 echo $SHELL 查看 Shell 类型
    • /bin/bash~/.bash_profile
    • /bin/zsh~/.zprofile

然后使用以下命令将脚本追加到对应的配置文件,并立即生效(以下以 .zprofile 为例,请按实际情况替换):

Terminal window
cat >> ~/.zprofile << 'EOF'
function proxy_on() {
export http_proxy=http://127.0.0.1:1080 # 端口按实际情况修改
export https_proxy=$http_proxy
echo -e "终端代理已开启。"
}
function proxy_off() {
unset http_proxy https_proxy
echo -e "终端代理已关闭。"
}
EOF
source ~/.zprofile

之后,你只需要在终端输入 proxy_on 即可开启代理,输入 proxy_off 关闭代理。

3. 验证代理是否生效#

执行以下命令,如果返回的 IP 是你代理服务器的 IP,说明代理生效:

Terminal window
curl cip.cc

或者使用:

Terminal window
curl -I https://www.google.com

如果看到 HTTP/2 200 之类的响应,说明可以正常访问 Google。

注意:有时 Google 会返回 403,这是因为 Google 对某些代理 IP 做了限制,可以换用 cip.cc 验证 IP 归属地。


二、Windows#

Windows 下的配置略有不同,主要有两种方法:通过 CMD/PowerShell 设置环境变量,或者使用图形化工具。

1. 临时设置(CMD)#

在命令提示符中执行:

Terminal window
set http_proxy=http://127.0.0.1:1080
set https_proxy=http://127.0.0.1:1080

这种方法只对当前 CMD 窗口有效,关闭后失效。

2. 永久设置(系统环境变量)#

通过 系统属性 → 高级 → 环境变量,为当前用户或系统添加两个变量:

  • 变量名:http_proxy,值:http://127.0.0.1:1080
  • 变量名:https_proxy,值:http://127.0.0.1:1080

设置后重新打开终端即可生效。

3. PowerShell 便捷函数#

在 PowerShell 中,可以将函数添加到 $PROFILE 中,实现类似 Linux 的开关功能。

首先检查 $PROFILE 文件是否存在:

Terminal window
Test-Path $PROFILE

如果返回 False,则创建它:

Terminal window
New-Item -Path $PROFILE -ItemType File -Force

然后用记事本打开编辑:

Terminal window
notepad $PROFILE

添加以下内容:

Terminal window
function proxy_on {
$env:http_proxy = "http://127.0.0.1:1080"
$env:https_proxy = "http://127.0.0.1:1080"
Write-Host "终端代理已开启。"
}
function proxy_off {
Remove-Item Env:http_proxy -ErrorAction SilentlyContinue
Remove-Item Env:https_proxy -ErrorAction SilentlyContinue
Write-Host "终端代理已关闭。"
}

保存后,重启 PowerShell 或执行 . $PROFILE 使函数生效。之后就可以使用 proxy_onproxy_off 了。


三、其他代理方式#

除了设置环境变量,还有一些更灵活的方式可以实现终端代理。

1. 使用 Socks5 代理#

某些代理软件只提供 Socks5 端口,没有开启 HTTP 代理。此时可以用工具将 Socks5 转换为 HTTP,或者直接设置 ALL_PROXY 变量(某些软件支持 Socks5)。

Terminal window
export all_proxy=socks5://127.0.0.1:1080 # 端口为 Socks5 端口
export http_proxy=socks5://127.0.0.1:1080
export https_proxy=socks5://127.0.0.1:1080

注意:并非所有命令行工具都支持 Socks5,例如 curlwget 支持,但 git 需要额外配置。

2. 为 Git 单独设置代理#

如果你只想让 Git 走代理,而其他命令不走,可以单独配置 Git:

Terminal window
# HTTP 代理
git config --global http.proxy http://127.0.0.1:1080
git config --global https.proxy http://127.0.0.1:1080
# Socks5 代理
git config --global http.proxy socks5://127.0.0.1:1080
git config --global https.proxy socks5://127.0.0.1:1080
# 取消代理
git config --global --unset http.proxy
git config --global --unset https.proxy

3. 使用 proxychains(Linux/macOS)#

proxychains 是一个强大的工具,可以强制任意命令通过代理,无需修改环境变量。

  • 安装:brew install proxychains-ng (macOS) 或 sudo apt install proxychains (Debian/Ubuntu)

  • 配置:编辑 /etc/proxychains.conf,在末尾添加代理信息,如:

    socks4 127.0.0.1 1080
  • 使用:在需要代理的命令前加上 proxychains4(或 proxychains),例如:

    Terminal window
    proxychains4 brew install wget

4. 仅对当前命令临时启用代理#

如果你不想全局开启代理,只想让某一条命令走代理,可以直接在命令前加上环境变量赋值:

Terminal window
http_proxy=http://127.0.0.1:1080 https_proxy=http://127.0.0.1:1080 curl cip.cc

这种方式只对紧跟的命令生效,不影响后续命令。


四、常见问题#

1. 如何获取正确的代理端口?#

  • Shadowsocks:在客户端设置中查看「HTTP 代理端口」,通常默认为 10801087
  • Clash:在配置文件中查看 port(HTTP 代理端口)和 socks-port,或者打开 Clash 面板查看。
  • V2Ray:取决于客户端配置,一般也会提供 HTTP 或 Socks 端口。

2. 为什么设置代理后某些命令仍然很慢?#

可能是 DNS 解析没有走代理。可以尝试设置 ALL_PROXY,或者使用支持远程 DNS 解析的工具(如 Clash 的 redir-host 模式)。对于 curl 等工具,也可以使用 --socks5 参数指定 Socks5 代理。

3. 使用 Google 验证时返回 403#

Google 可能会检测代理 IP 并返回 403,这并不代表代理失效。建议使用 cip.ccip.sb 等 IP 查询网站验证。

终端使用代理加速的正确方式
https://www.daitcc.top/posts/终端使用代理加速的正确方式/
作者
Dait
发布于
2024-04-03
许可协议
CC BY-NC-SA 4.0
如果这篇文章对你有帮助或启发,可以请作者喝杯咖啡 ☕️