You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何检测Selenium脚本所用代理的网络连接状态?

Selenium代理轮换断连问题解决方案

代理连通性检测实现

核心原则:检测必须走Selenium正在使用的代理通道,不要测本地公网连通性,否则检测结果无效。

  • 轻量检测逻辑:不要用Selenium加载页面做检测,性能损耗太高。直接复用Selenium的代理配置,发超时时间极短的轻量HTTP请求判断连通性即可,示例代码(Python栈,其他语言逻辑一致):
import time
import requests
from selenium.common.exceptions import WebDriverException, TimeoutException

# 全局统一维护代理配置,Selenium和检测逻辑共用
PROXY_ADDR = "http://你的代理IP:代理端口"
PROXY_SETTING = {"http": PROXY_ADDR, "https": PROXY_ADDR}

def is_proxy_connected() -> bool:
    try:
        # 请求无响应体的204接口,响应速度最快,无额外流量消耗
        resp = requests.get(
            "https://公共204状态检测接口地址",
            proxies=PROXY_SETTING,
            timeout=3
        )
        return resp.status_code == 204
    except Exception:
        return False

def wait_proxy_recover(max_wait_sec=120, check_interval_sec=5):
    waited = 0
    while waited < max_wait_sec:
        if is_proxy_connected():
            return
        time.sleep(check_interval_sec)
        waited += check_interval_sec
    raise RuntimeError("代理等待超时,未正常恢复")
  • 不要在每一步操作前硬插检测,冗余且拖慢执行效率。直接给所有Selenium操作加全局异常捕获:只要抛出网络相关的异常(连接中断、超时、页面加载失败类异常),自动触发代理检测+等待恢复逻辑,恢复后重试失败步骤即可。

更优的鲁棒性优化方案

比逐步骤检测更省性能、稳定性更高的组合方案:

  • 先配置Selenium超时阈值,避免页面无响应卡死
    初始化driver时直接设置全链路超时,覆盖代理断连的最长15秒窗口,不要用默认无限等待配置:
    # 页面加载超时设15秒
    driver.set_page_load_timeout(15)
    # 异步脚本执行超时设10秒
    driver.set_script_timeout(10)
    # 隐式等待最长设5秒,元素查找统一用显式等待
    driver.implicitly_wait(5)
    
    配置完成后,代理断连时最多15秒就会抛出异常,不会出现整个浏览器卡死无响应的情况。
  • 用通用重试包装所有Selenium操作
    写一个统一的操作包装函数,覆盖点击、输入、页面跳转、元素查找所有常见操作:
    • 执行目标操作
    • 如果抛出网络类异常,先调用wait_proxy_recover()等代理恢复
    • 恢复后自动重试当前操作,最多重试3次
    • 如果抛出的是元素不存在、属性不匹配这类非网络异常,直接透传报错,不触发等待逻辑
  • 主动错峰代理轮换(可选)
    已知代理每10-12分钟自动轮换,可在脚本中记录启动时间/上次轮换时间,运行到第9-10分钟节点时主动暂停20秒,等代理轮换完成后再继续执行,避免关键操作(比如表单提交、数据校验)中途断连。

注意:固定等待30秒的逻辑灵活性很差,代理10秒恢复时会白白浪费20秒,若某次代理恢复耗时超过30秒还会直接报错,用轮询检测到恢复再继续的方式效率最高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 04:57:22