一、先弄明白:HTTP代理在网络里到底做了什么
简单说,HTTP代理就是你和目标网站之间的一个"中转站"。你的请求先发给代理服务器,代理服务器替你去访问目标网站,再把结果原样带回来。对目标网站来说,访问者是代理服务器,而不是你本机。
这个机制带来两个直接好处:一是出口IP变了,多个任务可以用不同IP分别发起;二是请求有了统一出口,方便集中管理、限速和排查。
日常真正会用到HTTP代理的场景并不多,主要集中在下面几类:
- 电商运营需要同时打理多个店铺后台,希望每个后台走独立的出口IP;
- 数据采集、比价、舆情监控类程序需要按频率切换IP,避免被目标站点限流;
- 开发和测试同学需要模拟不同地区、不同出口的请求,验证接口表现;
- 短视频、社媒矩阵团队需要多账号分开环境运行。
搞清楚"为什么要设代理"之后,剩下的就是在哪里设、怎么设的问题。下面按浏览器 → 操作系统 → 应用代码的顺序,一层层演示。
二、浏览器端:三种设置方式,按需求挑一种
浏览器是最容易上手的一层。多数浏览器默认跟随系统代理,所以只要系统设好了,浏览器就自动生效。但也有一部分浏览器支持独立设置,不受系统影响。
方式一:走系统代理(Chrome、Edge 等)
这类浏览器没有独立的代理设置面板,会直接读取操作系统的代理配置。也就是说,你在 Windows 或 macOS 里设好代理,打开浏览器就生效了。具体系统设置步骤见第三、第四节。
优点是省事,一次配置全局生效;缺点是所有流量一起走代理,不方便只让某个窗口走代理。
方式二:浏览器内独立设置(Firefox)
Firefox 有自己的网络设置,可以单独指定代理,不动系统配置:
- 打开设置页面,进入"网络设置";
- 选择"手动配置代理";
- 在 HTTP 代理一栏填写代理服务器地址和端口;
- 勾选"也将此代理用于 HTTPS",需要认证时填账号密码;
- 保存后刷新页面即可。
这种方式适合"只想让这个浏览器走代理、其他软件保持原样"的情况。
方式三:扩展插件方式(多环境切换)
如果你需要频繁在"直连"和"代理"之间切换,或者要给不同标签页配不同出口,可以在浏览器扩展商店里装一个代理管理类扩展。添加代理时一般填四项:协议类型、服务器地址、端口、认证账号密码,保存后一键切换。
这里提醒一句:扩展里填的认证信息是明文保存在本地的,公用电脑上用完记得删掉配置文件。
| 设置方式 | 影响范围 | 适合人群 | 切换便利度 |
|---|---|---|---|
| 跟随系统代理 | 全系统所有软件 | 普通用户、只想全局生效 | 需回系统里改 |
| 浏览器独立设置 | 仅该浏览器 | 多环境对照测试 | 中等 |
| 代理管理扩展 | 浏览器内可细分 | 运营、多账号场景 | 最高,一键切换 |
三、Windows 系统端:从设置入口到保存应用
Windows 10 和 Windows 11 的入口略有差异,但都在"设置"里:
- 打开"设置",进入"网络和 Internet";
- 找到"代理"(Windows 11 在"网络和 Internet"底部);
- 在"手动设置代理"一栏,把"使用代理服务器"打开;
- 地址填代理服务器 IP,端口填对应端口;
- 如果需要账号密码认证,勾选"代理服务器需要密码",输入用户名和密码;
- 点击"保存",配置立即生效,不需要重启电脑。
下面这行"例外列表"经常被忽略:如果填了例外地址(比如 localhost;127.0.0.1;内网网段),这些地址就不会走代理。本地调试接口卡住不响应,很多时候就是这里没写全。
另外,Windows 的"自动检测设置"和"使用设置脚本"两个开关,平时保持关闭即可,除非你的网络管理员明确要求开启。
四、macOS 系统端:协议要一个个勾选
macOS 的逻辑和 Windows 不太一样,它是按协议分别设置的:
- 打开"系统设置",进入"网络";
- 点击当前使用的网络连接(Wi-Fi 或有线),进入"详细信息";
- 找到"代理"页签;
- 要代理网页访问,就勾选"网页代理(HTTP)"和"安全网页代理(HTTPS)";
- 两项分别填写服务器地址和端口,需要账号密码时打开"代理服务器需要认证";
- 点"好"再点"应用",配置才会真正写入。
注意两个容易踩的点:一是只勾了 HTTP 没勾 HTTPS,结果网页依然是本机IP;二是改完没点"应用",配置根本没保存。
五、应用端:代码和命令行里怎么写代理
浏览器和系统都设好了,程序却还是走本机IP?因为很多应用根本不读系统代理,得在代码或命令里单独告诉它。
1. 命令行:环境变量最通用
临时设置(当前窗口有效):
# macOS / Linux
export http_proxy="http://用户名:密码@代理服务器地址:端口"
export https_proxy="http://用户名:密码@代理服务器地址:端口"
# Windows 命令提示符
set http_proxy=http://用户名:密码@代理服务器地址:端口
set https_proxy=http://用户名:密码@代理服务器地址:端口
也可以单独给一次请求指定代理,不影响其他命令:
curl -x http://用户名:密码@代理服务器地址:端口 https://目标站点地址
2. Python 请求里指定代理
import requests
proxies = {
"http": "http://用户名:密码@代理服务器地址:端口",
"https": "http://用户名:密码@代理服务器地址:端口",
}
resp = requests.get("https://目标站点地址", proxies=proxies, timeout=10)
print(resp.status_code)
采集类程序通常会把代理做成池子:从服务商的提取链接拿到一批IP,随机取一个塞进 proxies,失败就换下一个。这样单个IP不会被高频访问拖垮。
3. Node.js 里指定代理
const axios = require('axios');
const res = await axios.get('https://目标站点地址', {
proxy: {
host: '代理服务器地址',
port: 端口号,
auth: { username: '用户名', password: '密码' }
},
timeout: 10000
});
4. 白名单认证和账密认证怎么选
大多数服务商支持两种认证方式:账号密码认证(把用户名密码写在代理地址里)和IP白名单认证(把你服务器的公网IP加到白名单,请求时不带账号密码)。
固定服务器跑长期任务,用白名单更省事,代码里也不用硬编码密码;本机经常换网络、IP不固定的,用账密认证更合适。
六、设置完怎么验证:三个动作确认真的生效
配置完别急着跑业务,先做三步验证,能省掉后面80%的排查时间。
第一步,查出口IP。浏览器打开任意IP查询页面,看到的是代理IP而不是你本机IP,说明代理通了。程序里也可以请求一个返回来源IP的接口,把结果打印出来比对。
第二步,看响应速度。代理转发会带来额外延迟,正常的国内代理延迟在几十毫秒级别。如果长时间卡在等待响应,优先怀疑端口填错或认证没通过。
第三步,看并发表现。单个请求通,不代表并发也通。用小批量并发跑一下,观察是否出现大量超时。
| 现象 | 最可能的原因 | 处理办法 |
|---|---|---|
| 报407错误 | 账号密码错误或未携带认证 | 核对用户名密码,检查是否漏写认证段 |
| 连接超时 | 地址或端口填错、白名单IP未添加 | 核对地址端口,确认本机公网IP已加入白名单 |
| 网页能开、程序不通 | 程序不读系统代理 | 在代码或环境变量中单独指定代理 |
| 只有HTTP通、HTTPS不通 | 只配了HTTP协议 | 补上HTTPS代理配置 |
| 本地接口访问失败 | 例外列表没写内网地址 | 把 localhost、127.0.0.1、内网网段加入例外 |
七、选对代理服务,少走一半弯路
配置本身并不难,难的是配完之后稳不稳。市面上做国内HTTP代理的服务商不少,选择时建议重点看三件事:IP是不是独享、延迟稳不稳、提取和管理方式够不够方便。
做国内业务的团队,可以优先考虑天启HTTP。它提供 HTTP、HTTPS、SOCKS5 协议的国内代理IP,支持短效和长效两类产品,配套 API 提取链接和账密、IP白名单两种认证方式,程序里接入基本就是"拿链接—取IP—填进代码"三步。控制台可以查看使用量,方便估算成本。
实操建议:先用小批量短效IP跑通整条链路,确认代码、认证、并发都没问题了,再根据业务量切换到长效IP或隧道代理这类更省心的接入方式。
常见问题
Q:浏览器设了代理,为什么查IP还是本机的?
先确认保存是否生效(Windows点"保存"、macOS点"应用"),再看HTTPS代理有没有一起配上。如果装了代理管理扩展,检查扩展是否把当前窗口设成了"直连"。
Q:系统代理设好了,Python脚本为什么还是直连?
大部分运行库不会自动读取系统代理。要么在代码里显式传 proxies 参数,要么在运行前设置 http_proxy 和 https_proxy 环境变量。
Q:代理地址里为什么要带用户名和密码?
这是账密认证方式,格式是 http://用户名:密码@地址:端口。如果你的服务器公网IP已经加入白名单,就可以省掉这段认证信息。
Q:一个代理IP能同时给多个程序用吗?
技术上可以,但并发太高容易触发目标站点的限流。多任务场景建议按任务分配不同IP,或者使用短效IP定期更换。
Q:公司内网环境下设代理需要注意什么?
注意例外列表,把内网地址、localhost、127.0.0.1 都加进去,否则访问内部系统会绕到外面去,导致打不开。
Q:代理设置会影响电脑其他软件吗?
系统级代理会影响所有读取系统配置的软件。只想让浏览器走代理,就改用浏览器独立设置或扩展方式;只想让某个脚本走代理,就在代码里单独指定。
Q:域名和IP两种代理地址,填哪个?
服务商给什么填什么,两者都可以。如果遇到解析异常,优先试试直接填IP地址加端口。





