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

如何通过Puppeteer利用已有Cookie维持登录状态?

解决Puppeteer注入登录Cookie仍被要求登录的问题

你的代码核心问题是Cookie注入时机错误,同时部分Cookie属性配置不符合目标网站要求,导致服务器不识别你的登录状态。以下是具体修复方案:

1. 调整Cookie注入顺序

你现在是先访问目标页面,再设置Cookie——这时候服务器已经返回未登录的页面内容了,后续设置Cookie不会让已加载的页面自动变为登录状态。正确流程是:创建页面后先注入Cookie,再访问目标页面。

2. 修正Cookie属性配置

从你的代码看,Cookie的httpOnly属性搞反了:

  • sessionid通常是httpOnly: true(防止前端脚本窃取,由服务器端验证)
  • csrftoken通常是httpOnly: false(前端需要读取并在请求中携带)
    同时要确保Cookie的domain、path、secure、sameSite等属性和你登录浏览器中实际存储的Cookie完全一致(可以在浏览器开发者工具的Application→Cookies里查看)。

3. 清除默认Cookie(可选但推荐)

注入自定义Cookie前,先清除页面的默认Cookie,避免新旧Cookie冲突。

修改后的完整代码

import puppeteer from "puppeteer";

const width = 1080;
const height = 1024;
const browser = await puppeteer.launch({
  headless: false,
});
const page = await browser.newPage();

// 先设置与登录时一致的User-Agent
await page.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36');

// 清除页面默认Cookie
await page.deleteCookie(...(await page.cookies()));

// 配置正确的Cookie(属性需和浏览器中实际登录状态的Cookie完全匹配)
const cookies = [
  {
    name: "sessionid",
    value: "4a1fatg96pkisqew7iv5hzikyif41qtn",
    domain: "briansclub.cm",
    path: "/",
    httpOnly: true,
    secure: true,
    sameSite: "Lax"
  },
  {
    name: "csrftoken",
    value: "替换为你登录状态下浏览器中的csrftoken值",
    domain: "briansclub.cm",
    path: "/",
    httpOnly: false,
    secure: true,
    sameSite: "Lax"
  },
  // 若网站有其他登录关联Cookie,需一并添加
];

// 注入Cookie
await page.setCookie(...cookies);

// 访问目标页面
await page.goto("https://briansclub.cm/cvv/", {waitUntil: 'networkidle0'});

// 验证登录状态(替换为网站登录后才会出现的元素选择器)
const isLoggedIn = await page.$eval(".logged-in-avatar", el => !!el).catch(() => false);
console.log("登录状态:", isLoggedIn ? "已登录" : "未登录");

额外注意事项

  • 不要从未登录页面获取csrftoken,直接使用登录状态下浏览器存储的csrftoken值,未登录页面的token与登录状态的token不匹配。
  • 确保你的sessionid是有效且未过期的,过期的sessionid会被服务器直接拒绝。
  • 部分网站会检测浏览器指纹(如Canvas、WebGL指纹),若Cookie配置正确仍被拦截,需进一步配置Puppeteer模拟更真实的浏览器环境(如启用完整JavaScript、设置viewport、禁用自动化特征检测等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:24:31