2010-02-03 9 views
7

क्या Greasemonkey किसी दिए गए डोमेन से कुकीज़ हटा सकता है? यदि हां, तो कैसे?क्या उपयोगकर्ता द्वारा किसी दिए गए डोमेन से कुकीज़ हटा दी जा सकती है?

+0

फ़ायरफ़ॉक्स में आप जो भी डोमेन चाहते हैं, उससे कुकीज़ को पहले से ही हटा सकते हैं, साथ ही किसी विशिष्ट डोमेन से कुकीज़ को अवरुद्ध कर सकते हैं। आप इसे "विकल्प ..." संवाद में पा सकते हैं। क्या इसके लिए एक विशेष कारण है कि आप Greasemonkey स्क्रिप्ट चाहते हैं? –

+1

मैं इसे ऐसी साइट के लिए स्वचालित करना चाहता हूं जिसे मुझे बार-बार से कुकीज़ साफ़ करने की आवश्यकता है। –

उत्तर

9

Greasemonkey क्या हटा सकता है पर प्रमुख सीमाएं हैं। अन्य उपकरण जो आप चाहते हैं उसके लिए बेहतर हो सकते हैं, नीचे देखें। लेकिन, यदि इन सभी शर्तों को पूरा किया जाता है:

  • कुकीज़ जिन्हें आप हटाना चाहते हैं वर्तमान पृष्ठ के डोमेन पर हैं।
  • वे "Secure cookies" नहीं हैं।
  • /, एक रिक्त पथ इत्यादि सहित संभावित पथों के माध्यम से आप लूप
  • पेज लोड के बाद जावास्क्रिप्ट द्वारा कोई कुकी सेट नहीं की जाती है।
  • आपको ट्रैक करने वाली चीज़ वास्तव में एक "कुकी" है। कई वेबसाइटों आदि

तो LSO की, स्थानीय भंडारण सहित अन्य तकनीकों, की एक किस्म, का उपयोग करें, निम्न कोड निकल जाएंगे:

//--- Loop through cookies and delete them. 
var cookieList = document.cookie.split (/;\s*/); 

for (var J = cookieList.length - 1; J >= 0; --J) { 
    var cookieName = cookieList[J].replace (/\s*(\w+)=.+$/, "$1"); 

    eraseCookie (cookieName); 
} 

eraseCookie() कहां है:
(ध्यान दें कि यह eraseCookie सभी संभावित पथों और सबसे अधिक संभावना उप-डोमेन का प्रयास करके कई और कुकीज़ प्राप्त करता है।)

function eraseCookie (cookieName) { 
    //--- ONE-TIME INITS: 
    //--- Set possible domains. Omits some rare edge cases.?. 
    var domain  = document.domain; 
    var domain2  = document.domain.replace (/^www\./, ""); 
    var domain3  = document.domain.replace (/^(\w+\.)+?(\w+\.\w+)$/, "$2");; 

    //--- Get possible paths for the current page: 
    var pathNodes = location.pathname.split ("/").map (function (pathWord) { 
     return '/' + pathWord; 
    }); 
    var cookPaths = [""].concat (pathNodes.map (function (pathNode) { 
     if (this.pathStr) { 
      this.pathStr += pathNode; 
     } 
     else { 
      this.pathStr = "; path="; 
      return (this.pathStr + pathNode); 
     } 
     return (this.pathStr); 
    })); 

    (eraseCookie = function (cookieName) { 
     //--- For each path, attempt to delete the cookie. 
     cookPaths.forEach (function (pathStr) { 
      //--- To delete a cookie, set its expiration date to a past value. 
      var diagStr  = cookieName + "=" + pathStr + "; expires=Thu, 01-Jan-1970 00:00:01 GMT;"; 
      document.cookie = diagStr; 

      document.cookie = cookieName + "=" + pathStr + "; domain=" + domain + "; expires=Thu, 01-Jan-1970 00:00:01 GMT;"; 
      document.cookie = cookieName + "=" + pathStr + "; domain=" + domain2 + "; expires=Thu, 01-Jan-1970 00:00:01 GMT;"; 
      document.cookie = cookieName + "=" + pathStr + "; domain=" + domain3 + "; expires=Thu, 01-Jan-1970 00:00:01 GMT;"; 
     }); 
    }) (cookieName); 
} 

वैकल्पिक समारोह, सूचना या डिबग के लिए:

function listCookies() { 
    var cookieList = document.cookie.split (/;\s*/); 

    for (var J = 0, numCookies = cookieList.length; J < numCookies; ++J) { 
     console.log ("Cookie ", J, ": ", cookieList[J]); 
    } 
} 



आपका जीएम स्क्रिप्ट भी iFrame चालें का उपयोग तृतीय-पक्ष डोमेन पर कुकी हटाने के लिए कर सकते हैं, लेकिन जीएम का सबसे अच्छा तरीका नहीं है सामान्य रूप से कुकीज़ को संभालने के लिए।

किसी भी अन्य दावों से मूर्ख मत बनो, Greasemonkey और जावास्क्रिप्ट बस कुकी को हटा नहीं सकता है जब तक कि इस उत्तर के शीर्ष पर सूचीबद्ध सभी शर्तों को पूरा नहीं किया जाता है। ध्यान दें कि जावास्क्रिप्ट और Greasemonkey भी देख सकते हैं किसी पृष्ठ पर सभी कुकीज़ देखें।

Greasemonkey इसके लिए सबसे अच्छा उपकरण नहीं है, हालांकि यह चुनिंदा स्थितियों के लिए पर्याप्त हो सकता है।

  1. उपयोग Selective Cookie Delete:

    यहाँ कुछ कहीं अधिक शक्तिशाली समाधान कर रहे हैं। यह आपके इच्छित कुकीज़ रखता है और बाकी को हटा देता है। फ़ायरफ़ॉक्स बंद होने पर यह बहुत आसान बटन या स्वचालित रूप से धक्का पर करता है। दोनों सफेद सूचियों और ब्लैक-सूचियों का समर्थन किया जाता है।

  2. स्नीकर एलएसओ के लिए BetterPrivacy का उपयोग करें।
  3. ट्रैकिंग और क्रूर के व्यापक स्पेक्ट्रम को उजागर करने के लिए सप्ताह में कम से कम एक बार CCleaner चलाएं।
  4. शक्तिशाली, कस्टम, पूरी तरह से स्वचालित कुकी हटाने के लिए जिसमें Greasemonkey की गंभीर सीमाएं नहीं हैं, और यह से अधिक बार चलता है चुनिंदा कुकी हटाएं, आप अपना ब्राउज़र एक्सटेंशन लिख सकते हैं।
+0

बहुत बढ़िया, यह मेरी आवश्यकताओं के लिए काम करता है: डी –

+1

बहुत बहुत धन्यवाद! अंततः एक कुकी हटाना स्क्रिप्ट जो काम करता है! – GrayFace

0

आप वर्तमान में खुली साइट के लिए कुकीज़ को हटाने में सक्षम होना चाहिए। Cookie Zapper script पर एक नज़र डालें, यह वही कर सकता है जो आप चाहते हैं और यदि स्रोत आपको सही दिशा में इंगित नहीं करेगा।

+1

HTTP-only कुकीज़ को उस विधि (Greasemonkey में) का उपयोग करके हटाया नहीं जा सकता है। –

संबंधित मुद्दे