Передайте подписанный файл cookie кукловоду - PullRequest
0 голосов
/ 18 мая 2018

Я использую node.js и у меня есть доступ к моим подписанным куки-файлам.

Они имеют следующую форму:

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

Кукольник поддерживает куки-файлы и имеет эту функцию дляпередать параметры куки:

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 напрямую кукловоду?

1 Ответ

0 голосов
/ 19 мая 2018

Вы должны извлечь и использовать правильный формат файлов cookie.

  1. Сначала установите это расширение с именем EditThisCookie .
  2. Затем экспортируйте файл cookie.Вы получите массив файлов cookie.enter image description here

  3. Используйте ... распространение, чтобы передать все куки в качестве аргумента 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 выше, то выЯ должен использовать оператор распространения с тремя точками, как я объяснил выше.

Подробнее о спреде и отдыхе вы можете прочитать на этом вопросе .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...