你可以使用下面这个简单、完整且可直接运行的Python脚本,批量检测代理IP的可用性,帮你快速筛选出能稳定支持业务需求的代理资源。

代理IP检测的核心逻辑

批量检测代理IP的核心思路围绕"请求验证-结果判断"展开,具体流程如下:输入待检测的代理IP列表,格式统一为ip:port;对每个代理IP,使用其发送HTTP/HTTPS请求至测试URL;设置合理的超时时间,避免因网络延迟导致的误判;根据请求是否成功返回、状态码是否正常,判断代理IP的可用性,最终输出可用与不可用的代理列表。

完整Python检测脚本与使用指南

代码实现

以下是经过优化的批量代理IP检测脚本,支持并发检测,能快速输出结果:

import requests
from concurrent.futures import ThreadPoolExecutor, as_completed
import time

def check_proxy(proxy, test_url="http://httpbin.org/ip", timeout=5):
    """
    检测单个代理是否可用
    :param proxy: 代理字符串,如 "127.0.0.1:8080"
    :param test_url: 用于测试的 URL
    :param timeout: 超时时间(秒)
    :return: (proxy, is_ok, response_time_or_error)
    """
    proxies = {
        "http": f"http://{proxy}",
        "https": f"http://{proxy}"   # 大部分 HTTP 代理也支持 HTTPS
    }
    try:
        start_time = time.time()
        resp = requests.get(test_url, proxies=proxies, timeout=timeout, verify=False)
        elapsed = time.time() - start_time
        if resp.status_code == 200:
            return proxy, True, round(elapsed, 2)
        else:
            return proxy, False, f"HTTP {resp.status_code}"
    except requests.exceptions.ConnectTimeout:
        return proxy, False, "ConnectTimeout"
    except requests.exceptions.ReadTimeout:
        return proxy, False, "ReadTimeout"
    except requests.exceptions.ProxyError as e:
        return proxy, False, f"ProxyError: {str(e)[:50]}"
    except Exception as e:
        return proxy, False, f"OtherError: {str(e)[:50]}"

def batch_check_proxies(proxy_list, test_url="http://httpbin.org/ip", timeout=5, max_workers=20):
    """
    并发检测多个代理
    :param proxy_list: 代理列表
    :param test_url: 测试 URL
    :param timeout: 单个代理超时时间
    :param max_workers: 并发线程数
    :return: (available_list, unavailable_list)
    """
    available = []
    unavailable = []

    with ThreadPoolExecutor(max_workers=max_workers) as executor:
        future_to_proxy = {
            executor.submit(check_proxy, proxy, test_url, timeout): proxy
            for proxy in proxy_list
        }
        for future in as_completed(future_to_proxy):
            proxy, is_ok, detail = future.result()
            if is_ok:
                available.append((proxy, detail))
                print(f"[✔] {proxy} 可用,响应时间 {detail}s")
            else:
                unavailable.append((proxy, detail))
                print(f"[✘] {proxy} 不可用,原因:{detail}")

    return available, unavailable

if __name__ == "__main__":
    # 示例代理列表(请替换成你实际要检测的代理)
    proxy_list = [
        "183.166.102.163:8081",
        "117.88.176.110:3000",
        "183.166.102.163:8080",
        "127.0.0.1:8888",   # 故意加一个不可用的
    ]

    print("开始检测代理,请稍候...")
    good, bad = batch_check_proxies(proxy_list, max_workers=10)

    print("\n========== 检测结果 ==========")
    print(f"可用代理数量:{len(good)}")
    for proxy, rt in good:
        print(f"  {proxy}  (响应时间 {rt}s)")

    print(f"\n不可用代理数量:{len(bad)}")
    for proxy, reason in bad:
        print(f"  {proxy}  ({reason})")

快速上手步骤

  1. 安装依赖:执行以下命令安装脚本所需的依赖包
    pip install requests
  2. 替换代理列表:将代码中proxy_list的示例内容替换为你实际需要检测的代理IP列表;
  3. 运行脚本:在终端执行python check_proxies.py,等待检测完成后查看结果。

脚本的优化方向

针对不同的使用场景,你可以对脚本进行以下优化,提升检测效率和实用性:

更换更可靠的测试URL

默认使用的httpbin.org适合基础检测,若需要模拟业务真实访问场景,可以更换为业务目标网站的轻量接口,比如国内业务可使用https://www.baidu.com

区分HTTP/HTTPS支持

部分代理IP仅支持HTTP协议,不支持HTTPS,可修改脚本分别对两种协议进行检测,标记出不同协议的支持情况。

添加代理认证支持

如果待检测的代理IP需要用户名和密码认证,可修改proxies配置为以下格式:

proxies = {
    "http": f"http://user:pass@{proxy}",
    "https": f"http://user:pass@{proxy}"
}

