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

在Heroku上使用Headless模式的Selenium出现ERR_CONNECTION_RESET错误求助

解决Heroku部署Django+Selenium时headless Chrome的ERR_CONNECTION_RESET错误

以下是针对问题的可行解决方案:

1. 切换到新版headless模式

Chrome 112及以上版本中,旧的--headless参数对应旧版无头模式,行为与正常Chrome差异较大,容易引发加载异常。替换为新版无头模式参数:

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

2. 添加标准窗口尺寸参数

无头模式默认窗口极小,部分网站会因适配问题拒绝连接或加载失败,强制设置标准窗口大小:

options.add_argument("--window-size=1920,1080")

3. 配置Heroku正确构建包与环境变量

不要依赖ChromeDriverManager自动安装驱动,Heroku环境需手动指定Chrome和驱动路径:

  • 添加两个Heroku构建包:
    heroku buildpacks:add https://github.com/heroku/heroku-buildpack-google-chrome.git
    heroku buildpacks:add https://github.com/heroku/heroku-buildpack-chromedriver.git
    
  • 设置环境变量:
    heroku config:set CHROME_BIN=/app/.apt/usr/bin/google-chrome
    heroku config:set CHROMEDRIVER_PATH=/app/.chromedriver/bin/chromedriver
    
  • 修改Webdriver初始化代码,直接指定路径:
    import os
    from selenium.webdriver.chrome.service import Service
    
    # ...其他options配置
    self.webdriver = webdriver.Chrome(
        service=Service(os.environ.get("CHROMEDRIVER_PATH")),
        options=options,
    )
    

4. 补充反检测与网络适配参数

无头Chrome的特征容易被目标网站反爬机制识别,添加以下参数模拟正常浏览器:

# 模拟正常User-Agent
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36')
# 禁用自动化特征检测
options.add_argument("--disable-blink-features=AutomationControlled")
# 允许加载非安全内容(若目标网站包含HTTP资源)
options.add_argument("--allow-running-insecure-content")
# 禁用Viz compositor,解决部分渲染异常
options.add_argument("--disable-features=VizDisplayCompositor")

5. 排查目标网站反爬策略

若以上方法无效,可在本地用--headless=new模式运行并开启日志,查看详细错误:

options.add_argument("--log-level=ALL")
options.add_argument("--v=1")

通过日志确认是否存在目标网站直接拒绝无头浏览器请求的情况。

内容的提问来源于stack exchange,提问作者Daniel N.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:32:32