gpt4 book ai didi

node.js - 将签名的 cookie 传递给 puppeteer

转载 作者:行者123 更新时间:2023-12-04 16:30:05 26 4
gpt4 key购买 nike

我正在使用 node.js,显然我可以访问我签名的 cookie。

它们是这样的形式:

{ 'connect.sid': 's:qX4ZrttrjydtrjkgsdghsdghrewynZj4Ew2OUh.tTSILkcvgsegsegsegsr99gmW5
0XLcJefM' }

Puppeteer 支持 cookie,为了传递 cookie 的参数,有这个功能:

page.setCookie(...cookies)
...cookies <...Object>
name <string> required
value <string> required
url <string>
domain <string>
path <string>
expires <number> Unix time in seconds.
httpOnly <boolean>
secure <boolean>
sameSite <string> "Strict" or "Lax".
returns: <Promise>

如您所见,您直接提供每个字段的参数。有没有办法将我签名的 cookie 直接传递给 puppeteer?

最佳答案

您必须提取并使用正确的 cookie 格式。

  1. 首先安装这个名为 EditThisCookie 的扩展程序.
  2. 然后导出你的cookie。您将获得一系列 cookie。 enter image description here

  3. 使用 ... 传播将所有 cookie 作为参数传递给 setCookie

    await page.setCookie(...cookies)

完成!

如果你想写 cookie,那么这里有一个格式。

const cookies = [
{
"domain": "localhost", // google.com, yahoo.com etc. Without the host
"hostOnly": true,
"httpOnly": true,
"name": "connect.sid", // here is the actual cookie name
"path": "/",
"sameSite": "no_restriction",
"secure": false,
"session": true,
"storeId": "0",
"value": "s%3AliYZ-M8urEQLfgn2_kSG_FIPwVTr5VQs.5rrJW7hzuXebekzTRgPYFTYri5nljhGCp8Dz%2FgLoSN4", // and the value
"id": 1
}
]

工作示例

const cookie = {
name: 'login_email',
value: 'set_by_cookie@domain.com',
domain: '.paypal.com',
url: 'https://www.paypal.com/',
path: '/',
httpOnly: true,
secure: true
}

const puppeteer = require('puppeteer');


const browser = await puppeteer.launch()
const page = await browser.newPage()
await page.setCookie(cookie)
await page.goto('https://www.paypal.com/signin')
await page.screenshot({
path: 'paypal_login.png'
})
await browser.close()

如果您注意到原始文档,它会显示带有三个点的 page.setCookie(...cookies) cookie。这基本上意味着您可以通过这种方式将对象数组作为参数传递。

如何将数据放入 cookie 变量取决于您,您可以对其进行硬编码,您可以使用一些数据库等。这与您如何传递 cookie 无关。

如果它只是一个像 paypal 示例中的 cookie,则使用 page.setCookie(cookie) 传递它们,但如果它是像您使用 EditThisCookie 或上面的 localhost 示例导出的多个 cookie,那么您必须使用带有三个点的扩展运算符,就像我上面解释的那样。

您可以在 this question 上阅读有关传播和休息的更多信息.

关于node.js - 将签名的 cookie 传递给 puppeteer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50418994/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com