Вы должны извлечь и использовать правильный формат файлов cookie.
- Сначала установите это расширение с именем EditThisCookie .
Затем экспортируйте файл cookie.Вы получите массив файлов cookie.
Используйте ...
распространение, чтобы передать все куки в качестве аргумента setCookie
.
await page.setCookie(...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, зависит от вас, вы можете жестко закодировать их, вы можете использовать некоторую базу данных и т. Д. Это не связано скак вы передаете куки.
Если это только один куки, как в примере с PayPal, вы передаете их с page.setCookie(cookie)
, но если это несколько куки, как вы получили при экспорте с помощью EditThisCookie или примера localhost выше, то выЯ должен использовать оператор распространения с тремя точками, как я объяснил выше.
Подробнее о спреде и отдыхе вы можете прочитать на этом вопросе .