如果你需要批量快速检测代理IP的可用性,下面提供一套开箱即用的Python脚本,支持多线程并发检测、自动适配HTTP/HTTPS、超时判断,检测完成后还能自动导出可用代理列表,完全可以直接复制运行。

批量检测代理IP的核心逻辑
检测的核心判断标准
代理IP的可用性需要满足两个核心条件:一是能成功建立网络连接,二是能正常返回测试地址的响应内容。脚本通过向公共测试地址发送请求,判断状态码是否为200,同时捕获超时、连接失败等异常场景,确保检测结果的准确性。
多线程提升检测效率的原因
单线程检测代理IP时,每个请求的等待时间会累积,导致批量检测速度极慢。采用多线程并发机制后,可以同时发起多个检测请求,将100个代理的检测时间从数分钟压缩到十几秒,大幅提升检测效率。
完整可运行的Python代理IP检测脚本
import requests
from concurrent.futures import ThreadPoolExecutor
import time
# ===================== 配置区 =====================
# 你的代理IP列表,格式:ip:端口 或 user:password@ip:端口
PROXY_LIST = [
"123.123.123.123:8080",
"45.67.89.10:3128",
"11.22.33.44:1080",
# 继续添加...
]
# 请求超时时间(秒),超过则判定为不可用
TIMEOUT = 5
# 并发线程数(批量检测速度更快)
MAX_WORKERS = 20
# 测试地址(用于验证代理是否连通)
TEST_URL = "https://httpbin.org/get"
# ====================================================
def check_single_proxy(proxy: str) -> str | None:
"""
检测单个代理是否可用
:param proxy: 代理IP,格式 ip:port
:return: 可用返回代理字符串,不可用返回 None
"""
# 构造代理格式
proxies = {
"http": f"http://{proxy}",
"https": f"https://{proxy}"
}
try:
# 发送测试请求
response = requests.get(
url=TEST_URL,
proxies=proxies,
timeout=TIMEOUT,
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}
)
# 状态码200 且 返回内容包含自身IP,说明代理有效
if response.status_code == 200:
print(f"✅ 可用代理:{proxy}")
return proxy
else:
print(f"❌ 不可用代理:{proxy} | 状态码:{response.status_code}")
return None
except requests.exceptions.Timeout:
print(f"❌ 超时代理:{proxy}")
return None
except requests.exceptions.ConnectionError:
print(f"❌ 连接失败:{proxy}")
return None
except Exception as e:
print(f"❌ 代理异常:{proxy} | {str(e)[:30]}")
return None
def batch_check_proxies(proxy_list: list) -> list:
"""
批量检测代理IP
:param proxy_list: 代理列表
:return: 可用代理列表
"""
print(f"开始检测,共 {len(proxy_list)} 个代理...\n")
start_time = time.time()
# 多线程并发检测(大幅提升速度)
with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
results = list(executor.map(check_single_proxy, proxy_list))
# 过滤掉 None,保留可用代理
valid_proxies = [p for p in results if p is not None]
# 输出结果
print(f"\n==================== 检测完成 ====================")
print(f"总耗时:{round(time.time() - start_time, 2)} 秒")
print(f"总代理数:{len(proxy_list)}")
print(f"可用代理数:{len(valid_proxies)}")
print(f"可用代理列表:\n{valid_proxies}")
return valid_proxies
if __name__ == "__main__":
# 执行批量检测
valid_list = batch_check_proxies(PROXY_LIST)
# 可选:将可用代理保存到文件
with open("可用代理.txt", "w", encoding="utf-8") as f:
f.write("\n".join(valid_list))
print("\n可用代理已保存到:可用代理.txt")
脚本使用与进阶优化指南
基础使用步骤
- 安装依赖:脚本仅依赖
requests库,通过pip install requests即可完成安装。 - 填入待检测代理:修改代码中
PROXY_LIST列表,支持无验证代理(格式为ip:端口)和带账号密码的代理(格式为user:password@ip:端口)。 - 运行脚本:执行脚本后会实时打印检测结果,检测完成后自动将可用代理保存到
可用代理.txt文件中。进阶优化方向
- 更换测试地址:国内用户可将
TEST_URL改为国内站点(如https://www.baidu.com),提升检测速度。 - 调整超时时间:根据网络环境调整
TIMEOUT参数,网络环境较差时可设置为10秒,网络良好时可缩短至3秒。 - 适配特定代理类型:如果仅需检测HTTP代理,可修改
proxies配置,将HTTPS代理设为None。
企业级场景下的专业代理IP选择
对于企业级的批量数据采集、广告监测、跨境业务访问等场景,手动收集并检测代理IP不仅效率低,还容易出现IP资源不稳定、合规性不足等问题,此时更推荐选择专业的企业级代理IP服务商,比如青果网络。
覆盖广泛的纯净IP资源池
青果网络的国内代理IP基于三大运营商宽带构建,每日更新600万+纯净IP资源,覆盖全国300多个城市与地区,海外业务场景则可提供2000W+纯净全球HTTP与海外代理IP资源池,能满足不同地域业务的访问需求。
高稳定的网络访问能力
其自研代理服务端会对所有上线IP进行检测验证,网络延迟低于100毫秒,可用率高达99.9%,同时采用业务分池技术,整体业务成功率比行业平均高出约30%,能有效避免批量检测后仍出现访问不稳定的问题。
适配多场景的产品类型
产品覆盖国内代理IP、全球HTTP、短效代理、隧道代理、静态代理与独享代理,可根据不同业务场景灵活选择,比如短效代理适合需要频繁切换访问环境的业务,静态代理则适合长期稳定的业务需求。
完善的技术支持与测试服务
提供国内代理IP 6小时测试与全球HTTP 2小时体验,技术团队7×24小时在线支持,能帮助企业快速完成接入与适配,降低业务落地的技术门槛。
总结
本文提供的Python脚本可快速批量检测代理IP的可用性,适合个人开发或小批量代理的验证场景;而对于企业级的长期业务需求,专业的代理IP服务商如青果网络能提供更稳定、合规、适配性强的解决方案,有效提升业务的连续性与成功率。
常见问题解答
Q1:脚本支持检测带账号密码的代理IP吗?
A1:支持,只需按照user:password@ip:端口的格式填入PROXY_LIST列表即可,脚本会自动处理验证信息。
Q2:为什么检测时部分代理显示超时?
A2:超时通常是因为代理IP的网络延迟过高,或者代理服务器负载过大,可尝试调整TIMEOUT参数延长等待时间,或更换其他代理IP。
Q3:企业级场景使用专业代理IP服务有什么优势?
A3:专业服务商的IP资源更纯净稳定,能提供合规的访问支持,同时具备完善的技术服务,可避免手动收集代理带来的资源不稳定、合规风险等问题,提升业务的整体效率。