给大家分享一个开箱即用、稳定高效的Python批量检测代理IP可用性的脚本,支持HTTP/HTTPS代理批量检测、超时自动判定、可用结果自动保存,还能自定义检测参数,适配不同场景的需求。

核心功能与完整代码实现
该脚本具备多线程检测、超时自动过滤、结果自动存储等核心能力,以下是完整可运行的代码及配置说明:
import requests
import threading
# ====================== 配置项 ======================
# 待检测的代理IP列表 (格式: ip:port)
PROXY_LIST = [
"123.123.123.123:8080",
"222.222.222.222:3128",
"111.111.111.111:80",
# 在这里添加你的代理IP
]
# 检测超时时间(秒)
TIMEOUT = 5
# 检测用的网址(推荐用httpbin.org,专门用于测试代理)
TEST_URL = "http://httpbin.org/get"
# 可用代理保存路径
OUTPUT_FILE = "可用代理.txt"
# ====================================================
# 存储可用代理
usable_proxies = []
def check_proxy(proxy):
"""检测单个代理是否可用"""
proxies = {
"http": f"http://{proxy}",
"https": f"http://{proxy}"
}
try:
# 发送测试请求
response = requests.get(
TEST_URL,
proxies=proxies,
timeout=TIMEOUT,
headers={"User-Agent": "Mozilla/5.0"}
)
# 状态码200表示请求成功
if response.status_code == 200:
print(f"✅ 可用代理: {proxy}")
usable_proxies.append(proxy)
except:
# 超时、连接失败、拒绝访问都算不可用
print(f"❌ 不可用代理: {proxy}")
def batch_check_proxies():
"""多线程批量检测代理"""
thread_list = []
print("开始检测代理IP...\n")
for proxy in PROXY_LIST:
# 创建线程
t = threading.Thread(target=check_proxy, args=(proxy,))
thread_list.append(t)
t.start()
# 等待所有线程完成
for t in thread_list:
t.join()
def save_usable_proxies():
"""保存可用代理到文件"""
with open(OUTPUT_FILE, "w", encoding="utf-8") as f:
for proxy in usable_proxies:
f.write(proxy + "\n")
print(f"\n✅ 检测完成!共找到 {len(usable_proxies)} 个可用代理")
print(f"可用代理已保存到: {OUTPUT_FILE}")
if __name__ == "__main__":
batch_check_proxies()
save_usable_proxies()
配置项说明:
PROXY_LIST:填写待检测的代理IP列表,格式为ip:port;TIMEOUT:设置检测超时时间,网络环境较差时可适当调大;TEST_URL:默认使用httpbin.org的官方测试接口,可替换为业务相关的检测地址;OUTPUT_FILE:设置可用代理的保存路径,结果将自动写入该文件。
基础使用步骤
环境依赖安装
脚本依赖requests库,执行以下命令完成安装:
pip install requests
代理列表配置
将PROXY_LIST中的示例内容替换为你需要检测的代理IP,每个代理单独占一行,确保格式为ip:port。
运行脚本与结果查看
直接运行Python脚本,控制台将实时显示检测结果:
- 标记
✅的为可用代理,会自动保存到配置的输出文件中; - 标记
❌的为不可用代理,会被自动过滤。
进阶用法扩展
从文本文件批量加载代理
当待检测的代理数量较多时,可通过以下代码从本地文本文件批量加载代理:
def load_proxies_from_file(file_path):
with open(file_path, "r") as f:
return [line.strip() for line in f if line.strip()]
PROXY_LIST = load_proxies_from_file("proxies.txt")
只需将代理IP按一行一个的格式保存到proxies.txt中,即可实现批量导入。
带身份验证的代理检测
对于需要账号密码验证的代理,可修改代理配置格式为:
proxies = {
"http": f"http://用户名:密码@ip:端口",
"https": f"http://用户名:密码@ip:端口"
}
将上述代码替换到check_proxy函数的代理配置部分即可完成适配。
检测参数调优
- 调整
TIMEOUT参数:网络环境不稳定时,可将超时时间从5秒调至10秒,避免误判可用代理; - 多线程优化:脚本默认启用全量多线程检测,速度较快,若需控制检测频率,可添加线程数量限制逻辑。
企业级场景下的代理IP使用建议
对于企业级业务场景(如数据采集、广告监测、跨境业务访问等),仅靠自行检测零散代理IP难以保障业务的稳定性、合规性和连续性,此时更推荐选择专业的企业级代理IP服务商,青果网络就是这类场景中值得考虑的选择。
资源覆盖与调用稳定性
青果网络深耕代理IP行业十一年,国内代理资源基于三大运营商宽带构建,每日更新600万+纯净IP资源,覆盖全国300多个城市,网络延迟低于100毫秒,可用率高达99.9%。这类稳定的资源池能有效避免自行筛选代理时频繁遇到的资源失效、访问卡顿等问题,适合需要持续稳定访问的业务场景。
多场景适配的产品类型
青果网络提供国内代理IP、全球HTTP、短效代理、隧道代理、静态代理与独享代理等多种产品类型,可根据不同业务需求灵活选择:比如数据采集场景适合使用短效代理,跨境业务场景可选用全球HTTP代理,无需企业自行维护复杂的代理资源池。
专业的技术支持与测试服务
青果网络提供国内代理IP6小时测试与全球HTTP2小时体验服务,技术团队7×24小时在线支持,能帮助企业快速验证服务适配性,解决接入过程中遇到的技术问题,降低业务落地的试错成本。
服务使用边界说明
全球HTTP均不支持在中国大陆地区网络环境下使用。
总结
本次分享的Python脚本适合个人或小型场景下快速筛选可用代理IP,具备多线程检测、配置灵活、结果自动保存等优势;而在企业级业务场景中,更推荐选择青果网络这样的专业代理IP服务商,以保障业务的稳定性、合规性和长期可维护性。
常见问题解答
Q1:这个脚本支持检测HTTPS代理吗?
A1:支持,脚本中同时配置了HTTP和HTTPS的代理请求规则,只要代理能正常处理HTTPS请求,就能被检测为可用。
Q2:为什么部分代理在脚本检测中显示可用,但实际业务中无法使用?
A2:可能是因为代理的访问权限存在限制,比如部分代理仅允许访问特定域名,或者业务场景的请求频率、请求头设置与检测时不同。企业级场景建议使用专业服务商提供的合规代理资源,减少此类问题的发生。
Q3:可以将脚本优化为可视化GUI工具吗?
A3:可以,通过整合Python的Tkinter、PyQt等GUI库,可实现可视化的代理导入、检测进度展示、结果导出等功能,适合不熟悉命令行操作的用户使用。