मुझे ब्राउज़र से सभी कुकीज़ प्राप्त करने की आवश्यकता है


106

मुझे जावास्क्रिप्ट का उपयोग करके अपने ब्राउज़र में संग्रहीत सभी कुकीज़ प्राप्त करने की आवश्यकता है । यह कैसे किया जा सकता है?


5
nayagi, दुर्भाग्य से अगर हम आपके प्रश्न का उत्तर देते हैं तो आपके पास ऐसा सॉफ़्टवेयर होगा जो मालवेयर से कम नहीं है।
जॉन लिमजप

19
@Jon Limjap - यह बिल्कुल सच नहीं है। मैलवेयर के बिना एक वेब ब्राउज़र में सभी कुकीज़ के माध्यम से गणना करने में सक्षम होने के लिए वैध परिदृश्य हैं।
फ्रैंकी पेनोव

एक प्रतीक्षा रुको। कुकीज़ के सभी? किसी भी वेबसाइट से लॉगिन करें? यह मैलवेयर है ...
एलेक्सियोरेक

मेरे पास एक स्थिति है (एक व्यवसाय के लिए फ़ायरवॉल के पीछे वेब ऐप) जहां ऐसा करना आसान और काफी वैध होगा। हालाँकि, समस्या मौजूद है क्योंकि हमारे पास बहुत सारे आंतरिक डोमेन हैं (ज्यादातर वर्चुअल होस्ट के माध्यम से) इसलिए कोई यह तर्क दे सकता है कि समाधान सिंगल साइन ऑन का उपयोग करना है।
क्लबबेडास

जवाबों:


84

आप केवल एक विशिष्ट साइट के लिए कुकीज़ तक पहुँच सकते हैं। उपयोग करने से document.cookieआपको एक अर्धवृत्त द्वारा बची हुई कुंजी = मूल्य जोड़े की सूची मिलेगी।

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
सेमीकॉलन (";") के बाद स्पेस नहीं पकड़ता है, इसलिए कुंजियों के सामने एक स्थान होता है ... उपयोग /; ? / जब उन्हें हटाने के लिए विभाजन?
कार्टर कोल

पार्सिंग (ओ'रेली पुस्तक से) के लिए इस स्निपेट को देखें document.cookies
बेंटले

यह सुनिश्चित करने के लिए वास्तव में .trim () जोड़ी जानी चाहिए [0] कि कोई प्रमुख स्थान नहीं है।
एंड्रयू किलेन

37
  1. आप अन्य साइटों के लिए कुकीज़ नहीं देख सकते हैं।
  2. आप HttpOnlyकुकीज़ नहीं देख सकते ।
  3. आपके द्वारा देखी जा सकने वाली सभी कुकीज़ document.cookieसंपत्ति में हैं, जिसमें अर्धविराम से अलग की गई name=valueजोड़ी है।

27

आप नहीं कर सकते। डिज़ाइन के अनुसार, सुरक्षा उद्देश्य के लिए, आप केवल अपनी साइट द्वारा निर्धारित कुकीज़ तक पहुँच सकते हैं। StackOverflow UserVoice द्वारा निर्धारित कुकीज़ को नहीं देख सकता है और न ही अमेज़ॅन द्वारा सेट किए गए।


5
फेसबुक ने ऐसा कैसे किया ...? मैंने हमेशा देखा है कि Google से संबंधित विज्ञापन दिखाता है कि मैंने Google से क्या प्राप्त किया है!
अरी

16
दरअसल, फेसबुक हर साइट पर अपने कूकीज ... अपने लाइक बटन का इस्तेमाल करके प्लांट करता है। मुझे यकीन है कि Google +1 बटन या साइट आँकड़े स्क्रिप्ट पर भी ऐसा ही करता है।
फीलो

1
धन्यवाद ..., यह मेरी आँखें खोल रहा है। मुझे लगता है कि उनसे संबंधित किसी भी तरह का ऐप सोशल मीडिया अकाउंट ऐप का उपयोग करके लॉगिन सहित करेगा।
अरी

2
@SoursopTree - क्या यह विज्ञापन नहीं है? Facebook AdChoices का उपयोग करता है, जो एक Google सेवा है जो Google के माध्यम से आपकी खोजों के आधार पर सामग्री प्रदर्शित करती है। Stackoverflow AdChoices का भी उपयोग करता है। मैं सटीक विवरणों पर थोड़ा हटकर हो सकता हूं - लेकिन मुझे लगता है कि आप यही सोच रहे हैं।
रिक

1
@KPMove को हम इस शब्दावली को कुकी-सिंकिंग कहते हैं
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 आयरन 4.0.280)

रिंच (उपकरण) मेनू: विकल्प / हूड के तहत / [कुकीज़ और वेबसाइट की अनुमति दिखाएं] संबंधित डोमेन / साइट के लिए खोज बॉक्स में प्रत्यय टाइप करें (जैसे .foo.tv)। कैविएट: जब आपके पास एक नोड (साइट या कुकी) हो, तो हाइलाइट किया गया केवल विशिष्ट उपप्रकारों को मारने के लिए [निकालें] का उपयोग करें। [सभी को हटाएं] का उपयोग करके खोज द्वारा चयनित सभी साइटों के लिए अभी भी कुकीज़ हटा देंगे और अपना डिबगिंग सत्र बर्बाद कर सकते हैं।


1

ऑब्जेक्ट में कुंजी को ट्रिम () जोड़ा गया, और इसे स्ट्रिंग नाम दें, इसलिए यह अधिक स्पष्ट होगा कि हम यहां स्ट्रिंग के साथ काम कर रहे हैं।

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


0

आप जो पूछ रहे हैं वह संभव है; लेकिन यह केवल एक विशिष्ट ब्राउज़र पर काम करेगा। इसे प्राप्त करने के लिए आपको एक ब्राउज़र एक्सटेंशन ऐप विकसित करना होगा। बेहतर समझने के लिए आप क्रोम एपीआई के बारे में अधिक पढ़ सकते हैं। https://developer.chrome.com/extensions/cookies

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.