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

如何通过无头Chrome管理登录会话?Puppeteer保存Steam OAuth会话

解决方案:在Puppeteer无头实例间复用Steam OAuth登录会话

这个问题我之前做Steam相关爬虫时也碰到过,核心就是让Puppeteer复用Chrome的用户会话数据(包括Cookie、登录状态这些),有两个非常实用的方案,给你详细拆解下:


方案一:自定义用户数据目录,永久保存会话

Chrome的所有登录状态、Cookie、本地存储都是存在用户数据目录里的,只要让每次启动的无头Chrome都使用同一个目录,就能自动复用之前的登录会话。

步骤和代码示例:

  1. 选择一个本地目录(比如./steam-chrome-profile)来存储会话数据
  2. 启动Puppeteer时指定userDataDir参数:
const puppeteer = require('puppeteer');

(async () => {
  // 启动无头Chrome,指定自定义用户数据目录
  const browser = await puppeteer.launch({
    headless: 'new', // 推荐用新版无头模式,和正常Chrome行为更一致
    userDataDir: './steam-chrome-profile', // 你的会话存储目录
    args: ['--no-sandbox', '--disable-setuid-sandbox'] // 可选,解决部分环境的权限限制
  });

  const page = await browser.newPage();
  await page.goto('你的目标URL');

  // 第一次运行时:手动完成Steam OAuth登录(可以临时把headless改成false,登录后再切回无头)
  // 后续运行时:浏览器会自动加载之前保存的登录状态,无需重复登录
  // --- 这里写你填写输入框、点击按钮的逻辑 ---

  await browser.close();
})();

注意事项:

  • 第一次运行建议暂时关闭无头模式(headless: false),手动完成Steam登录流程,之后再切回无头模式即可自动复用状态
  • 确保程序对userDataDir目录有读写权限
  • 不要同时启动多个使用同一个用户目录的Chrome实例,会导致会话冲突

方案二:复用本地已登录的主Chrome会话

如果已经在你的日常使用的Chrome浏览器里完成了Steam登录,可以直接让无头Chrome复用这个现成的会话,省去重新登录的步骤。

步骤和代码示例:

  1. 找到本地Chrome的用户数据目录:
    • Windows:C:\Users\<你的用户名>\AppData\Local\Google\Chrome\User Data
    • macOS:~/Library/Application Support/Google/Chrome/Default
    • Linux:~/.config/google-chrome/Default
  2. 复制一份目录副本(重要!不要直接用原目录,否则会和正在运行的主Chrome冲突)
  3. 启动Puppeteer时指定这个副本目录:
const puppeteer = require('puppeteer');

(async () => {
  // 注意:必须用复制后的目录,避免和主Chrome进程冲突
  const browser = await puppeteer.launch({
    headless: 'new',
    userDataDir: '/Users/你的用户名/Library/Application Support/Google/Chrome/SteamSessionCopy', // 替换成你的副本目录路径
    args: ['--no-sandbox', '--disable-setuid-sandbox']
  });

  const page = await browser.newPage();
  await page.goto('你的目标URL');

  // 此时页面应该已经处于Steam登录状态,直接执行后续的输入框填写、按钮点击操作即可

  await browser.close();
})();

注意事项:

  • 复制目录前必须关闭主Chrome浏览器,否则部分文件会被锁定,导致复制不完整
  • 不同操作系统的路径格式要对应正确,Windows路径记得用双反斜杠或者正斜杠转义
  • 如果遇到会话未加载的情况,可以检查副本目录是否完整,或者是否有Chrome的同步功能干扰(可以临时关闭同步)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 03:36:32