旧版Chrome(8.0.4147.125)无法被Puppeteer连接且Cookie丢失求助
一、排查连接失败的核心原因
1. 匹配Chrome与Puppeteer版本
你使用的Chrome版本8.0.4147.125过于老旧,Puppeteer初始版本仅支持Chrome 59+,版本不兼容是连接失败的核心原因。若为笔误(实际应为80.0.4147.125),请安装对应版本的Puppeteer:
npm install puppeteer@2.1.1
该版本对应Chrome 80.x,完全匹配你给出的版本号。若确实是Chrome 8.0,建议升级至Chrome 59及以上版本,否则无法使用Puppeteer连接。
2. 确认远程调试端口生效
- 关闭所有Chrome进程(任务管理器中结束所有
chrome.exe进程) - 双击修改后的快捷方式启动Chrome,打开任务管理器右键Chrome进程查看“属性”,确认命令行包含
--remote-debugging-port=9222 - 手动访问
http://localhost:9222/json/version,能返回JSON数据则说明远程调试正常开启;若无法访问,检查快捷方式路径与参数间的空格、引号是否正确
3. 修正Puppeteer连接代码
你的代码存在域名拼写错误及缺失兼容参数,修改后重试:
const puppeteer = require('puppeteer') const axios= require("axios") async function run(){ try { const response = await axios.get(`http://localhost:9222/json/version`); const webSocketDebuggerUrl = response.data.webSocketDebuggerUrl; console.log(webSocketDebuggerUrl) const browser = await puppeteer.connect({ browserWSEndpoint: webSocketDebuggerUrl, ignoreHTTPSErrors: true, // 兼容旧版Chrome的HTTPS证书问题 defaultViewport: null // 使用浏览器当前窗口尺寸,避免兼容问题 }); const page = await browser.newPage(); await page.goto("https://www.baidu.com"); // 修正域名拼写错误 // 验证连接成功 const title = await page.title(); console.log('页面标题:', title); } catch (error) { console.error('连接失败:', error.message); // 不要添加launch逻辑,避免自动启动新浏览器 } } run();
二、解决Cookie丢失问题
1. 给Chrome指定固定用户数据目录
修改Chrome快捷方式目标为:
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --remote-debugging-port=9222 --user-data-dir="D:\ChromeUserData"
--user-data-dir指定专属数据存储路径,登录后的Cookie、会话会永久保存在该目录,每次启动都会加载之前的登录状态。注意选择空文件夹或专属目录,避免与默认用户目录冲突。
2. 禁止自动启动新浏览器
确保代码中仅保留puppeteer.connect逻辑,删除任何puppeteer.launch的代码。连接失败时代码会直接抛出错误终止,不会自动启动新浏览器,避免覆盖已登录的Cookie环境。
3. 固定操作流程
运行Puppeteer代码前,必须先通过修改后的快捷方式启动Chrome(确保远程调试端口开启、用户数据目录加载),再执行代码,即可连接到带有登录Cookie的浏览器实例。
内容的提问来源于stack exchange,提问作者user1080425
相关产品推荐
相关产品推荐

