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

求助:Selenium+ChromeDriver在AWS Windows EC2实例无法打开URL

兄弟,我之前在AWS Windows EC2上部署Selenium+ChromeDriver也踩过一模一样的坑,给你整理下必须做的几个配置,应该能解决你的问题:

AWS Windows EC2实例运行Selenium+ChromeDriver的关键配置

1. 严格匹配Chrome与ChromeDriver版本

这是最容易踩的坑!EC2上安装的Chrome浏览器版本必须和你用的ChromeDriver版本完全一致,哪怕差个小版本号都可能导致Chrome无法启动。

  • 先在本地确认你当前Chrome的版本(比如118.0.5993.70),然后在EC2上下载同版本的Chrome离线安装包手动安装,别用自动更新,避免重启后版本变了。
  • 下载对应版本的ChromeDriver,放到你的控制台程序同目录,或者加到系统PATH环境变量里,确保程序能找到它。

2. 强制启用Chrome无头模式

EC2实例默认没有图形界面(除非你特意开了桌面体验,生产环境不推荐),所以必须让Chrome以无头模式运行。修改你的代码,添加这些ChromeOptions配置:

var chromeOptions = new ChromeOptions();
// 新版无头模式,行为更接近正常Chrome,比旧版稳定
chromeOptions.AddArgument("--headless=new");
// 禁用GPU加速,无头模式下不需要
chromeOptions.AddArgument("--disable-gpu");
// 关闭沙箱,EC2环境下可能因为权限问题无法启动沙箱
chromeOptions.AddArgument("--no-sandbox");
// 解决/dev/shm内存不足的问题,避免Chrome崩溃
chromeOptions.AddArgument("--disable-dev-shm-usage");

// 初始化Driver
var driver = new ChromeDriver(chromeOptions);

3. 确保EC2实例能访问公网

Chrome打不开网站大概率是网络问题,检查这两点:

  • 如果你的EC2在私有子网,必须关联NAT网关;如果是公有子网,要确保实例分配了公网IP或者弹性IP。
  • 安全组要允许出站的HTTP(80)和HTTPS(443)流量,否则Chrome连不上外部网站。

4. 可选:安装桌面体验用于调试

如果想直观排查问题,可以给EC2装桌面体验:

  • 打开服务器管理器,选「添加角色和功能」,一步步添加「桌面体验」功能,然后重启实例。
  • 用远程桌面连上去,手动打开Chrome试试能不能访问网站,这样能快速区分是代码问题还是环境问题。

5. 服务运行的权限配置(如果你的程序是Windows服务)

如果你的控制台程序是作为Windows服务运行的,别用默认的Local System账户:

  • 创建一个专门的服务账户,给它分配本地登录权限、访问程序目录和Chrome安装目录的权限。
  • 调试时可以勾选「允许服务与桌面交互」,不过无头模式下这个不是必须,但能帮你排查进程启动问题。

6. 检查防火墙和杀毒软件

AWS Windows EC2默认有Windows防火墙,要确保Chrome和你的控制台程序被允许通过防火墙访问网络。另外,有些实例预装了杀毒软件,检查是否拦截了Chrome的网络请求或者进程启动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:58:38