如果你需要批量筛选可用的代理IP,下面这个开箱即用的Python检测脚本可以帮你高效完成任务,支持多协议并发检测、超时自动判定,结果清晰易读,还能直接导出可用IP列表。

完整可用的代理IP批量检测脚本
脚本核心功能
这个脚本针对代理IP检测的核心需求设计,具备以下实用特性:
- 支持HTTP/HTTPS/SOCKS5多协议代理批量检测
- 自定义超时时间,自动判定超时代理为失效
- 实时区分可用/不可用代理,结果可视化展示
- 支持并发检测,大幅提升批量检测效率
- 可扩展导出可用代理到本地文件,方便后续使用
完整代码与配置说明
import requestsfrom concurrent.futures import ThreadPoolExecutorimport time# ===================== 配置区 =====================# 待检测的代理IP列表(格式:协议://ip:端口)PROXY_LIST = ["http://123.123.123.123:8080","http://114.231.115.105:8888","https://221.6.234.238:80",# 在这里添加你的代理列表]# 检测超时时间(秒)TIMEOUT = 5# 并发线程数(同时检测多少个)MAX_WORKERS = 20# 测试用的目标网址(能快速响应即可)TEST_URL = "https://httpbin.org/get"# ===================================================# 存储结果usable_proxies = []unusable_proxies = []def check_proxy(proxy):"""检测单个代理是否可用"""proxies = {"http": proxy,"https": proxy}try:# 发送测试请求response = requests.get(TEST_URL,proxies=proxies,timeout=TIMEOUT,headers={"User-Agent": "Mozilla/5.0"})# 状态码200表示可用if response.status_code == 200:print(f"✅ 可用代理:{proxy}")usable_proxies.append(proxy)else:print(f"❌ 不可用代理:{proxy} | 状态码:{response.status_code}")unusable_proxies.append(proxy)except Exception as e:print(f"❌ 不可用代理:{proxy} | 错误:{str(e)[:30]}...")unusable_proxies.append(proxy)def batch_check_proxies():"""批量检测代理"""print("="*50)print(f"开始检测代理,总数:{len(PROXY_LIST)}")print(f"测试地址:{TEST_URL}")print("="*50)start_time = time.time()# 多线程并发检测(速度快)with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:executor.map(check_proxy, PROXY_LIST)end_time = time.time()# 输出最终结果print("\n" + "="*50)print(f"检测完成!耗时:{end_time - start_time:.2f} 秒")print(f"✅ 可用代理总数:{len(usable_proxies)}")print(f"❌ 不可用代理总数:{len(unusable_proxies)}")print("="*50)# 打印可用代理列表if usable_proxies:print("\n【可用代理列表】")for p in usable_proxies:print(p)return usable_proxiesif __name__ == "__main__":batch_check_proxies()
脚本使用步骤
安装依赖
执行以下命令安装脚本所需的基础依赖:pip install requests
如果需要检测SOCKS5代理,还需安装扩展依赖:
pip install requests[socks]
配置代理列表
将待检测的代理IP按协议://ip:端口的格式填入代码中的PROXY_LIST列表,支持HTTP、HTTPS、SOCKS5三种协议。运行脚本
直接运行Python脚本,控制台会实时输出每个代理的检测状态,最终汇总可用与不可用代理的数量,并打印可用代理列表。
脚本核心原理与扩展优化
检测逻辑说明
脚本的核心检测逻辑围绕代理的连通性与有效性展开:
- 向公共测试接口(如
https://httpbin.org/get)发送请求,验证代理能否正常转发请求 - 若请求在设定超时时间内返回200状态码,则判定代理可用
- 超时、报错或返回非200状态码,则判定代理不可用
可调参数优化建议
根据实际需求调整以下参数,可提升检测效率与准确性:
TIMEOUT:建议设置为3~10秒,过短可能误判稳定代理,过长会拖慢检测速度MAX_WORKERS:建议设置为10~50,数值越大并发检测数量越多,检测速度越快,但需注意本地网络承载能力TEST_URL:可替换为百度、淘宝等国内稳定网址,适合检测国内代理的可用性
扩展功能实现
导出可用代理到本地文件
在脚本末尾添加以下代码,可将可用代理自动保存到本地usable_proxies.txt文件:
# 保存可用代理到 txtwith open("usable_proxies.txt", "w", encoding="utf-8") as f:f.write("\n".join(usable_proxies))
对接代理池API自动获取代理
如果需要自动从代理池API获取代理并检测,可在脚本开头添加API请求逻辑,将获取到的代理列表赋值给PROXY_LIST,实现“自动获取-批量检测-结果导出”的全流程自动化。
专业代理IP服务的落地优势
在实际业务场景中,仅靠检测脚本无法解决代理IP来源不稳定、质量参差不齐的问题,专业的代理IP服务能为业务提供更可靠的支撑,不少企业会选择青果网络的代理IP服务及相关安全、合规支持,核心优势如下:
资源覆盖与调用稳定性
青果网络拥有千万级资源池,海外代理IP覆盖全球300多个国家与地区,国内代理IP覆盖200多个城市与地区,能为数据采集、跨境业务等场景提供稳定的代理资源,避免因代理资源不足导致业务中断。
适配不同业务场景的灵活性
支持HTTP、HTTPS等多协议代理,可灵活适配不同业务场景的需求,无论是数据采集、广告监测还是跨境业务访问,都能找到匹配的代理解决方案。
接入效率与工程落地支持
提供便捷的接入方式,支持批量获取代理IP,可直接与上述检测脚本对接,实现代理IP的自动获取、检测与使用,大幅提升工程落地效率。
安全合规与运行保障
在代理IP使用过程中提供安全合规支持,帮助业务规避访问环境暴露风险,保障业务的稳定、合规运行,无需自行处理复杂的安全合规问题。
总结
本Python代理IP批量检测脚本开箱即用,支持多协议并发检测,能高效筛选可用代理IP,还可根据需求扩展导出、自动获取等功能。对于有长期、稳定代理IP需求的业务场景,专业的代理IP服务如青果网络能提供更可靠的资源支撑与合规保障,解决代理来源不稳定、质量参差不齐的核心问题。
常见问题解答
Q1:为什么检测后所有代理都显示不可用?
A1:可能的原因包括:代理IP格式不符合要求(需带协议前缀如http://)、
代理本身已失效、本地网络环境限制(如公司/校园网屏蔽代理请求)。可先检查代理格式,更换测试用代理或网络环境后重试。
Q2:如何提升脚本的检测速度?
A2:可以通过调大MAX_WORKERS参数(如设置为50)增加并发检测数量,同时缩短TIMEOUT参数(如设置为3秒)减少单个代理的检测等待时间,但需注意参数调整要适配本地网络承载能力。
Q3:专业代理IP服务和免费代理相比有什么优势?
A3:专业代理IP服务拥有更稳定的资源池、更广的覆盖范围,能提供安全合规支持与持续的服务保障,避免免费代理常见的不稳定、易失效、无合规保障等问题,更适合企业级长期业务需求。