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

Ubuntu服务器运行Selenium抛出Connection refused错误的解决方法

Selenium .NET Core应用部署Ubuntu 22.04连接拒绝故障解决方案

两类浏览器驱动同时抛出Connection refused类错误,和单个驱动版本、浏览器适配问题无关,按以下优先级排查修复:

  • 优先确认Xvfb虚拟显示的环境变量注入正确
    多数人安装Xvfb后仅在当前SSH会话设置了DISPLAY变量,托管应用时(比如systemd服务、nohup后台启动)没有把变量传入进程上下文,会导致浏览器实例启动失败、驱动端口监听异常。
    先执行ps aux | grep Xvfb确认Xvfb进程正常运行,假设Xvfb默认监听:99显示端口,启动应用前必须执行export DISPLAY=:99;如果用systemd托管应用,需要在service配置段中添加Environment="DISPLAY=:99",避免SSH会话断开后变量失效。

    补充:Chrome 112+、Firefox 55+版本已原生支持无头模式,不需要依赖Xvfb虚拟显示,启动驱动时添加对应无头参数即可运行,链路更简单稳定性更高,推荐优先使用。

  • 修复localhost解析优先级问题
    报错中出现fe80开头的IPv6链路本地地址,说明系统默认把localhost解析到IPv6地址,但Selenium驱动默认绑定IPv4的127.0.0.1,协议不匹配会直接导致连接拒绝。
    临时验证可执行curl -v http://127.0.0.1:[驱动监听端口]确认IPv4端口连通性,确认是解析问题后直接编辑/etc/hosts文件,注释掉::1 localhost配置行,仅保留127.0.0.1 localhost即可,也可以在驱动启动代码中强制指定绑定IPv4地址。
  • 补全浏览器运行依赖、避免使用沙箱隔离的浏览器安装包
    Ubuntu Server默认不带GUI运行依赖,直接安装浏览器会缺失大量底层库,同时不要使用snap源安装Chrome/Firefox,snap的权限沙箱会阻止驱动拉起浏览器进程。
    先安装基础依赖:
    apt update && apt install -y wget unzip xvfb libglib2.0-0 libnss3 libnspr4 libdbus-1-3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 libxcb1 libxkbcommon0 libatspi2.0-0 libx11-6 libxcomposite1 libxdamage1 libxext6 libxfixes3 libxrandr2 libgbm1 libpango-1.0-0 libcairo2 libasound2
    
    下载对应浏览器的稳定版deb安装包完成安装后,执行apt -f install -y修复剩余依赖关联,注意驱动版本必须和服务器上安装的浏览器大版本完全一致,不要直接复用本地开发环境的驱动二进制文件。
  • 配置驱动启动参数适配服务器环境
    服务器环境下默认用root用户运行应用时,浏览器默认沙箱机制会启动失败,需要在代码中添加对应启动参数,以Chrome为例:
    var options = new ChromeOptions();
    options.AddArgument("--no-sandbox");
    options.AddArgument("--disable-dev-shm-usage");
    options.AddArgument("--headless=new"); // 启用原生无头模式,无需Xvfb
    
    Firefox驱动同理添加--no-sandbox、--headless参数即可。
  • 安全策略拦截排查
    如果以上配置都完成仍报错,临时关闭SELinux、AppArmor测试是否为强制访问控制策略拦截了本地进程的端口通信,确认后添加对应放行规则即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 02:21:17