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

使用puppeteer.connect连接已打开Chrome时报Unexpected server response:404错误

问题原因

报错Unexpected server response: 404有三个核心诱因:

  1. 你代码中硬编码的browserWSEndpoint本身格式错误,标准的浏览器调试WebSocket端点的UUID末尾段为12位字符,你填写的ID末尾段只有10位,格式不正确会直接触发404。
  2. Chrome每次开启远程调试模式时,生成的WebSocket调试端点都是动态变化的,你写死的ID是之前某次启动生成的,当前启动的Chrome对应端点已经变更,请求旧地址自然返回404。
  3. 启动Chrome时没有关闭所有已运行的Chrome进程,导致--remote-debugging-port=9222参数没有生效,9222端口根本没有开启远程调试服务。
解决步骤
  • 第一步:先关闭所有Chrome后台进程,再使用你提供的命令启动Chrome,确保远程调试端口正常生效。
  • 第二步:优先选择动态获取端点的方案,避免每次手动修改代码,参考代码如下:
const puppeteer = require('puppeteer');
const http = require('http');

// 自动拉取当前Chrome的有效ws调试端点
function getValidWsEndpoint() {
    return new Promise((resolve, reject) => {
        http.get('http://localhost:9222/json/version', (res) => {
            let resData = '';
            res.on('data', (chunk) => {
                resData += chunk;
            });
            res.on('end', () => {
                const debugInfo = JSON.parse(resData);
                resolve(debugInfo.webSocketDebuggerUrl);
            });
        }).on('error', (err) => {
            reject(new Error('无法获取调试端点,请确认Chrome已开启远程调试且9222端口未被占用', { cause: err }));
        });
    });
}

(async () => {
    const browserWSEndpoint = await getValidWsEndpoint();
    const browser = await puppeteer.connect({ browserWSEndpoint });
    const page = await browser.newPage();
    // 后续执行你的业务脚本
})().catch(err => {
    console.error('运行出错:', err);
    process.exit(1);
});
  • 如果你需要手动确认端点是否正确,启动Chrome后访问http://localhost:9222/json/version,复制返回结果中webSocketDebuggerUrl字段的完整值替换代码中的硬编码地址即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:18:01