重新加载Puppeteer => page.setCookie(... cookies)之后cookie消失了

时间:2018-08-24 11:54:36

标签: javascript node.js cookies puppeteer

我发现使用page.setCookie(...cookies)方法在Github上遇到了一些麻烦。

我想知道是否有人可以使用此方法保存cookie持久性。我已经看到了解决方法(但这不是我的问题)

在这段代码中,我简单地设置了一个cookie,然后重新加载页面。重新加载页面后,cookie不再存在。我试图删除过期,以后将其设置为0、1,-1或Unix时间戳。...没有任何作用

const puppeteer = require('puppeteer');

const OPT = {
    headless: false,
    args: ['--no-sandbox', '--disable-setuid-sandbox', '--user-data-dir']
};

const COOKS =
    [ { name: 'tdsess',
        value: 'TEST_DRIVE_SESSION',
        domain: 'testing-ground.scraping.pro',
        path: '/',
        expires: -1,
        size: 24,
        httpOnly: false,
        secure: false,
        session: true } ];

(async () => {
    const URL = `http://testing-ground.scraping.pro/login`
    const browser = await puppeteer.launch(OPT)
    const page = await browser.newPage()
    await page.goto(URL, { 'waitUntil' : 'networkidle2' })

    await page.setCookie(...COOKS)
    let cook = await page.cookies()

    console.log(`==== first login ====`)
    console.log(cook)
    console.log(`==================`)

    await page.reload()
    console.log(`after reload`)
    setInterval(async () => {
        cook = await page.cookies()
        console.log(cook)
    }, 3000)
})()

这将输出:

==== first login ====
[ { name: 'tdsess',
    value: 'TEST_DRIVE_SESSION',
    domain: 'testing-ground.scraping.pro',
    path: '/',
    expires: -1,
    size: 24,
    httpOnly: false,
    secure: false,
    session: true } ]
==================
after reload
[]
[]

我使用的版本:

* Puppeteer 1.7.0 * Nodejs 10.8.0 *

2 个答案:

答案 0 :(得分:0)

此问题的答案隐藏在Cookie设置的path: '/'中。

如果您将其设置为path: '/login'(因为您正尝试在http://testing-ground.scraping.pro/login路线上进行注册),则它应该正确注册并且可以再次访问。

答案 1 :(得分:0)

我没有访问登录页面的正确URL

library(huxtable) foo <- as_huxtable(matrix(rnorm(4), 2, 2)) number_format(foo) <- 0 # zero decimal places as_Workbook(foo) # should have the right formatting

访问此页面后看起来不错。

http://testing-ground.scraping.pro/login?mode=welcome