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

Python Selenium+WebDriverManager:VPN可用LAN不可用问题排查

Selenium+WebDriverManager内网环境问题排查与解决

环境配置

  • 操作系统:Windows 10
  • Chrome版本:103.0
  • WebDriver版本:3.8.2
  • Selenium版本:4.3.0
  • Python版本:3.10.5

需求与测试代码

目标是用Python Selenium自动化内网Web应用的重复操作,该应用支持Windows域账号自动登录。测试代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
driver.get(TARGET_URL)

不同网络环境的差异结果

  • 远程办公(VPN连接内网):Chrome正常启动并打开目标页面,可通过page_source和find_element正常访问页面内容。
  • 办公室办公(LAN直连内网):执行代码报错,关键错误信息如下:
Max retries exceeded with url: /103.0.5060/chromedriver_win32.zip
(Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x000002719EE6F3A0>:
Failed to establish a new connection: [Errno 11001] getaddrinfo failed'))

已尝试禁用WebDriverManager SSL验证的方案,但无效果。

原因分析

办公室内网环境大概率存在网络代理/防火墙限制,导致WebDriverManager无法访问外部下载源获取对应版本的ChromeDriver。VPN环境下可能走的是外部网络通道,不受内网代理限制,所以能正常下载。

可行解决方案

方案1:手动下载ChromeDriver并指定路径

  1. 下载与Chrome 103.0版本匹配的ChromeDriver(版本号需对应,比如Chrome 103.0.5060.x对应ChromeDriver 103.0.5060.53)
  2. 将chromedriver.exe放到本地指定路径(比如./drivers/chromedriver.exe)
  3. 修改代码,直接指定Service路径,不再依赖WebDriverManager自动下载:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service

# 替换为你的chromedriver实际路径
driver = webdriver.Chrome(service=Service("./drivers/chromedriver.exe"))
driver.get(TARGET_URL)

方案2:配置WebDriverManager使用内网代理

如果内网允许通过指定代理访问外部网络,可在代码中添加代理配置:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.utils import ProxyType
from webdriver_manager.core.proxy import Proxy

# 替换为内网实际的代理地址和端口
proxy = Proxy(proxy_type=ProxyType.HTTP, http_proxy="http://your-proxy:port", https_proxy="http://your-proxy:port")
driver = webdriver.Chrome(service=Service(ChromeDriverManager(proxy=proxy).install()))
driver.get(TARGET_URL)

方案3:配置WebDriverManager使用本地镜像源(如果内网有)

如果内网搭建了ChromeDriver的镜像源,可指定镜像地址:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.driver_cache import DriverCacheManager

# 替换为内网镜像地址
cache_manager = DriverCacheManager(root_dir="./drivers", url="http://your-internal-mirror/chromedriver/")
driver = webdriver.Chrome(service=Service(ChromeDriverManager(cache_manager=cache_manager).install()))
driver.get(TARGET_URL)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:54:21