我正在使用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?
答案 0 :(得分:1)
您必须提取并使用正确的Cookie格式。
使用...
点差将所有Cookie作为参数传递给setCookie
。
await page.setCookie(...cookies)
完成!
如果你想写cookies,那么这是一种格式。
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的方式无关。
如果这只是一个饼干像贝宝例如,你通过他们用page.setCookie(cookie)
,但如果是多个cookie就像你使用EditThisCookie或以上的本地主机例如出口了,那么你必须使用传播运营商,像我上面解释过的三个点。
您可以在this question上阅读有关传播和休息的更多信息。