先别急着换IP,先弄清卡在哪一步
代理IP连不上,很多人的第一反应是"这IP废了,换一个"。但实际排查下来,十次里头有六七次根本不是IP本身的问题——端口末尾少填一位、密码复制时多带了个空格、公司网络的出口IP变了却没更新白名单,这些毛病全都长着一张"IP坏了"的脸。
把排查拆成三项,顺序别乱:先看连通性,能不能连上;再看鉴权,连上了让不让进;最后看白名单,服务端认不认你这台机器。前一项没通过,后面两项查了也是白查。
第一项:连通性——先确认能不能"敲开门"
这一步只关心一件事:你的机器和代理服务器的端口,能不能说上话。跟账号、密码、权限统统无关。
最省事的测法是直接捅端口,Windows 用 PowerShell 自带的命令就行,Mac 和 Linux 用 telnet:
# Mac / Linux:能连上会显示 Connected,或端口开放提示
telnet 代理IP 端口
# Windows PowerShell(系统默认没装 telnet 时用这个)
Test-NetConnection 代理IP -Port 端口
想连业务一起验,就用 curl 走一遍真实请求,加个超时参数免得干等:
# -x 指定代理,-m 10 表示最多等 10 秒,-I 只取响应头
curl -x http://账号:密码@代理IP:端口 -m 10 -I https://目标站点
看到 Connected,或者 curl 十几毫秒就回来了,说明链路是通的,问题在后面两项。如果提示 timeout、Connection refused,那就老老实实待在这一层。
卡在连通性上,八成是这几种情况。端口填错最常见,尤其是把 8080 写成 80、把 HTTPS 端口当 HTTP 端口用,多试两个数字往往就通了。其次是 IP 已经过期,动态类代理IP都带时效,短的 2 小时,长的能到 360 小时,用着用着失效了很正常,回到后台看一眼剩余时长就知道。还有一种容易被忽略:本机网络本身有限制,部分公司办公网、校园网会封掉非常用端口,同一组参数换到手机热点上一试就通,那问题就出在网络策略上,不在代理。
第二项:鉴权——门开了,暗号也得对得上
端口通了却还是返回 407,或者一直卡在等待响应,基本就是鉴权环节出了问题。这个环节查的是三样东西:协议类型、账号密码、端口归属。
import requests
proxies = {
"http": "http://账号:密码@代理IP:端口",
"https": "http://账号:密码@代理IP:端口",
}
r = requests.get("https://目标站点", proxies=proxies, timeout=10)
print(r.status_code)
这里有个特别常见的坑:https 的地址,代理前缀还是写 http://,别顺手改成 https://。写反了会直接连不上,报错还特别含糊,看着像IP有问题。
密码复制时带上首尾空格,是第二个高频原因。在后台点"复制"按钮拿到的字符串,粘到配置文件里肉眼看不出来,但服务端校验就是不过。把账号密码换成手打一遍,往往立刻就好。第三是协议类型对不上,账号开通的是 SOCKS5,代码里却按 HTTP 代理填的,端口自然也不一样——这两种协议的端口通常不互通,翻一下开通记录核对一下即可。
第三项:白名单——服务端认不认你这台机器
有些代理走的是 IP 白名单认证:不校验账号密码,只看发起请求的那台机器的出口 IP 在不在名单里。这种模式省事,但换网络环境就等于换了身份。
比如你在家里调试得好好的,第二天带着笔记本到公司接着跑,出口IP变成了公司宽带的那一个,服务端一看不在名单里,请求直接被挡在门外。云服务器也一样,重启或者重建实例后弹性IP可能变化,白名单就失效了。
查出口IP很简单,在常用搜索引擎里输入 IP 两个字,排在最上面的那个地址就是。拿到之后回到代理商后台,把它加进白名单列表,保存后一般十几秒生效。连公司WiFi、插网线、开热点,得到的出口IP可能都不一样,这部分建议养成固定环境的习惯——真要在多处切换使用,优先选支持账号密码认证的方式,比反复改白名单省心。神龙IP的静态高级套餐走的是长期固定IP、运营商合作资源,搭配自营机房线路,这类固定场景下的稳定性会比临时IP好不少。
一张表,对着报错找原因
把现象和原因对上号,能省掉大半瞎猜的时间:
| 现象 | 大概率原因 | 先查哪一项 |
|---|---|---|
| 一直转圈后 timeout | 端口不通或IP已过期 | 连通性 |
| Connection refused | 端口填错、服务端未放行 | 连通性 |
| 407 Proxy Authentication Required | 账号密码错误或协议类型填反 | 鉴权 |
| 403 Forbidden / 直接拒绝 | 本机出口IP不在白名单 | 白名单 |
| 浏览器正常,代码报错 | 系统代理已生效但代码未指定代理参数 | 鉴权 |
| 昨天可用,今天全部失效 | IP时效到期或出口IP变动 | 连通性 / 白名单 |
顺带提一句,浏览器里能开、脚本里连不上,这种"半通不通"最迷惑人。原因往往是你本机的系统代理开着,浏览器自动跟着走了,而代码里的请求根本没带代理参数,走的是本地网络。这种时候看返回结果里显示的IP是哪儿的,一眼就清楚了。
想少走这条路,选服务的时候看三点
排查方法解决的是"已经出问题怎么办",但经常出问题本身就说明选型上有点将就。
第一看线路是不是自己家的。机房自营和非自营的差别,平时看不出来,一到大流量或者高峰期就显形。神龙IP是自营机房,接口响应在 30ms 上下,带宽 6-15M 可按需定制,这类指标对长时间跑数据采集、做各地搜索排名测试的人来说,直接决定了任务能不能按计划跑完。
第二看认证方式够不够灵活。如果你的使用场景横跨办公室、家里、多台云主机,账号密码认证明显比 IP 白名单更省事,不用每换一个地方就回去改一次名单。
第三看套餐和你的时长需求对不对得上。神龙IP一共四种:充值套餐、动态高级(6Mbps 峰值、日更 200 万+ IP、2-360 小时时效)、动态独享(10Mbps 峰值、2-360 小时时效)、静态高级(长期固定IP)。短周期任务用动态的够了,需要长期稳定出口的,别硬拿动态IP凑合,那等于把排查工作变成日常。
至于协议,IKEv2、PPTP、L2TP、SSTP、SOCKS5 都支持,数据传输全程加密。开通时看清楚自己拿到的是哪一种、对应哪个端口,能避开大量"看着像IP坏了"的假故障。
常见问题
Q:返回 407 一定是密码错了吗?
不一定。407 只说明"需要鉴权且没通过",密码错误、账号过期、协议类型填错、端口用错,都会走到这个提示上。先把账号密码手打一遍,再核对协议和端口,三个都排除了再联系服务商。
Q:浏览器能上网,Python 脚本里代理就用不了,为什么?
因为两者走的不是一条路。浏览器默认跟随系统代理设置,脚本里不显式写 proxies 参数就走本地网络。还有一种情况是脚本里只写了 http 没写 https,一半请求走了代理一半没走,看起来就像"时灵时不灵"。
Q:同一个代理IP,上午好用,下午全超时?
先看时效。动态类IP都有明确的有效时长,短的 2 小时,用完就该重新获取新的IP。如果时效还没到,再看本机出口IP有没有变——换了WiFi、重连了云主机,白名单都可能失效。
Q:白名单里已经加了自己的IP,还是连不上?
检查三件事:加的是不是当前真实的出口IP(用搜索引擎查一次最准);保存后有没有等生效;以及这台机器是不是还有一层内网代理在中间转了一道,导致服务端看到的并不是你填的那个地址。




