ฉันต้องการรับคุกกี้ทั้งหมดจากเบราว์เซอร์


107

ฉันต้องการเก็บคุกกี้ทั้งหมดไว้ในเบราว์เซอร์ของฉันโดยใช้ JavaScript ทำได้ยังไง?


5
nayagi น่าเสียดายถ้าเราตอบคำถามของคุณคุณจะมีซอฟต์แวร์ที่ไม่น้อยไปกว่า MALWARE
Jon Limjap

19
@ จอนลิมจัป - นั่นไม่จริงเลย มีสถานการณ์ที่ถูกต้องในการระบุผ่านคุกกี้ทั้งหมดในเว็บเบราว์เซอร์โดยไม่ต้องเป็นมัลแวร์
Franci Penov

รอสักครู่ คุกกี้ทั้งหมด? เข้าสู่ระบบจากเว็บไซต์ใด? นั่นคือมัลแวร์ ...
alexyorke

ฉันมีสถานการณ์ (เว็บแอปที่อยู่เบื้องหลังไฟร์วอลล์สำหรับธุรกิจ) ซึ่งการทำเช่นนี้จะสะดวกและถูกต้องตามกฎหมาย อย่างไรก็ตามปัญหาเกิดขึ้นเนื่องจากเรามีโดเมนภายในมากเกินไป (ส่วนใหญ่ผ่านโฮสต์เสมือน) จึงอาจโต้แย้งได้ว่าวิธีแก้ปัญหาคือการใช้ Single Sign On
ClubbedAce

คำตอบ:


84

คุณสามารถเข้าถึงคุกกี้สำหรับไซต์ใดไซต์หนึ่งเท่านั้น เมื่อใช้document.cookieคุณจะได้รับรายการของคู่คีย์ = ค่าที่ใช้ Escape ซึ่งคั่นด้วยอัฒภาค

secret=do%20not%20tell%you;last_visit=1225445171794

เพื่อให้การเข้าถึงง่ายขึ้นคุณต้องแยกวิเคราะห์สตริงและยกเลิกการสเคปรายการทั้งหมด:

var getCookies = function(){
  var pairs = document.cookie.split(";");
  var cookies = {};
  for (var i=0; i<pairs.length; i++){
    var pair = pairs[i].split("=");
    cookies[(pair[0]+'').trim()] = unescape(pair.slice(1).join('='));
  }
  return cookies;
}

ดังนั้นคุณอาจเขียนในภายหลัง:

var myCookies = getCookies();
alert(myCookies.secret); // "do not tell you"

5
สิ่งนี้ไม่จับช่องว่างหลังเครื่องหมายอัฒภาค (";") ดังนั้นคีย์จึงมีช่องว่างด้านหน้า ... ใช้ /; ? / เมื่อแยกเพื่อเอาออก?
Carter Cole

