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

Selenium无头模式下如何配置使系统PPTP VPN正常生效访问站点

问题根因

旧版Chrome无头模式的实现逻辑存在天然局限:使用--headless参数启动的是独立维护的轻量渲染实例,未复用GUI模式的完整系统网络栈,无法识别PPTP VPN写入系统路由表的转发规则,流量默认从物理网卡直接发出,因此无法访问仅VPN可达的内网站点。GUI模式下Chrome完全调用系统网络层能力,所以VPN可正常生效。

可行解决方案

优先方案:切换到新版Chrome无头模式(推荐,99%场景可直接解决问题)

Chrome 112及以上版本推出了和GUI模式完全同源的新无头实现,该模式和正常打开的Chrome共用完全一致的渲染逻辑、网络栈、系统集成能力,会自动识别系统级VPN的路由规则,不需要额外调整VPN配置。
你只需要替换原有无头启动参数即可,参考配置:

from selenium.webdriver.chrome.options import Options
chrome_options = Options()
# 替换旧的--headless参数,启用新版无头模式
chrome_options.add_argument("--headless=new")
# 建议固定窗口大小,避免无头模式下页面渲染尺寸和GUI模式存在差异
chrome_options.add_argument("--window-size=1920,1080")

该方案不需要修改现有测试逻辑,也不需要调整系统VPN配置,是落地成本最低的解决方式。

兜底方案:旧版Chrome兼容配置

如果你因为环境限制无法升级Chrome到112以上版本,可以通过关闭网络服务沙箱的参数,强制无头模式的网络进程读取系统路由表,该配置存在一定兼容性问题,仅作为无法升级Chrome版本时的兜底选项:

from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument("--headless")
# 关闭网络进程沙箱,允许读取系统路由规则适配PPTP VPN
chrome_options.add_argument("--disable-features=NetworkServiceSandbox")
chrome_options.add_argument("--window-size=1920,1080")
避坑提示
  • 不要在启动参数中额外添加--proxy-server配置,该参数会覆盖系统路由规则,导致VPN流量被转发到指定代理,无法正常访问内网
  • 正式跑测试用例前,可先访问内网的IP查询接口,确认出口IP为VPN分配的内网段地址后再执行后续逻辑,提前排查路由异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 19:24:19