You need to enable JavaScript to run this app. 如何使用Python requests库检测代理服务器是否正常工作?
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python requests库检测代理服务器是否正常工作?

你当前操作的核心错误
  • 代理协议前缀配置错误,是触发SSL报错的直接原因
    你从公开免费代理列表获取的8080端口代理,绝大多数是仅支持明文HTTP转发的普通代理,本身没有在对应端口开启SSL加密监听。你在proxies字典中给"https"键配置了https://代理IP:端口的地址,会让requests优先和代理做SSL加密握手,而代理收到明文握手请求后直接返回HTTP协议响应,自然会抛出[SSL: WRONG_VERSION_NUMBER]的版本不匹配错误。
    这里需要明确:requests中proxies的"https"键,含义是「当访问HTTPS地址的目标网站时,使用哪条代理通道转发流量」,和代理本身是否采用HTTPS加密没有关系。绝大多数公开免费代理,不管转发HTTP还是HTTPS目标的流量,通道地址都只需要用http://前缀即可。
  • 把ping通IP等同于代理可用,属于检测逻辑误区
    ping命令走ICMP网络层协议,只能证明你的主机到代理服务器IP的网络路由是通的,完全检测不到代理服务本身的运行状态——比如代理端口是否开放、是否设置了访问白名单、是否已经离线失效,这些都没法通过ping结果判断。
用requests正确检测代理可用性的操作方法
  • 修正代理配置规则:所有普通免费HTTP代理,统一用http://前缀配置代理地址,哪怕是用来转发HTTPS目标的流量
  • 检测时覆盖两类测试目标:
    • 普通HTTP地址,验证代理的明文转发能力
    • HTTPS地址,验证代理的CONNECT隧道建立能力(也就是能不能正常转发加密的HTTPS流量)
  • 检测时不要只看状态码,要完整捕获所有请求类异常,同时验证返回内容匹配预期
    可直接复用的检测逻辑参考:
    import requests
    from requests.exceptions import RequestException
    
    def proxy_available(ip_port: str, timeout: int = 3) -> bool:
        proxy_conf = {
            "http": f"http://{ip_port}",
            "https": f"http://{ip_port}"
        }
        # 两类测试地址
        test_targets = [
            "http://httpbin.org/ip",
            "https://httpbin.org/ip"
        ]
        for target in test_targets:
            try:
                res = requests.get(
                    target,
                    proxies=proxy_conf,
                    timeout=timeout
                )
                res.raise_for_status()
                # 校验返回内容是接口的正常响应,而非代理的拦截页
                if "origin" not in res.json():
                    return False
            except RequestException:
                return False
        return True
    
  • 额外提示:免费公开代理的失效率极高,你拿到的50个代理全部无法使用是非常普遍的情况,大部分公开代理的存活时间都不超过10分钟,且很多代理只能转发HTTP流量,没法正常建立HTTPS隧道。

内容的提问来源于stack exchange,提问作者dontoronto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.30 13:15:02