Python批量检测代理IP脚本:开箱即用,支持多协议验证与批量筛选 技术分享 2026-04-06 19:37:07 代理IP IP池 爬虫代理 HTTP代理 SOCKS5代理  给大家分享一个开箱即用、稳定高效的Python批量检测代理IP脚本,支持HTTP/HTTPS代理检测、批量验证、超时自动剔除,最终输出清晰的可用代理清单,适合需要批量筛选代理资源的场景。 ## 核心检测思路 ### 核心逻辑拆解 读取待检测的代理IP列表,确保格式符合协议://ip:端口的规范,借助requests库通过代理访问专业测试网址(如httpbin),验证代理的连通性,同时设置合理的超时时间,快速剔除无响应的不可用代理,最后筛选返回状态码正常、响应内容符合预期的代理,输出并保存可用代理清单,方便后续业务使用。 ## 完整实现方案 ### 第一步:安装依赖 运行以下命令安装脚本所需的依赖库: ```bash pip install requests ``` ### 第二步:检测脚本(直接复制运行) ```python import requests from concurrent.futures import ThreadPoolExecutor import time # ===================== 配置区 ===================== # 待检测的代理IP列表(格式:协议://ip:端口) PROXY_LIST = [ "http://123.123.123.123:8080", "http://114.231.115.101:8888", "https://221.131.160.122:80", # 在这里添加你的代理列表 ] # 超时时间(秒),建议 5~10 秒 TIMEOUT = 5 # 测试地址(httpbin最适合检测代理) TEST_URL = "https://httpbin.org/get" # =================================================== def check_single_proxy(proxy): """ 检测单个代理是否可用 :param proxy: 代理地址,如 http://ip:port :return: 可用返回 (proxy, True),不可用返回 (proxy, False) """ proxies = { "http": proxy, "https": proxy } try: # 发送请求,禁用重定向、设置超时 response = requests.get( TEST_URL, proxies=proxies, timeout=TIMEOUT, allow_redirects=False ) # 状态码 200 表示代理可用 if response.status_code == 200: print(f"✅ 可用代理:{proxy}") return (proxy, True) else: print(f"❌ 不可用(状态码异常):{proxy}") return (proxy, False) except requests.exceptions.Timeout: print(f"❌ 不可用(超时):{proxy}") return (proxy, False) except requests.exceptions.ConnectionError: print(f"❌ 不可用(连接失败):{proxy}") return (proxy, False) except Exception as e: print(f"❌ 不可用(其他错误):{proxy} | {str(e)}") return (proxy, False) def batch_check_proxies(proxy_list, max_workers=10): """ 多线程批量检测代理 """ print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] 开始检测代理,总数:{len(proxy_list)}") print("-" * 60) # 多线程加速 with ThreadPoolExecutor(max_workers=max_workers) as executor: results = list(executor.map(check_single_proxy, proxy_list)) # 筛选可用代理 valid_proxies = [p for p, status in results if status] print("-" * 60) print(f"[{time.strftime('%Y-%m-%d %H:%M:%S')}] 检测完成!") print(f"总代理数:{len(proxy_list)}") print(f"可用代理数:{len(valid_proxies)}") return valid_proxies if __name__ == "__main__": # 执行批量检测 valid_proxy_list = batch_check_proxies(PROXY_LIST) # 保存可用代理到文件(可选) with open("可用代理.txt", "w", encoding="utf-8") as f: for proxy in valid_proxy_list: f.write(proxy + "\n") print("\n可用代理清单:") for p in valid_proxy_list: print(p) ``` ## 使用说明 ### 基础配置调整 替换代理列表时,需将配置区的PROXY_LIST替换为自己的代理资源,格式必须为协议://ip:端口,例如http://1.1.1.1:8888、https://2.2.2.2:9999;超时时间TIMEOUT建议设置为5-10秒,平衡检测效率与准确性;max_workers参数控制多线程数量,建议不超过20,避免对测试服务器造成过大压力。 ### 运行结果说明 控制台会实时输出每个代理的检测状态,标记可用或不可用的原因,脚本自动生成「可用代理.txt」文件,将所有有效代理保存到本地,方便后续直接调用。 ## 高级扩展方案 ### 从文件读取代理资源 如果代理数量较多,可将代理列表保存到proxy_list.txt文件中(每行一个代理),通过以下代码读取: ```python # 读取文件中的代理 with open("proxy_list.txt", "r", encoding="utf-8") as f: PROXY_LIST = [line.strip() for line in f if line.strip()] ``` ### 支持SOCKS5代理检测 若需要检测SOCKS5类型的代理,先安装额外依赖: ```bash pip install requests[socks] ``` 然后将代理格式调整为socks5://ip:端口即可正常检测 在批量检测代理IP的场景中,除了高效的检测工具,稳定可靠的代理资源来源同样重要。不少企业和开发者会选择专业的代理IP服务来保障业务的连续性,青果网络就是其中的选择之一。 ## 为什么不少场景会选择青果网络的代理IP服务 青果网络专注于代理IP服务及相关安全、合规支持,能为多类业务场景提供稳定的资源保障,具体优势如下: ### 千万级资源池覆盖 拥有千万级代理IP资源池,海外代理IP覆盖全球300多个国家与地区,国内代理IP覆盖200多个城市与地区,可满足不同地域的业务访问需求,保障资源的充足性与多样性。 ### 稳定调用与场景适配 具备成熟的资源调度能力,可支持稳定调用,适配数据采集、广告监测、跨境业务等多种场景,确保业务在使用代理IP时的连续性与稳定性。 ### 全流程安全合规支持 提供代理IP使用过程中的安全、合规支持与规则适配,帮助用户规避访问环境暴露风险,保障业务运行的安全性与合规性。 ### 高效接入与工程落地支持 支持标准化的接口接入,适配工程化落地需求,能快速完成集成,降低开发与维护成本,提升业务推进效率。 ## 总结 本次分享的Python批量检测代理IP脚本,通过多线程技术实现高效批量验证,自动剔除超时、连接失败的代理,输出清晰的可用清单,适合各类需要筛选代理资源的场景。同时,若需要稳定可靠的代理IP来源,可选择具备千万级资源覆盖、安全合规支持的专业服务,比如青果网络的代理IP服务,为业务持续运行提供保障。 ## 常见问题解答 Q1:脚本支持检测哪些类型的代理IP? A1:默认支持HTTP、HTTPS类型的代理,通过扩展配置后还可支持SOCKS5代理。 Q2:超时时间设置多少比较合适? A2:建议设置为5-10秒,过短可能会误判可用代理,过长则会降低整体检测效率。 Q3:如何获取稳定的代理IP资源? A3:可以选择具备千万级资源池、覆盖范围广的专业代理IP服务,比如青果网络的代理IP服务,能为多场景提供稳定的资源支持与合规保障。