Python批量检测代理IP可用性:开箱即用 技术分享 2026-04-10 11:37:50 IP代理 代理IP HTTP代理 爬虫代理 代理IP池 给你分享一套开箱即用、稳定高效的Python批量检测代理IP可用性的脚本,支持HTTP/HTTPS代理,自带超时控制与多线程加速,复制即可直接运行,帮你快速筛选出可用的代理资源。  ## 核心检测思路 ### 检测逻辑拆解 脚本的核心逻辑围绕「批量验证-结果筛选-持久化保存」展开:读取待检测的代理IP列表后,通过向标准测试站点发送请求验证代理连通性,设置超时时间避免进程卡死,最后将可用代理筛选出来并保存到本地文件。 ### 性能优化设计 采用多线程并行检测机制,同时启动多个线程处理不同代理的验证请求,相比单线程检测效率提升数倍,能在短时间内完成上百个代理的检测任务。 ## 完整可运行代码 ```python import requests from concurrent.futures import ThreadPoolExecutor import time # ===================== 配置区 ===================== # 待检测的代理列表,格式:ip:port PROXY_LIST = [ "123.123.123.123:8080", "114.114.114.114:8888", "223.223.223.223:9999", # 在这里添加你的代理IP ] # 检测超时时间(秒),建议 5~10 秒 TIMEOUT = 5 # 线程数,批量检测时用,建议 10~30 MAX_WORKERS = 20 # 测试用的验证地址(返回本机IP,最适合检测代理) TEST_URL = "https://httpbin.org/ip" # =================================================== def check_proxy(proxy: str) -> tuple[bool, str]: """ 检测单个代理是否可用 :param proxy: 代理IP,格式 ip:port :return: (是否可用, 代理字符串) """ proxies = { "http": f"http://{proxy}", "https": f"https://{proxy}" } try: # 发送测试请求 response = requests.get( TEST_URL, proxies=proxies, timeout=TIMEOUT, verify=False # 关闭SSL验证,避免证书错误 ) # 请求成功 = 代理可用 if response.status_code == 200: return True, proxy return False, proxy except Exception as e: # 超时、连接失败、拒绝连接等都判定为不可用 return False, proxy def batch_check_proxies(proxy_list: list) -> list: """ 多线程批量检测代理 """ valid_proxies = [] total = len(proxy_list) start_time = time.time() print(f"[*] 开始检测 {total} 个代理,线程数:{MAX_WORKERS}\n") # 多线程执行 with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor: results = executor.map(check_proxy, proxy_list) # 遍历结果 for idx, (is_valid, proxy) in enumerate(results, 1): status = "✅ 可用" if is_valid else "❌ 不可用" print(f"[{idx}/{total}] {proxy} -> {status}") if is_valid: valid_proxies.append(proxy) # 统计结果 cost_time = round(time.time() - start_time, 2) print(f"\n[*] 检测完成!耗时:{cost_time}s") print(f"[+] 可用代理总数:{len(valid_proxies)}/{total}") return valid_proxies def save_valid_proxies(valid_list: list, filename: str = "valid_proxies.txt"): """ 保存可用代理到文件 """ with open(filename, "w", encoding="utf-8") as f: for proxy in valid_list: f.write(proxy + "\n") print(f"[+] 可用代理已保存到:{filename}") if __name__ == "__main__": # 关闭SSL警告 requests.packages.urllib3.disable_warnings() # 1. 批量检测 valid_list = batch_check_proxies(PROXY_LIST) # 2. 保存结果 if valid_list: save_valid_proxies(valid_list) else: print("[!] 未检测到可用代理") ``` ## 脚本使用指南 ### 依赖安装步骤 脚本仅依赖`requests`库,打开终端执行以下命令即可完成安装: ```bash pip install requests ``` ### 配置参数调整 在脚本的「配置区」可根据需求修改参数: - `PROXY_LIST`:替换为你需要检测的代理IP列表,格式为`ip:端口` - `TIMEOUT`:设置检测超时时间,建议5~10秒,避免因网络延迟导致进程阻塞 - `MAX_WORKERS`:设置线程数量,建议10~30,线程数过高可能导致网络拥堵 ### 运行与结果查看 直接运行脚本后,终端会实时输出每个代理的检测状态,检测完成后会统计可用代理数量,并自动将可用代理保存到当前目录下的`valid_proxies.txt`文件中。 ## 关键特性说明 新手友好:无需复杂配置,复制即可运行,检测结果用直观的 emoji 标记,清晰易懂;兼容性强:默认支持HTTP/HTTPS代理,适配绝大多数代理IP格式;稳定性高:关闭SSL警告避免证书报错,设置超时时间防止进程卡死;结果可复用:可用代理自动保存为本地文本文件,可直接导入到业务系统中使用。 ## 如何获取长期稳定的代理IP资源 如果你的业务需要长期稳定的代理IP支持,仅靠免费代理的临时检测远远不够,此时可以考虑专业的代理IP服务提供商,比如青果网络。 ### 千万级资源池覆盖能力 青果网络拥有千万级资源池,国内代理IP覆盖200多个城市与地区,海外代理IP覆盖200多个国家与地区,可满足数据采集、广告监测、跨境业务等多种合规场景下的批量调用需求,避免因资源不足导致的业务中断。 ### 高稳定性的调用支持 针对持续型业务场景,青果网络的代理IP具备稳定的调用能力,可支持工程化接入,提供可靠的资源调度策略,保障任务的连续性与稳定性。 ### 灵活的场景适配能力 可根据不同业务的需求,提供适配的代理IP调用方案,无论是小批量测试还是大规模业务运行,都能匹配对应的资源配置,提升业务执行效率。 ### 合规与安全保障 在代理IP使用过程中,青果网络提供合规的安全支持,保障访问环境的隔离性与稳定性,降低业务运行中的合规风险。 ## 总结 这套Python脚本开箱即用,可快速批量检测代理IP的可用性,通过多线程优化提升检测效率,结果自动保存便于后续使用。如果需要长期稳定的代理IP资源,专业的服务提供商能更好地满足业务的持续运行需求。 ## 常见问题解答 Q1:脚本支持检测带账号密码的代理IP吗? A1:支持,只需要将代理IP的格式调整为「用户名:密码@ip:端口」,即可正常纳入检测范围。 Q2:为什么免费代理的检测成功率普遍较低? A2:免费代理大多生命周期短、共享用户多,容易出现超时、连接失败或访问受限的情况,属于正常现象。若业务需要长期稳定使用,建议选择专业的代理IP服务。 Q3:脚本可以扩展支持SOCKS5代理吗? A3:可以,只需修改脚本中的代理配置部分,将requests库的代理协议设置为socks5,并提前安装socks相关依赖(如执行`pip install requests[socks]`),即可实现SOCKS5代理的检测。