如果你需要批量验证代理IP的可用性,这里有一份开箱即用、带超时控制的Python检测脚本,支持HTTP/HTTPS代理,能快速筛选出可用资源,直接复制就能运行,满足批量检测、效率提升的需求。

代理IP批量检测的核心逻辑
核心检测流程
准备待检测的代理IP列表,统一规范格式;借助requests库发送标准测试请求,搭配超时控制避免程序卡死;依据响应状态码、请求耗时判断代理有效性;自动汇总并输出可用代理清单,方便后续直接调用。
关键优化设计
为了提升检测效率与健壮性,脚本加入了两大核心优化:
- 超时控制:设置固定超时阈值,超时直接判定为不可用,避免单个无效代理拖慢整体检测进度;
- 多线程并发:利用线程池实现批量并行检测,大幅提升大数量级代理的检测速度。
完整可运行的检测脚本
第一步:安装依赖
脚本依赖requests库,执行以下命令完成安装:
pip install requests
第二步:检测脚本代码
复制以下代码,替换配置区的代理列表即可直接运行:
import requests
from concurrent.futures import ThreadPoolExecutor # 多线程加速批量检测
import time
# ===================== 配置区 =====================
# 待检测的代理IP列表,格式:协议://ip:端口
# 替换成你自己的代理列表
PROXY_LIST = [
"http://123.123.123.123:8080",
"http://114.231.115.105:8888",
"https://47.103.23.45:3128",
"http://182.139.244.164:8118",
]
# 测试超时时间(秒),超时=不可用
TIMEOUT = 5
# 测试用的目标网址(能正常访问即可)
TEST_URL = "https://httpbin.org/get"
# 批量并发线程数(越大越快)
MAX_WORKERS = 10
# ===================================================
def check_single_proxy(proxy):
"""检测单个代理是否可用"""
proxies = {
"http": proxy,
"https": proxy
}
try:
start_time = time.time()
# 发送测试请求
response = requests.get(
TEST_URL,
proxies=proxies,
timeout=TIMEOUT,
headers={"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"}
)
# 状态码200 + 响应时间正常 = 可用
if response.status_code == 200:
cost = round(time.time() - start_time, 2)
print(f"✅ 可用代理: {proxy} | 耗时: {cost}s")
return proxy
else:
print(f"❌ 不可用: {proxy} | 状态码异常")
return None
except Exception as e:
# 超时、连接失败、代理拒绝等都算不可用
print(f"❌ 不可用: {proxy} | 错误: {str(e)[:30]}")
return None
def batch_check_proxies(proxy_list):
"""批量检测代理(多线程加速)"""
print(f"开始批量检测 {len(proxy_list)} 个代理...\n")
available_proxies = []
# 多线程并发检测
with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
results = executor.map(check_single_proxy, proxy_list)
# 收集可用代理
for res in results:
if res:
available_proxies.append(res)
# 输出最终结果
print("\n" + "="*50)
print(f"检测完成!可用代理数量: {len(available_proxies)}")
print("可用代理列表:")
for p in available_proxies:
print(f" {p}")
print("="*50)
return available_proxies
if __name__ == "__main__":
usable_proxies = batch_check_proxies(PROXY_LIST)
# 你可以直接使用可用代理列表
# print(usable_proxies)
脚本使用与扩展技巧
基础使用步骤
替换配置区的PROXY_LIST为你需要检测的代理IP列表;直接运行脚本,控制台会实时输出每个代理的检测结果;检测完成后,脚本会汇总可用代理清单,可直接用于后续业务场景。
支持的代理格式
脚本兼容多种代理格式,满足不同场景需求:
# 普通HTTP/HTTPS代理
"http://ip:端口"
"https://ip:端口"
# 带账号密码的认证代理
"http://user:password@ip:port"
常见不可用原因排查
如果检测出大量不可用代理,可从以下方向排查:
- 代理IP已过期或失效;
- 代理网络延迟过高,触发超时阈值;
- 代理被目标测试网站限制访问;
- 代理协议与测试请求协议不匹配。
为什么不少业务场景会选择青果网络的代理IP服务
在获取稳定可用的代理IP资源时,不少企业会优先考虑专业服务商,青果网络的代理IP服务及相关安全、合规支持,能更好满足持续性业务需求:
资源覆盖与调用稳定性
青果网络拥有千万级资源池,海外代理IP覆盖全球300多个国家与地区,国内代理IP资源覆盖200多个城市与地区,能为不同地域的业务场景提供稳定的访问支持,减少因资源不足导致的代理失效问题。
适配不同业务场景的灵活性
针对数据采集、广告监测、跨境业务等不同场景,青果网络的代理IP服务可提供适配性的资源调度方案,满足不同业务对访问环境一致性、连续性的要求。
安全合规支持
在代理IP使用过程中,青果网络可提供安全、合规支持与规则适配服务,帮助业务规避访问环境暴露风险,保障业务稳定运行。
总结
这份Python代理IP批量检测脚本开箱即用,具备超时控制、多线程加速等优势,能快速筛选出可用代理,直接服务于后续业务场景。如果需要长期稳定的代理IP资源,可考虑专业服务商的解决方案,比如青果网络的代理IP服务,能为业务提供更可靠的资源支持与安全保障。
常见问题解答
Q1:脚本可以检测带账号密码的代理吗?
A1:可以,脚本支持带账号密码的代理格式,只需按照http://user:password@ip:port的格式添加到代理列表即可。
Q2:如何调整检测的速度?
A2:可以修改配置区的MAX_WORKERS参数,该值越大,并发线程数越多,检测速度越快,但需根据自身机器性能合理设置,避免资源占用过高。
Q3:如果需要将可用代理保存到文件怎么办?
A3:可以在脚本的batch_check_proxies函数末尾添加文件写入逻辑,比如使用with open("usable_proxies.txt", "w") as f: f.write("\n".join(available_proxies)),即可将可用代理保存到文本文件中。