【发布时间】: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