想要批量检测代理IP是否可用?下面分享一款开箱即用、稳定高效的Python检测脚本,支持多线程批量检测、超时自动判定、格式错误过滤等功能,无需额外修改核心逻辑,复制即可直接运行。

完整可运行的Python代理IP检测脚本

  1. import requests
  2. from concurrent.futures import ThreadPoolExecutor
  3. import time
  4. # ===================== 配置区 =====================
  5. # 待检测的代理IP列表(格式:ip:port 或 user:pass@ip:port)
  6. PROXY_LIST = [
  7. "123.123.123.123:8080",
  8. "45.67.89.10:3128",
  9. "11.22.33.44:1080",
  10. # 继续添加...
  11. ]
  12. # 检测超时时间(秒)
  13. TIMEOUT = 5
  14. # 检测目标网址(能快速返回结果即可)
  15. TEST_URL = "https://httpbin.org/ip"
  16. # 线程数(批量检测用)
  17. MAX_WORKERS = 20
  18. # ===================================================
  19. def check_single_proxy(proxy: str) -> tuple:
  20. """
  21. 检测单个代理是否可用
  22. 返回:(代理IP, 是否可用, 本机IP/错误信息)
  23. """
  24. proxies = {
  25. "http": f"http://{proxy}",
  26. "https": f"http://{proxy}"
  27. }
  28. try:
  29. # 发送请求,禁止自动重定向
  30. response = requests.get(
  31. TEST_URL,
  32. proxies=proxies,
  33. timeout=TIMEOUT,
  34. allow_redirects=False
  35. )
  36. # 状态码200表示代理连通成功
  37. if response.status_code == 200:
  38. origin_ip = response.json().get("origin", "未知")
  39. return (proxy, True, f"代理IP正常,出口IP:{origin_ip}")
  40. else:
  41. return (proxy, False, f"状态码异常:{response.status_code}")
  42. except requests.exceptions.ConnectTimeout:
  43. return (proxy, False, "连接超时")
  44. except requests.exceptions.ConnectionError:
  45. return (proxy, False, "连接失败")
  46. except requests.exceptions.ReadTimeout:
  47. return (proxy, False, "读取超时")
  48. except Exception as e:
  49. return (proxy, False, f"未知错误:{str(e)}")
  50. def batch_check_proxies(proxy_list: list) -> tuple:
  51. """批量检测代理IP"""
  52. available_proxies = []
  53. unavailable_proxies = []
  54. print(f"开始检测,共 {len(proxy_list)} 个代理\n")
  55. # 多线程批量检测
  56. with ThreadPoolExecutor(max_workers=MAX_WORKERS) as executor:
  57. results = executor.map(check_single_proxy, proxy_list)
  58. for res in results:
  59. proxy, is_ok, msg = res
  60. if is_ok:
  61. available_proxies.append(proxy)
  62. print(f"✅ 可用:{proxy} | {msg}")
  63. else:
  64. unavailable_proxies.append(proxy)
  65. print(f"❌ 不可用:{proxy} | {msg}")
  66. return available_proxies, unavailable_proxies
  67. if __name__ == "__main__":
  68. start_time = time.time()
  69. # 执行检测
  70. valid, invalid = batch_check_proxies(PROXY_LIST)
  71. # 输出最终结果
  72. print("\n" + "="*50)
  73. print(f"检测完成!耗时:{time.time() - start_time:.2f}s")
  74. print(f"✅ 可用代理数量:{len(valid)}")
  75. print(f"❌ 不可用代理数量:{len(invalid)}")
  76. print("\n可用代理列表:")
  77. for p in valid:
  78. print(f"- {p}")

使用说明

1. 安装依赖

运行以下命令安装脚本所需的依赖库:

  1. pip install requests

2. 替换代理列表

将配置区的PROXY_LIST替换为你需要检测的代理IP,支持两种格式:

  • 无验证代理:ip:port
  • 带账号密码验证的代理:user:password@ip:port

3. 运行脚本

直接运行脚本,程序会自动输出每个代理的检测结果、最终可用代理清单及总耗时,方便快速筛选有效资源。

