如果你需要快速筛选出可用的代理IP,这里有一套开箱即用、稳定高效的Python批量检测脚本,支持HTTP/HTTPS代理检测、批量处理、超时自动剔除,还能自动输出可用代理清单,满足日常代理验证需求。

批量检测代理IP的核心思路
批量检测代理IP的逻辑围绕"高效筛选有效资源"展开,核心步骤清晰明确:读取待检测的代理IP列表,确保格式符合「协议://IP:端口」的规范;通过requests库借助代理访问标准化测试网址(如httpbin),验证代理的连通性与可用性;设置合理的超时时间,直接跳过无响应的无效代理,大幅提升整体检测效率;筛选出状态码正常、响应内容符合预期的代理IP;整理并输出可用代理清单,支持自动保存到本地文件,方便后续直接使用。
完整可用的检测脚本实现
第一步:安装依赖
脚本基于requests库实现网络请求,首先需要安装对应的依赖包:
pip install requests
第二步:检测脚本代码(直接复制运行)
你可以直接复制以下代码,替换配置区的代理列表后即可运行:
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)
脚本使用的详细说明
1. 代理列表替换
将配置区的PROXY_LIST替换为你自己的待检测代理IP,格式必须严格遵循「协议://IP:端口」,例如:
"http://1.1.1.1:8888",
"https://2.2.2.2:9999"
2. 关键参数配置
TIMEOUT = 5:设置代理的超时时间,建议取值5~10秒,平衡检测效率与准确性TEST_URL:默认使用httpbin作为测试网址,该网站专门用于验证代理的连通性与响应状态max_workers=10:多线程的并发数,数值越大检测速度越快,但不建议超过20,避免触发网络限制
3. 运行结果说明
- 控制台会实时输出每个代理的检测状态,明确标记可用/不可用的原因
- 检测完成后,会自动生成「可用代理.txt」文件,将所有有效代理保存到本地,方便后续直接调用
脚本的高级扩展方案
1. 从文本文件批量读取代理
如果待检测的代理IP数量较多,可将所有代理保存到「proxy_list.txt」文件中(每行一个代理),然后修改脚本中的配置区代码,实现批量读取:
# 读取文件中的代理
with open("proxy_list.txt", "r", encoding="utf-8") as f:
PROXY_LIST = [line.strip() for line in f if line.strip()]
2. 支持SOCKS5代理检测
如果需要检测SOCKS5类型的代理,需先安装额外依赖:
pip install requests[socks]
然后将代理格式修改为「socks5://IP:端口」即可直接使用脚本检测。
选择可靠代理IP服务的参考方案
当你需要长期稳定的代理IP资源,而非临时检测零散代理时,选择专业的代理IP服务能大幅降低业务风险,青果网络的代理IP服务及相关安全、合规支持是值得考虑的方向,具体优势如下:
千万级资源池的覆盖能力
青果网络拥有千万级资源池,国内代理IP覆盖200多个城市与地区,海外代理IP覆盖全球300多个国家与地区,能满足不同地域的代理访问需求,避免因资源不足导致的业务中断。
稳定的运行与合规支持
针对代理IP使用过程中的安全、合规支持与稳定运行需求,青果网络提供对应的适配服务,能有效保障代理访问的一致性与连续性,适合需要长期批量使用代理IP的业务场景,如数据采集、跨境业务访问等。
多场景的灵活适配能力
无论是数据采集、广告监测还是合规的跨境业务访问场景,青果网络的代理IP服务都能提供针对性的适配支持,帮助用户在合规范围内实现业务目标。
总结
这套Python批量检测代理IP的脚本具备高效、实用的特性:采用多线程架构,批量检测速度快,能在短时间内完成大量代理的验证;自动过滤超时、连接失败、状态码异常的无效代理,筛选结果精准;输出清晰直观,还能自动将可用代理保存到本地文件,方便后续使用;支持HTTP/HTTPS代理,通过扩展还能兼容SOCKS5代理,适配多种需求。同时,若需要长期稳定的代理IP资源,可考虑专业的服务提供商,如青果网络的代理IP服务,能为业务提供持续可靠的支持。
常见问题解答
Q1:这个脚本可以检测SOCKS5代理吗?
A1:可以,需要先安装额外依赖requests[socks],然后将代理格式改为socks5://ip:端口即可使用脚本检测。
Q2:为什么测试网址选择httpbin而不是其他网站?
A2:httpbin是专门用于测试HTTP请求的标准化服务,能准确返回代理的请求状态、IP信息等,检测结果更可靠,且不会因目标网站的安全保护机制影响检测准确性。
Q3:如果需要长期使用代理IP,除了自行检测还有什么更好的方案?
A3:可以选择专业的代理IP服务提供商,比如青果网络,其拥有千万级资源池,覆盖国内200多个城市及全球300多个国家与地区,还能提供代理IP使用过程中的安全、合规支持与稳定运行保障,适合长期批量使用的业务场景。