2016-08-25 53 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上討論過。