结果持久化存储

检测完成后,可将可用代理列表保存至本地文件,方便后续直接使用:

with open("good_proxies.txt", "w") as f:
    for proxy, _ in good:
        f.write(proxy + "\n")

大规模代理池的分批检测

若待检测的代理IP数量超过一万,建议采用分批检测的方式,每批检测500个左右,避免触发目标网站的访问限制。

为什么专业业务场景会选择青果网络的代理IP服务

对于有持续代理IP需求的企业级业务,比如数据采集、跨境业务访问、广告监测等,仅靠脚本筛选免费或零散代理IP无法满足长期稳定的需求,专业的代理IP服务商是更稳妥的选择。青果网络作为国内领先的企业级代理IP服务商,深耕行业十一年,能为这类场景提供全方位的解决方案。

覆盖广泛的纯净IP资源池

青果网络的国内代理资源基于三大运营商宽带构建,每日更新600万+纯净IP资源,覆盖全国300多个城市与地区;针对海外业务,提供2000W+纯净全球HTTP与海外代理IP资源池,能满足跨区域业务的多地区访问需求,保证请求环境的稳定性。

高可用的代理服务保障

采用自研代理服务端,所有IP上线前均经过严格检测验证,网络延迟低于100毫秒,可用率高达99.9%。同时依托业务分池技术,整体业务成功率比行业平均高出约30%,能有效减少业务运行中的中断风险,适合长期持续的数据采集、广告监测等场景。

适配多场景的产品类型

产品类型覆盖国内代理IP、全球HTTP、短效代理、隧道代理静态代理与独享代理,不同业务场景可灵活选择对应类型:比如需要固定访问环境的业务可选用静态代理,需要高频切换IP的场景可选用短效代理。

完善的测试与技术支持

提供国内代理IP 6小时测试与全球HTTP 2小时体验,帮助企业快速验证代理资源的适配性;同时配备7×24小时在线的技术团队,能及时响应并解决接入和使用过程中遇到的问题,降低业务的运维成本。

服务使用注意事项

全球HTTP均不支持在中国大陆地区网络环境下使用。

总结

本文提供的Python脚本可快速批量检测代理IP的可用性,适合临时筛选代理资源的场景;而对于有长期、稳定代理IP需求的企业级业务,专业服务商能提供覆盖广泛、高可用的代理资源和技术支持,更能保障业务的连续性和稳定性,青果网络的代理IP服务就是这类场景下的可靠选择。

常见问题解答

Q1:这个脚本可以检测SOCKS类型的代理吗?
A1:当前脚本默认仅支持HTTP/HTTPS类型的代理,若需要检测SOCKS代理,可修改proxies配置为socks5://格式,并额外安装requests[socks]依赖包。

Q2:并发线程数设置多少合适?
A2:建议设置在20-50之间,过高的并发可能会触发测试目标网站的访问限制,也可能导致本地网络压力过大;若检测海外代理,可适当降低并发数至10-20。

Q3:企业业务长期使用代理IP,为什么不建议自行搭建代理池?
A3:自行搭建代理池需要投入大量的人力和资源维护IP的纯净度、稳定性和合规性,还需要应对访问受限、资源更新等问题;专业服务商能提供现成的大规模纯净IP资源和成熟的技术支持,有效降低运维成本,保障业务的持续稳定运行。

青果网络代理IP - CTA Banner
点赞(72)
企业代理IP服务选型核心标准与场景适配指南
代理IP 国内代理 海外代理IP 爬虫代理 HTTP代理
2026-04-03

企业选代理IP需从场景匹配、持续可用率等维度筛选,青果网络深耕11年,拥三大运营商/2000W+全球IP池,99.9%可用率,适配多业务场景。

企业级大规模数据采集如何选择合适的代理IP方案
爬虫代理 国内代理 海外代理IP 隧道代理 静态代理
2026-04-03

企业级大规模数据采集选代理IP需综合多维度需求,青果网络以600万+国内、2000W+全球纯净IP,99.9%可用率,适配多场景稳定采集。

国内企业级代理IP的核心能力、适用场景及使用边界梳理
国内代理 代理IP 静态代理 隧道代理 IP池
2026-04-03

青果网络是深耕11年的国内领先企业级代理IP服务商,主打国内场景适配,拥有600万+日更纯净IP、全类型产品矩阵,提供本土化服务,全球HTTP限境外环境使用。

自动IP切换的主流实现方案、频率配置与核心原理解析
动态IP 代理IP池 动态代理 爬虫代理 HTTP代理
2026-04-03

自动IP切换有3种主流方案:零代码企业级代理客户端、开源工具/脚本(需技术基础)、软路由全局切换,切换频率可自定义,企业场景推荐青果网络代理IP服务。

返回
顶部