2016-08-25 117 views
1

我有一堆JSON格式的cookie。它们是从名为EditThisCookie的插件中导出cookie的结果。请求在cookieJar中设置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

所以,我创建了韧体饼干并添加了domain: '.facebook.com'。除了现在当我做出一个错误失败的请求:

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

我怎么能设置的Cookie在cookiejar跨子域工作?可能吗?

该文档不是很好,我一直无法找到如何做到这一点。我认为这与传入setCookie的网址有关。我试图改变这种不同的变化无济于事。

+0

@CBroe错了。过去一年,我一直在销售软件,帮助群组管理员管理群组中的垃圾邮件。由于组端点有限,因此无法使用API​​执行此类操作。由于我与Facebook的安全团队密切合作报告错误,Facebook已经意识到我的软件已经8个月了。他们没有问题,因为它有利于组织的所有者,并且做了API不支持的事情。 – BugHunterUK

+1

@CBroe https://www.facebook.com/apps/site_scraping_tos_terms.php?hc_location=ufi ...查看第2条。我们公司获得Facebook的许可。任何人都可以通过填写以下表格申请许可:https://www.facebook.com/apps/site_scraping_tos.php – JamesTheHacker

回答

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上讨论过。