上个月帮朋友跑一个数据采集的小活,拿到20条代理IP直接开跑,结果十分钟断了八回。停下来逐条一测才发现:20条里有6条压根连不上,还有3条的归属地跟页面标的对不上。要是开工前花两分钟检测一遍,这些坑一个都踩不着。
检测代理IP其实不难,拆开就三步:测连通、验归属、看延迟。每一步我都给你能直接复制的命令,照着敲就行。
第一步:测连通,先确认它活着
最直观的办法是浏览器挂上代理随便开个网页,能打开就算通。但一条条开浏览器太慢,用命令行快得多。Windows 10 以后的系统都自带 curl,Mac 和 Linux 打开终端就能用:
curl -x http://223.20.105.16:16816 http://cip.cc --connect-timeout 8
把中间的IP和端口换成你自己的。如果代理是 SOCKS5 协议,把 http:// 换成 socks5:// 就行。
结果怎么看:返回一段带IP和归属地的文字,说明这条IP是活的;命令卡住不动,或者报 connection refused、timeout,说明这条是死的,直接淘汰,别再浪费时间。
--connect-timeout 8 这个参数别省,意思是8秒内连不上就算失败。不加的话,遇到一条半死不活的IP,命令可能干等几十秒,测十条能把你等到怀疑人生。
第二步:验归属,出口IP要跟标的一致
连通只是及格线。做各地搜索排名测试或者按城市投放的活儿,出口IP在哪个城市,看到的结果就是哪个城市的,所以第二步要核对出口IP的归属地。
巧的是,上一步访问的 cip.cc 返回内容里就带着IP和归属地,顺手就能核:
curl -x socks5://223.20.105.16:16816 http://cip.cc --connect-timeout 8
重点看两处:一是返回的IP是不是你买的那一条——正规的高匿代理,看到的出口就是代理IP本身;二是归属城市对不对,标的是苏州,出口就应该在苏州。
这里还能顺带验匿名度。如果返回内容里出现了你自己宽带的真实IP,说明这条代理是透明类型,对方能看到你的原IP。做对IP比较敏感的事情之前,这类IP要避开。
IP多的时候,写个小脚本一次跑完,连通和归属一起验:
import requests
def check(ip, port):
proxies = {"http": f"http://{ip}:{port}",
"https": f"http://{ip}:{port}"}
try:
r = requests.get("http://cip.cc",
proxies=proxies, timeout=8)
print(ip, "可用:", r.text[:60].replace("\n", " "))
except Exception as e:
print(ip, "不可用:", e.__class__.__name__)
check("223.20.105.16", "16816")
把要测的IP放进列表循环调用就行,几行代码省掉半小时手工活。
第三步:测延迟,快和稳比通更重要
通了不代表好用。一条延迟两三秒的IP,打开普通网页还行,放到对速度敏感的任务里就是灾难。所以最后一步是给IP把把脉——又快又稳才算真可用。
curl 自带计时功能,一条命令把各阶段耗时都打出来:
curl -x http://223.20.105.16:16816 -o /dev/null -s \
-w "连接:%{time_connect}s 首字节:%{time_starttransfer}s 总计:%{time_total}s\n" \
http://cip.cc
单次快不算数,连测十次看波动:
for i in 1 2 3 4 5 6 7 8 9 10
do curl -x http://223.20.105.16:16816 -o /dev/null -s \
-w "%{time_total}s\n" http://cip.cc
done
这是 Mac 和 Linux 的写法,Windows 用户把命令手动重复跑几次,效果一样。十次结果摆在一起,这条IP的成色一目了然,对照下面的标准判断:
| 总耗时 | 评价 | 建议 |
|---|---|---|
| 0.5秒以内 | 很快 | 放心用 |
| 0.5~1.5秒 | 正常 | 大多数任务没问题 |
| 1.5~3秒 | 偏慢 | 对速度敏感的任务慎用 |
| 3秒以上或频繁超时 | 不合格 | 直接淘汰 |
除了快,还要稳:十次里成功九次以上算过关;时好时坏的那种,哪怕平均速度再漂亮也别用,跑起业务来断一次的损失,比慢十秒大得多。
检出问题IP,怎么处理最省事
三步测完,结果无非四种:全过、IP对不上、延迟偏高、时好时坏。第一种直接用,后三种的处理思路其实一样——找服务商换,而不是自己硬调。个人没什么好办法把一条劣质IP救活,与其反复折腾,不如让服务商补货。
这也反过来说明了选对服务商有多重要。我现在用的是神龙IP,最大的感受是检测这一步变得很轻松:它有200+城市精准定位,你点哪个城市,第二步验归属时出口就在哪个城市,基本不会出现"标的苏州、出口在别处"的尴尬;响应速度也快,官方标称30ms级别,实测多数请求总耗期能压在1秒以内。
套餐选动态高级就够大部分场景用,每天更新200万+的IP,时效2到360小时可以自己定。IP质量底子好了,三步检测基本就是走个流程,平时抽测几条,心里更有底。
常见问题
Q: 检测会不会把IP用坏?多久测一次合适?
正常检测就是一次普通访问,不会对IP造成损耗。建议拿到IP先完整测一轮,业务开跑前再抽测几条;时效长的IP每隔几个小时抽测一次就够了。
Q: curl显示连接成功,但换目标网站就打不开?
多半是协议对不上,比如把HTTP代理当SOCKS5用,把 -x 后面的协议头换一下再试。也可能是目标网站对这条IP有限制,换一个目标地址对比测试,就能分清是IP的问题还是网站的问题。
Q: 免费IP和付费IP,检测标准要一样严吗?
免费IP存活率低,建议现测现用,测完立刻上业务;付费IP质量有底,抽检就行,重点看延迟和归属地两项。不管哪种,三步流程都值得走一遍,成本也就两分钟。
Q: 检测时一切正常,跑业务中途却断了?
先看时效——动态IP本身有生命周期,到期失效是正常现象,不是检测漏了。把程序里的超时和重试参数设好,或者选时效更长的套餐,中途断线会少很多。




