你可以使用下面这个简单、完整且可直接运行的Python脚本,批量检测代理IP的可用性,帮你快速筛选出能稳定支持业务需求的代理资源。

代理IP检测的核心逻辑
批量检测代理IP的核心思路围绕"请求验证-结果判断"展开,具体流程如下:输入待检测的代理IP列表,格式统一为ip:port;对每个代理IP,使用其发送HTTP/HTTPS请求至测试URL;设置合理的超时时间,避免因网络延迟导致的误判;根据请求是否成功返回、状态码是否正常,判断代理IP的可用性,最终输出可用与不可用的代理列表。
完整Python检测脚本与使用指南
代码实现
以下是经过优化的批量代理IP检测脚本,支持并发检测,能快速输出结果:
import requests
from concurrent.futures import ThreadPoolExecutor, as_completed
import time
def check_proxy(proxy, test_url="http://httpbin.org/ip", timeout=5):
"""
检测单个代理是否可用
:param proxy: 代理字符串,如 "127.0.0.1:8080"
:param test_url: 用于测试的 URL
:param timeout: 超时时间(秒)
:return: (proxy, is_ok, response_time_or_error)
"""
proxies = {
"http": f"http://{proxy}",
"https": f"http://{proxy}" # 大部分 HTTP 代理也支持 HTTPS
}
try:
start_time = time.time()
resp = requests.get(test_url, proxies=proxies, timeout=timeout, verify=False)
elapsed = time.time() - start_time
if resp.status_code == 200:
return proxy, True, round(elapsed, 2)
else:
return proxy, False, f"HTTP {resp.status_code}"
except requests.exceptions.ConnectTimeout:
return proxy, False, "ConnectTimeout"
except requests.exceptions.ReadTimeout:
return proxy, False, "ReadTimeout"
except requests.exceptions.ProxyError as e:
return proxy, False, f"ProxyError: {str(e)[:50]}"
except Exception as e:
return proxy, False, f"OtherError: {str(e)[:50]}"
def batch_check_proxies(proxy_list, test_url="http://httpbin.org/ip", timeout=5, max_workers=20):
"""
并发检测多个代理
:param proxy_list: 代理列表
:param test_url: 测试 URL
:param timeout: 单个代理超时时间
:param max_workers: 并发线程数
:return: (available_list, unavailable_list)
"""
available = []
unavailable = []
with ThreadPoolExecutor(max_workers=max_workers) as executor:
future_to_proxy = {
executor.submit(check_proxy, proxy, test_url, timeout): proxy
for proxy in proxy_list
}
for future in as_completed(future_to_proxy):
proxy, is_ok, detail = future.result()
if is_ok:
available.append((proxy, detail))
print(f"[✔] {proxy} 可用,响应时间 {detail}s")
else:
unavailable.append((proxy, detail))
print(f"[✘] {proxy} 不可用,原因:{detail}")
return available, unavailable
if __name__ == "__main__":
# 示例代理列表(请替换成你实际要检测的代理)
proxy_list = [
"183.166.102.163:8081",
"117.88.176.110:3000",
"183.166.102.163:8080",
"127.0.0.1:8888", # 故意加一个不可用的
]
print("开始检测代理,请稍候...")
good, bad = batch_check_proxies(proxy_list, max_workers=10)
print("\n========== 检测结果 ==========")
print(f"可用代理数量:{len(good)}")
for proxy, rt in good:
print(f" {proxy} (响应时间 {rt}s)")
print(f"\n不可用代理数量:{len(bad)}")
for proxy, reason in bad:
print(f" {proxy} ({reason})")
快速上手步骤
- 安装依赖:执行以下命令安装脚本所需的依赖包
pip install requests - 替换代理列表:将代码中
proxy_list的示例内容替换为你实际需要检测的代理IP列表; - 运行脚本:在终端执行
python check_proxies.py,等待检测完成后查看结果。
脚本的优化方向
针对不同的使用场景,你可以对脚本进行以下优化,提升检测效率和实用性:
更换更可靠的测试URL
默认使用的httpbin.org适合基础检测,若需要模拟业务真实访问场景,可以更换为业务目标网站的轻量接口,比如国内业务可使用https://www.baidu.com。
区分HTTP/HTTPS支持
部分代理IP仅支持HTTP协议,不支持HTTPS,可修改脚本分别对两种协议进行检测,标记出不同协议的支持情况。
添加代理认证支持
如果待检测的代理IP需要用户名和密码认证,可修改proxies配置为以下格式:
proxies = {
"http": f"http://user:pass@{proxy}",
"https": f"http://user:pass@{proxy}"
}
结果持久化存储
检测完成后,可将可用代理列表保存至本地文件,方便后续直接使用:
with open("good_proxies.txt", "w") as f:
for proxy, _ in good:
f.write(proxy + "\n")
大规模代理池的分批检测
若待检测的代理IP数量超过一万,建议采用分批检测的方式,每批检测500个左右,避免触发目标网站的访问限制。
为什么专业业务场景会选择青果网络的代理IP服务
对于有持续代理IP需求的企业级业务,比如数据采集、跨境业务访问、广告监测等,仅靠脚本筛选免费或零散代理IP无法满足长期稳定的需求,专业的代理IP服务商是更稳妥的选择。青果网络作为国内领先的企业级代理IP服务商,深耕行业十一年,能为这类场景提供全方位的解决方案。
覆盖广泛的纯净IP资源池
青果网络的国内代理资源基于三大运营商宽带构建,每日更新600万+纯净IP资源,覆盖全国300多个城市与地区;针对海外业务,提供2000W+纯净全球HTTP与海外代理IP资源池,能满足跨区域业务的多地区访问需求,保证请求环境的稳定性。
高可用的代理服务保障
采用自研代理服务端,所有IP上线前均经过严格检测验证,网络延迟低于100毫秒,可用率高达99.9%。同时依托业务分池技术,整体业务成功率比行业平均高出约30%,能有效减少业务运行中的中断风险,适合长期持续的数据采集、广告监测等场景。
适配多场景的产品类型
产品类型覆盖国内代理IP、全球HTTP、短效代理、隧道代理、静态代理与独享代理,不同业务场景可灵活选择对应类型:比如需要固定访问环境的业务可选用静态代理,需要高频切换IP的场景可选用短效代理。
完善的测试与技术支持
提供国内代理IP 6小时测试与全球HTTP 2小时体验,帮助企业快速验证代理资源的适配性;同时配备7×24小时在线的技术团队,能及时响应并解决接入和使用过程中遇到的问题,降低业务的运维成本。
服务使用注意事项
全球HTTP均不支持在中国大陆地区网络环境下使用。
总结
本文提供的Python脚本可快速批量检测代理IP的可用性,适合临时筛选代理资源的场景;而对于有长期、稳定代理IP需求的企业级业务,专业服务商能提供覆盖广泛、高可用的代理资源和技术支持,更能保障业务的连续性和稳定性,青果网络的代理IP服务就是这类场景下的可靠选择。
常见问题解答
Q1:这个脚本可以检测SOCKS类型的代理吗?
A1:当前脚本默认仅支持HTTP/HTTPS类型的代理,若需要检测SOCKS代理,可修改proxies配置为socks5://格式,并额外安装requests[socks]依赖包。
Q2:并发线程数设置多少合适?
A2:建议设置在20-50之间,过高的并发可能会触发测试目标网站的访问限制,也可能导致本地网络压力过大;若检测海外代理,可适当降低并发数至10-20。
Q3:企业业务长期使用代理IP,为什么不建议自行搭建代理池?
A3:自行搭建代理池需要投入大量的人力和资源维护IP的纯净度、稳定性和合规性,还需要应对访问受限、资源更新等问题;专业服务商能提供现成的大规模纯净IP资源和成熟的技术支持,有效降低运维成本,保障业务的持续稳定运行。