将原始cookie转换为木偶操作者接受

时间:2018-05-17 20:04:10

标签: node.js session cookies passport.js puppeteer

我想将来自passport.js的会话传递给木偶戏。

我使用var cookies = req.cookies;来获取Cookie值。

我控制台。记录它,它是这样的:

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

我认为把这个值传递给木偶操作就好了。

但puppeteer有一个page.setCookie()函数,其格式为:

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>

那我怎么把puppeteer传给我的饼干?有没有办法将它从原始值转换为puppeteer接受的值?

我的原始cookie上可能是那个大字符串,传递给puppeteer接受的对象的值?

1 个答案:

答案 0 :(得分:1)

如果您使用的是MacOS(不幸的是,我目前无法发表评论),我也在一段时间内也在寻找该问题的答案。.答案是使用您的MacOS用户凭据将cookie值加密为SQL DB表,您首先需要使用可以访问您的钥匙串的东西解密(当然需要您的许可)。

一旦被解密,第2部分)会将其转换为Puppeteer可以接受的东西。

有一个NPM软件包可以执行前一个操作,而不是后者(https://github.com/bertrandom/chrome-cookies-secure),但是我已经对其进行了处理,以便它现在可以为任何给定的Chrome配置文件生成支持Puppeteer的cookie。有一个PR请求(https://github.com/bertrandom/chrome-cookies-secure/pull/14)-尚未接受-但我已经在一个实时应用程序上运行了一个月。

chrome-cookies-secure的NPM程序包添加到您的应用程序,您将一路顺风。

创建Puppeteer对象的基本要素如下(您应该能够看到index.js对打开的PR的更改以及README.MD中的示例):

// 'cookie' is an array of Objects with keys as written in decrypted SQL DB

let puppeteerCookies = [];

cookies.forEach(function(cookie, index) {
    const puppeteerCookieObject = {
        name: cookie.name,
        value: cookie.value,
        expires: cookie.expires_utc,
        domain: cookie.host_key,
        path: cookie.path
    }
    if (cookie.is_secure) {
        puppeteerCookieObject['Secure'] = true
    }
    if (cookie.is_httponly) {
        puppeteerCookieObject['HttpOnly'] = true
    }
    puppeteerCookies.push(puppeteerCookieObject)
})

return puppeteerCookies;

希望这会有所帮助。