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

Chrome WebDriver+Selenium连接VPN后DevTools断开问题求助

问题描述

在使用Selenium搭配Chrome WebDriver时,连接VPN后调用driver.get()出现disconnected: not connected to DevTools错误。必须在连接VPN前启动WebDriver,VPN连接前加载网页正常,调整ChromeOptions后问题仍存在。

代码示例

import subprocess
import time

from selenium import webdriver

options = webdriver.ChromeOptions()
options.add_argument("--start-maximized")

driver = webdriver.Chrome(
    options=options
)

subprocess.Popen(
    'rasdial "jp-free-09.protonvpn.net"',
    stdout=subprocess.PIPE,
    stderr=subprocess.PIPE,
    shell=True
)
print('Connected to VPN.')

time.sleep(10)

driver.get('https://stackoverflow.com/')
driver.quit()
print('Completed.')

报错信息

Traceback (most recent call last):
  File "c:\Users\****\****\****\****\****.py", line 23, in <module>
    driver.get('https://stackoverflow.com/')
  File "C:\Users\****\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 355, in get
    self.execute(Command.GET, {"url": url})
  File "C:\Users\****\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 346, in execute
    self.error_handler.check_response(response)
  File "C:\Users\****\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 245, in check_response
    raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: disconnected: not connected to DevTools
  (failed to check if window was closed: disconnected: not connected to DevTools)
  (Session info: chrome=115.0.5790.102)
Stacktrace:
Backtrace:
        GetHandleVerifier [0x00A5A813+48355]
        (No symbol) [0x009EC4B1]
        (No symbol) [0x008F5358]
        (No symbol) [0x008E7D96]
        (No symbol) [0x008E7AB9]
        (No symbol) [0x008F67C0]
        (No symbol) [0x0094C4D8]
        (No symbol) [0x0093A536]
        (No symbol) [0x009182DC]
        (No symbol) [0x009193DD]
        GetHandleVerifier [0x00CBAABD+2539405]
        GetHandleVerifier [0x00CFA78F+2800735]
        GetHandleVerifier [0x00CF456C+2775612]
        GetHandleVerifier [0x00AE51E0+616112]
        (No symbol) [0x009F5F8C]
        (No symbol) [0x009F2328]
        (No symbol) [0x009F240B]
        (No symbol) [0x009E4FF7]
        BaseThreadInitThunk [0x779200C9+25]
        RtlGetAppContainerNamedObjectPath [0x77C87B1E+286]
        RtlGetAppContainerNamedObjectPath [0x77C87AEE+238]

环境信息

  • Python: 3.11.4
  • selenium: 4.10.0
  • webdriver-manager: 3.8.6
  • Chrome: 115.0.5790.102(ChromeDriver版本匹配)

解决思路与方案

  • 固定DevTools调试端口:VPN切换网络后,Chrome的DevTools连接易因网络环境变化中断。启动Chrome时指定固定调试端口,确保WebDriver能维持连接:

    options.add_argument("--remote-debugging-port=9222")
    

    也可先启动Chrome实例,再通过debugger_address连接:

    # 先启动Chrome
    subprocess.Popen([
        "chrome.exe",
        "--remote-debugging-port=9222",
        "--start-maximized"
    ])
    time.sleep(3)
    # 连接到已启动的Chrome
    driver = webdriver.Chrome(options=options)
    
  • 禁用网络安全限制:VPN可能触发Chrome的网络安全策略,导致渲染进程与DevTools断开,添加以下参数:

    options.add_argument("--disable-web-security")
    options.add_argument("--allow-running-insecure-content")
    
  • 验证VPN连接状态:time.sleep(10)无法确保VPN完全生效,建议通过ping目标地址或访问测试URL的方式,确认网络连通后再执行driver.get()。

  • 重启Chrome进程(备选):若业务场景允许,VPN连接成功后关闭原Chrome实例,重新启动WebDriver:

    driver = webdriver.Chrome(options=options)
    # 连接VPN逻辑
    subprocess.Popen('rasdial "jp-free-09.protonvpn.net"', ...)
    time.sleep(10)
    # 重启驱动
    driver.quit()
    driver = webdriver.Chrome(options=options)
    driver.get('https://stackoverflow.com/')
    
  • 尝试无头模式:无头模式下网络切换的兼容性可能更稳定,添加参数:

    options.add_argument("--headless=new")
    

内容的提问来源于stack exchange,提问作者Y-404

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:32:11