游客发表
HTTP代理设置这事,代理说难不难,设置说简单也不简单。代理我见过太多人卡在“代理能上外网”这一步,设置却不知道代理其实分好几种——HTTP代理、代理HTTPS代理、设置SOCKS代理,代理它们的设置设置入口和生效范围完全不同。
先搞清楚一个核心事实:代理不是代理翻墙工具,它是设置个“中间人”。你的代理请求先发给代理服务器,由它替你访问目标网站,设置再把结果转交给你。代理所以设置代理的设置本质,就是代理告诉系统或软件“把流量交给谁”。最常见的坑在于——你以为设置了系统代理就万事大吉,结果浏览器能打开网页,命令行里curl却依然直连。原因很简单:命令行工具默认不读系统代理。
以Windows系统为例,设置HTTP代理的路径在“设置 → 网络和Internet → 代理”。手动设置里填上IP和端口,比如192.168.1.100:8080,保存后系统级应用就会走这个通道。但注意,这里填的IP如果是局域网地址,那基本是公司或路由器提供的代理;如果是公网IP,那多半是付费代理服务。很多人栽在“代理服务器需要认证”上——用户名密码填错一次,系统不会提醒你,只是所有请求静默失败。
macOS那边大同小异,在“系统偏好设置 → 网络 → 高级 → 代理”里勾选“网页代理(HTTP)”和“安全网页代理(HTTPS)”,填上服务器和端口。有个细节容易被忽略:如果你同时勾选了HTTP和HTTPS代理,但代理服务器只支持HTTP,那访问HTTPS网站会直接报错。这时候别慌,取消HTTPS勾选,只留HTTP,问题往往就解决了。
浏览器层面又是另一套逻辑。Chrome和Edge默认跟随系统代理,但Firefox倔强地用自己的独立设置。在Firefox的“选项 → 网络设置”里,你可以手动指定HTTP代理,还能区分“HTTP代理”和“SOCKS主机”。这里有个实用技巧:如果你用Shadowsocks这类工具,它默认监听本地1080端口,你可以在Firefox里把SOCKS主机填127.0.0.1,端口1080,然后选“SOCKS v5”,这样浏览器流量全走代理,但系统其他应用不受影响。
命令行工具是重灾区。git、curl、wget、npm,每个都有自己的代理环境变量。比如在Linux或macOS终端里,临时设置代理可以这样:
export http_proxy=http://127.0.0.1:8080 export https_proxy=http://127.0.0.1:8080 但这样只对当前终端窗口生效。想持久化,得写进~/.bashrc或~/.zshrc。git的话,单独执行git config --global http.proxy http://127.0.0.1:8080。npm则用npm config set proxy http://127.0.0.1:8080。这些命令记不住没关系,关键要明白:每个工具都独立读取代理配置,没有统一入口。
我自己的经验是,最省心的方式是装一个代理管理工具,比如Proxifier或Clash,它们能强制所有流量走代理,按规则分流。但这类工具本身也有学习成本。如果你只是偶尔用代理访问某个网站,直接在浏览器插件里解决就行——比如SwitchyOmega,它能按域名自动切换代理,比系统设置灵活得多。
最后提醒一个反直觉的现象:设置代理后,访问本地服务(比如localhost:3000)可能会失败。因为代理会拦截所有HTTP请求,包括指向本机的。解决办法是在代理设置里添加“绕过列表”,把localhost、127.0.0.1加进去。Windows系统代理设置窗口下方就有“绕过”输入框,macOS则在代理设置界面的“忽略这些主机与域的代理设置”里填。
代理设置本质是流量路由的选择题,没有标准答案,只有适合你的方案。遇到问题别急着重装系统,先检查代理是不是生效了——用curl -I http://example.com看返回头,如果走代理,响应里通常会有Via字段。这比瞎猜强得多。
友情链接