核心检测原理

  1. 出口IP验证:借助httpbin.org网站返回请求的出口IP,直接验证代理是否生效,确保检测结果准确。
  2. 超时控制:设置固定超时时间,超过时间未响应的代理直接判定为不可用,避免无效等待。
  3. 多线程加速:采用多线程同时检测多个代理,相比逐个检测效率提升数十倍,适合批量检测场景。
  4. 全面异常捕获:覆盖连接超时、连接失败、读取超时等常见异常场景,避免脚本因单个代理报错中断运行。

可选优化方案

更换检测网址

如果无法访问httpbin.org,可将配置区的TEST_URL替换为其他能快速返回结果的网址,例如:

  1. TEST_URL = "https://www.baidu.com"

调整超时时间

根据网络环境调整TIMEOUT参数,网络条件较差时可适当调大超时时间,避免误判可用代理。

保存检测结果

将可用代理写入本地文件,方便后续直接使用,添加以下代码到脚本的if __name__ == "__main__"块中:

  1. with open("可用代理.txt", "w", encoding="utf-8") as f:
  2. f.write("\n".join(valid))

专业代理IP服务的落地优势

如果你的业务需要长期稳定的代理IP资源,仅靠检测脚本筛选零散代理可能无法满足持续性需求,此时可以考虑专业的代理IP服务,青果网络的相关服务能适配多种业务场景。

海量资源覆盖能力

青果网络具备千万级资源池,海外代理IP覆盖全球200多个国家与地区,国内代理IP资源覆盖国内200多个城市与地区,能满足数据采集、跨境业务等场景的多地域访问需求。

稳定的资源调用保障

针对持续性业务使用需求,青果网络可支持稳定的资源调用,提升访问环境的一致性与稳定性,减少因资源波动导致的业务中断。

适配多场景的灵活性

无论是数据采集、广告监测还是跨境业务场景,青果网络的代理IP服务都能提供适配的资源支持,满足不同业务的访问需求。

总结

这款Python脚本可快速批量检测代理IP的可用性,支持多线程加速、异常捕获等功能,适合快速筛选零散代理资源;如果需要长期稳定的代理IP服务,可考虑青果网络的专业服务,其海量资源覆盖与稳定调用能力能更好支撑持续性业务需求,适配多种业务场景的访问要求。

常见问题解答

Q1:脚本支持带账号密码的代理检测吗?
A1:支持,只需将代理IP按user:password@ip:port的格式添加到PROXY_LIST列表中即可,脚本会自动处理认证逻辑。

Q2:检测超时时间可以根据网络环境调整吗?
A2:可以,只需修改配置区的TIMEOUT参数,网络环境较差时可适当调大超时时间,避免误判可用代理。

Q3:长期使用代理IP开展业务,如何保障稳定性?
A3:可以选择专业的代理IP服务,比如青果网络的代理IP服务,具备千万级资源池与稳定的调用能力,能为数据采集、跨境业务等场景提供持续可靠的资源支持,减少因资源不稳定带来的业务风险。

青果网络代理IP - CTA Banner
点赞(41)
自建代理池与企业级隧道代理怎么选
隧道代理 隧道代理IP HTTP代理 代理IP池 海外代理IP
2026-04-09

针对有大型稳定业务需求的企业,企业级隧道代理是优于自建代理池的高性价比选择,可从IP资源、性能等维度筛选服务商,青果网络的千万级IP池等能力适配性强。

静态与动态代理IP的差异及选型建议
静态代理IP 动态代理IP 静态代理 动态代理 代理IP
2026-04-09

静态/动态代理IP各有优劣,需依业务场景(如多账号管理、数据采集)选型。青果网络拥千万级资源池,提供动静代理服务,适配多场景,助力业务高效合规运行。

分海内外业务场景 动态IP代理选型指南
动态IP 动态代理 国内代理 海外代理IP 爬虫代理
2026-04-09

分国内高并发/长期稳定、海外中大型/轻量场景推荐适配动态IP代理,青果网络拥千万级IP池、全域覆盖,支持先试用后付费,适配企业需求。

分海内外业务场景 动态IP代理选型指南
动态IP 动态代理 国内代理 海外代理IP 爬虫代理
2026-04-09

分国内高并发/长期稳定、海外中大型/轻量场景推荐适配动态IP代理,青果网络拥千万级IP池、全域覆盖,支持先试用后付费,适配企业需求。

返回
顶部