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

Puppeteer+Express爬取YouTube时Chromium崩溃问题求助

解决Puppeteer访问YouTube崩溃的问题

我正在学习Puppeteer,想要爬取YouTube搜索“data science”结果页(链接:https://www.youtube.com/results?search_query=data+science)的视频链接。目前其他网站均可正常访问,但访问YouTube时Chromium浏览器会崩溃,无法打开该链接。使用的技术栈为Express JS和Puppeteer,相关代码如下:

const express = require("express");
const puppeteer = require("puppeteer");
const cors = require("cors");
const app = express();
app.use(cors());

app.get("/scrapVideo", async (req, res) => {
  const browser = await puppeteer.launch({
    headless: false,
  });
  const page = await browser.newPage();
  await page.goto("https://www.youtube.com");
  await page.screenshot({ path: "youtube.png" });
  await browser.close();
  res.send("working");
});

app.listen(3300);

网页错误截图

仅YouTube网站出现此崩溃问题,以下是可行的解决办法:

调整浏览器启动参数

YouTube对无头浏览器有检测,且默认Chromium配置可能不足以承载其复杂页面,修改puppeteer.launch的配置:

const browser = await puppeteer.launch({
  headless: "new", // 使用新版无头模式,兼容性更好
  args: [
    "--no-sandbox",
    "--disable-setuid-sandbox",
    "--disable-dev-shm-usage", // 解决内存不足导致的崩溃
    "--disable-accelerated-2d-canvas",
    "--no-first-run",
    "--disable-gpu"
  ]
});

模拟真实用户代理

添加真实浏览器的UA,避免被识别为爬虫:
在page.goto前插入:

await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36');

优化页面加载配置

YouTube资源加载量大,延长超时时间并等待网络空闲:

await page.goto("https://www.youtube.com/results?search_query=data+science", {
  timeout: 60000, // 设置60秒超时
  waitUntil: "networkidle2" // 等待网络请求数降至2个以下再继续
});

更新依赖版本

旧版Puppeteer可能与YouTube页面不兼容,执行更新命令:

npm update puppeteer

内容的提问来源于stack exchange,提问作者Deepak Daniel Jesu Doss

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:52:59