【问题标题】:Requests setting cookies in cookieJar including subdomains请求在 cookieJar 中设置 cookie,包括子域
【发布时间】:2016-08-25 12:14:20
【问题描述】:

我有一堆 JSON 格式的 cookie。它们是从名为 EditThisCookie 的插件导出 cookie 的结果。

我正在尝试解析 JSON cookie 数组并将它们添加到 cookiejar 中。我是这样做的:

JSONCookies.forEach(cookie => {
    let extensions = [
        'session=true',
        'sameSite=no_restriction'
    ];

    cookies.push(new ToughCookie.Cookie({
        key: cookie.name,
        value: cookie.value,
        secure: cookie.secure || false,
        path: cookie.path,
        httpOnly: cookie.httpOnly || false,
        extensions: extensions
    }));

    // Set the uid property of object with users ID
    if(cookie.name === 'c_user') {
        this.uid = cookie.value;
    }
})

我将它们添加到请求的 cookiejar 中:

cookies.forEach(function(cookie) {
    cookieJar.setCookie(cookie, 'https://facebook.com', (err, cookie) => {
        if(err) {
            reject(new Error(err));
            return;
        }
    })
})

... 这很好用。我可以向 Facebook 提出请求并从我们的业务组中提取数据。

但是,Facebook 上的许多请求都使用子域。如upload.facebook.com。这行不通。显然是因为我错过了 cookie 中的 domain

所以,我创建了坚韧的 cookie 并添加了domain: '.facebook.com'。除了现在当我提出请求时,它会失败并出现错误:

Error: Cookie not in this host's domain. Cookie:facebook.com Request:null

如何设置 cookiejar 中的 cookie 以跨子域工作?有可能吗?

文档不是很好,我一直无法找到如何做到这一点。我认为这与传递给setCookie 的 URL 有关。我试图将其更改为不同的变体,但无济于事。

【问题讨论】:

  • @CBroe 错误。在过去的一年里,我一直在销售帮助群组管理员管理群组垃圾邮件的软件。由于组端点有限,因此无法使用 API 执行此类操作。在我与 Facebook 的安全团队密切合作报告错误时,Facebook 已经知道我的软件 8 个月了。他们对此没有意见,因为它有利于群组的所有者,并且会做一些 API 不支持的事情。
  • @CBroe facebook.com/apps/site_scraping_tos_terms.php?hc_location=ufi ... 见第 2 条。我们公司已获得 Facebook 的许可。任何人都可以通过填写以下表格申请许可:facebook.com/apps/site_scraping_tos.php

标签: node.js cookies node-request


【解决方案1】:

我最近遇到了同样的问题。解决方案是这样做:

cookies.push(new ToughCookie.Cookie({
    domain: 'facebook.com'
    key: cookie.name,
    value: cookie.value,
    secure: cookie.secure || false,
    path: cookie.path,
    httpOnly: cookie.httpOnly || false,
    extensions: extensions
}));

.facebook.com 中的前导 . 不是必需的。这也在tough-cookie github issue 上讨论过。

【讨论】:

    猜你喜欢
    • 2018-09-30
    • 1970-01-01
    • 2012-10-11
    • 2017-06-22
    • 2023-03-13
    • 1970-01-01
    • 2015-12-21
    • 2011-04-21
    • 2013-06-17
    相关资源
    最近更新 更多