ตรวจสอบตัวอย่างข้อมูลนี้สำหรับการแยกวิเคราะห์document.cookies(จากหนังสือ O'Reilly)
Bentley4

ควรเพิ่ม. trim () เพื่อจับคู่ [0] เพื่อให้แน่ใจว่าไม่มีช่องว่างนำหน้า
Andrew Killen

37
  1. คุณไม่เห็นคุกกี้ของไซต์อื่น
  2. คุณไม่เห็นHttpOnlyคุกกี้
  3. คุกกี้ทั้งหมดที่คุณเห็นอยู่ในdocument.cookieคุณสมบัติซึ่งมีรายการคู่ที่คั่นด้วยอัฒภาคname=value

27

คุณไม่สามารถ. โดยการออกแบบเพื่อความปลอดภัยคุณสามารถเข้าถึงได้เฉพาะคุกกี้ที่ไซต์ของคุณกำหนด StackOverflow ไม่สามารถมองเห็นคุกกี้ที่กำหนดโดย UserVoice หรือคุกกี้ที่กำหนดโดย Amazon


5
facebook ทำยังไง ... ? ฉันมักจะเห็น facebook แสดงโฆษณาที่เกี่ยวข้องกับสิ่งที่ฉันเรียกดูจาก Google!
อารีย์

16
จริงๆแล้ว Facebook ปลูกคุกกี้ของตัวเองในทุกไซต์ ... โดยใช้ปุ่ม Like ฉันพนันได้เลยว่า Google ทำแบบเดียวกันกับปุ่ม +1 หรือแม้กระทั่งบนสคริปต์สถิติของไซต์
PhiLho

1
ขอบคุณ ... มันกำลังลืมตา ฉันคิดว่าแอปประเภทใดก็ได้ที่เกี่ยวข้องกับพวกเขารวมถึงการเข้าสู่ระบบโดยใช้แอปบัญชีโซเชียลมีเดีย
อารีย์

2
@SoursopTree - ไม่ใช่ AdChoices ใช่หรือไม่ Facebook ใช้ AdChoices ซึ่งเป็นบริการของ Google ที่แสดงเนื้อหาตามการค้นหาของคุณผ่าน Google Stackoverflow ใช้ AdChoices ด้วย ฉันอาจจะไม่ค่อยเข้าใจในรายละเอียด แต่ฉันเดาว่านั่นคือสิ่งที่คุณกำลังคิดอยู่
Rik

1
@KeepMove เราเรียกคำศัพท์นี้ว่าคุกกี้ซิงค์
ericdemo07

12

ในการดึงข้อมูลคุกกี้ทั้งหมดสำหรับเอกสารปัจจุบันที่เปิดในเบราว์เซอร์ให้คุณใช้document.cookieคุณสมบัติอีกครั้ง


4

แนวทางที่ทันสมัย

let c = document.cookie.split(";").reduce( (ac, cv, i) => Object.assign(ac, {[cv.split('=')[0]]: cv.split('=')[1]}), {});

console.log(c);

;)


2

เนื่องจากชื่อไม่ได้ระบุว่าต้องเป็นแบบโปรแกรมฉันจะถือว่าเป็นปัญหาการดีบัก / การจัดการความเป็นส่วนตัวของแท้และการแก้ปัญหาขึ้นอยู่กับเบราว์เซอร์และต้องใช้เบราว์เซอร์ที่มีการโทรจัดการคุกกี้โดยละเอียดและ / หรือโมดูลการดีบักหรือ ปลั๊กอิน / ส่วนขยาย ฉันจะแสดงรายการหนึ่งและขอให้คนอื่นเขียนลงในเบราว์เซอร์ที่พวกเขารู้จักโดยละเอียดและโปรดระบุเวอร์ชันให้แม่นยำด้วย

โครเมียมเหล็ก (SRWare Iron 4.0.280)

เมนูประแจ (เครื่องมือ): ตัวเลือก / ภายใต้ฮูด / [แสดงคุกกี้และการอนุญาตเว็บไซต์] สำหรับโดเมน / ไซต์ที่เกี่ยวข้องให้พิมพ์คำต่อท้ายในช่องค้นหา (เช่น. foo.tv) ข้อแม้: เมื่อคุณมีโหนด (ไซต์หรือคุกกี้) ที่เน้นการคลิกให้ใช้ [ลบ] เพื่อฆ่าทรีย่อยเฉพาะ การใช้ [ลบทั้งหมด] จะยังคงลบคุกกี้สำหรับไซต์ทั้งหมดที่เลือกโดยการค้นหาและทำให้เซสชันการดีบักของคุณเสียไป


1

เพิ่มการตัดแต่ง () ให้กับคีย์ในออบเจ็กต์และตั้งชื่อมันว่า str ดังนั้นมันจะชัดเจนมากขึ้นว่าเรากำลังจัดการกับสตริงที่นี่

export const getAllCookies = () => document.cookie.split(';').reduce((ac, str) => Object.assign(ac, {[str.split('=')[0].trim()]: str.split('=')[1]}), {});


0

สิ่งที่คุณขอเป็นไปได้ แต่จะใช้ได้เฉพาะกับเบราว์เซอร์ที่เจาะจงเท่านั้น คุณต้องพัฒนาแอปส่วนขยายเบราว์เซอร์เพื่อให้บรรลุสิ่งนี้ คุณสามารถอ่านเพิ่มเติมเกี่ยวกับ chrome api เพื่อทำความเข้าใจได้ดีขึ้น https://developer.chrome.com/extensions/cookies

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.