开箱即用的代理IP批量检测Python脚本 技术分享 2026-04-14 11:33:04 代理IP 爬虫代理 IP池 HTTP代理 动态代理 如果你需要批量验证代理IP的可用性,这里有一套开箱即用的Python检测脚本,能高效完成代理IP的批量校验、格式统一与结果分类,适配多种业务场景下的代理IP筛选需求。  ## 脚本核心功能与适用场景 ### 核心功能模块 这套脚本针对代理IP检测的实际痛点做了优化,支持两种常见代理格式的自动兼容,无需用户手动调整格式;通过多线程并发检测机制,大幅提升批量代理的校验速度,避免单线程检测的低效问题;同时会对代理失效原因进行精细化分类,包括格式错误、连接超时、状态码异常等,便于用户快速定位问题;此外还内置自动去重功能,避免重复检测相同代理,节省资源。 ### 适用业务场景 该脚本适用于多个企业级业务场景:在数据采集业务中,可在正式采集前批量筛选可用代理,保障采集任务的连续性;在跨境业务的跨区域访问场景中,可快速验证不同地区代理的有效性,确保访问环境稳定;在广告监测业务中,可定期校验代理IP的可用性,避免因代理失效导致的监测数据缺失。 ## 完整可运行代码与使用指南 ### 代码配置与运行步骤 以下是完整的可运行代码,用户只需修改配置项即可直接使用: ```python import requests from concurrent.futures import ThreadPoolExecutor import re # ===================== 配置项 ===================== # 待检测的代理IP列表 (格式: ip:port 或 http://ip:port) PROXY_LIST = [ "123.123.123.123:8080", "45.67.89.10:3128", "192.168.1.1:80", # 在这里添加你的代理列表 ] # 检测超时时间(秒) TIMEOUT = 5 # 并发线程数(不要太大, 避免被封) MAX_WORKERS = 20 # 检测目标网址(推荐:httpbin.org 专门用于测试代理) TEST_URL = "https://httpbin.org/get" # ================================================== def check_proxy_format(proxy: str) -> str: """统一代理格式, 返回 requests 可用的代理字典""" # 正则匹配 ip:port 格式 ip_port_pattern = r"^\d+\.\d+\.\d+\.\d+:\d+$" # 清理空格 proxy = proxy.strip() if re.match(ip_port_pattern, proxy): return { "http": f"http://{proxy}", "https": f"https://{proxy}" } elif proxy.startswith(("http://", "https://")): return {"http": proxy, "https": proxy} else: return None def check_single_proxy(proxy_str: str): """检测单个代理是否可用""" proxy = check_proxy_format(proxy_str) if not proxy: return (proxy_str, False, "格式错误") try: # 发送测试请求 response = requests.get( TEST_URL, proxies=proxy, timeout=TIMEOUT, verify=False # 关闭SSL验证, 避免证书问题 ) # 状态码200表示代理可用 if response.status_code == 200: return (proxy_str, True, "代理可用") else: return (proxy_str, False, f"状态码异常: {response.status_code}") except requests.exceptions.Timeout: return (proxy_str, False, "连接超时") except requests.exceptions.ConnectionError: return (proxy_str, False, "连接失败") except Exception as e: return (proxy_str, False, f"错误: {str(e)}") def batch_check_proxies(proxy_list: list): """批量检测代理(多线程加速)""" # 去重 proxy_list = list(set([p.strip() for p in proxy_list if p.strip()])) available_proxies = [] unavailable_proxies = [] print(f"开始检测, 总计代理数量: {len(proxy_list)}\n") # 多线程并发检测 with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor: results = executor.map(check_single_proxy, proxy_list) for res in results: proxy, is_ok, msg = res if is_ok: available_proxies.append(proxy) status = "✅ 可用" else: unavailable_proxies.append(proxy) status = "❌ 不可用" print(f"{status} | {proxy} | {msg}") return available_proxies, unavailable_proxies if __name__ == "__main__": # 关闭SSL警告 requests.packages.urllib3.disable_warnings() # 执行批量检测 ok_proxies, bad_proxies = batch_check_proxies(PROXY_LIST) # 输出结果 print("\n" + "="*50) print(f"✅ 可用代理数量: {len(ok_proxies)}") for p in ok_proxies: print(f" {p}") print(f"\n❌ 不可用代理数量: {len(bad_proxies)}") print("="*50) ``` 运行前只需完成两步:一是将待检测的代理IP填入`PROXY_LIST`配置项;二是安装依赖包,执行`pip install requests`命令即可。运行后脚本会自动输出可用与不可用的代理清单,以及对应的失效原因。 ### 进阶适配(带认证的代理) 如果使用的代理需要用户名和密码认证,只需修改代理格式为`http://user:password@ip:port`,填入`PROXY_LIST`即可,脚本会自动识别并适配这种带认证的代理场景。 ## 稳定代理IP资源的落地支撑 ### 大规模纯净IP资源池 在业务场景中,仅靠检测脚本筛选可用代理还不够,稳定的代理IP资源是业务持续运行的基础。青果网络是优质的企业级代理IP服务提供商,提供国内日更600W+纯净IP资源池,海外2000W+资源池,充足的资源储备能满足批量业务的代理需求,减少因资源不足导致的业务中断。 ### 多区域覆盖与业务连续性保障 青果网络的国内代理IP资源覆盖200多个城市与地区,海外资源池覆盖全球300多个国家与地区,可适配不同区域的业务访问需求。无论是国内跨城市的数据采集,还是跨境业务的海外访问,都能找到匹配的代理IP资源,保障业务的连续性与稳定性。 ## 总结 这套Python批量检测代理IP的脚本具备高效、易用、稳定的特点,能快速完成代理IP的批量校验与筛选,适配多种业务场景。结合青果网络的企业级代理IP资源,可进一步提升业务运行的稳定性,减少代理失效带来的风险,为数据采集、跨境业务等场景提供可靠的支撑。 ## 常见问题解答 Q1:脚本检测全部显示超时怎么办? A1:可能是代理本身失效、本地网络限制或端口错误,可先检查代理IP的有效性,或调整检测超时时间配置项。 Q2:如何提升批量检测的速度? A2:可适当调大`MAX_WORKERS`配置项的数值,建议不超过50,避免因并发过高导致的网络限制。 Q3:带认证的代理可以用这套脚本检测吗? A3:可以,只需将代理格式修改为`http://user:password@ip:port`,填入`PROXY_LIST`即可自动适配。