You need to enable JavaScript to run this app. Headless Selenium运行后立即退出,Heroku部署该如何解决?
优惠活动
大模型
产品
解决方案
定价
更多

Headless Selenium运行后立即退出,Heroku部署该如何解决?

解决方案
  • 替换过时的Headless参数
    Chrome 112及以上版本已废弃原--headless无头模式参数,改用--headless=new,新模式和有头模式行为完全一致,可解决绝大多数两种模式表现不一致的问题。修改对应配置行:
# 替换旧的 options.add_argument('--headless') 为以下内容
options.add_argument('--headless=new')
  • 添加Selenium反检测配置
    Headless模式默认携带明显的自动化特征,大部分网站会直接拦截这类请求,导致首页请求失败后没有后续爬取任务,程序直接退出。添加以下配置隐藏特征:
# 替换默认UA,删除HeadlessChrome标识
options.add_argument('--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36')
# 移除自动化控制标识
options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
  • 确认Heroku部署配置正确
    检查你的Heroku应用已按顺序添加以下两个官方buildpack,确保Chrome和Chromedriver版本匹配:

    • https://github.com/heroku/heroku-buildpack-google-chrome
    • https://github.com/heroku/heroku-buildpack-chromedriver
  • 增加等待逻辑避免提前终止
    Heroku服务器网络延迟较高,可能出现页面未加载完成就提取链接的情况,最终拿到空链接列表导致程序直接退出。添加超时和等待配置:

# 初始化driver后添加配置
driver.implicitly_wait(15)
driver.set_page_load_timeout(30)
# 请求首页后增加短暂等待再提取链接,也可使用显式等待定位核心元素加载完成后再操作
  • 新增日志排查根因
    如果以上操作仍未解决,可捕获driver初始化和页面请求阶段的异常,在Heroku日志中查看具体报错信息:
import traceback
try:
    driver = webdriver.Chrome(executable_path=os.environ.get('CHROMEDRIVER_PATH'), options=options)
    driver.get(你的基础URL)
except Exception as e:
    print(f"运行报错: {e}")
    print(traceback.format_exc())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 16:15:04