2010-02-03 18 views
7

Greasemonkey có thể xóa cookie khỏi một miền cụ thể không? Nếu vậy, làm thế nào?Người dùng có thể xóa cookie khỏi một miền nhất định không?

+0

Trong Firefox, bạn có thể xóa cookie khỏi bất kỳ tên miền nào bạn muốn, cũng như chặn cookie từ một miền cụ thể. Bạn có thể tìm thấy điều này trong hộp thoại "Tùy chọn ...". Có lý do cụ thể nào bạn muốn một tập lệnh Greasemonkey cho điều này không? –

+1

Tôi muốn tự động hóa nó cho một trang web mà tôi cần phải xóa cookie liên tục. –

Trả lời

9

Có những hạn chế lớn về những gì Greasemonkey có thể xóa. Các công cụ khác có thể tốt hơn cho những gì bạn muốn, xem bên dưới. Tuy nhiên, nếu tất cả các điều kiện này được đáp ứng:

  • Cookie bạn muốn xóa nằm trên tên miền của trang hiện tại.
  • Chúng không phải là "Secure cookies".
  • Bạn lặp qua các đường dẫn có thể, bao gồm /, đường dẫn trống, v.v.
  • Không có cookie nào được đặt bởi javascript, sau khi tải trang.
  • Điều theo dõi bạn thực sự là "cookie". Nhiều trang web sử dụng một loạt các kỹ thuật khác, bao gồm lưu trữ cục bộ LSO, vv

THEN, đoạn code sau sẽ xóa chúng:

//--- 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); 
} 

đâu eraseCookie() là:
(Lưu ý rằng Điều này eraseCookie nhận được nhiều cookie hơn bằng cách thử tất cả các đường dẫn có thể và các miền phụ có khả năng nhất.)

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); 
} 

chức năng tùy chọn, cung cấp thông tin hoặc gỡ lỗi:

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

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



kịch bản GM của bạn cũng có thể sử dụng thủ thuật iFrame để xóa cookie trên miền của bên thứ ba, nhưng GM không phải là cách tốt nhất để xử lý cookie, nói chung.

Không bị lừa bởi bất kỳ khiếu nại nào khác, Greasemonkey và javascript không thể xóa cookie trừ khi tất cả các điều kiện, được liệt kê ở đầu câu trả lời này, được đáp ứng. Lưu ý rằng javascript và Greasemonkey thậm chí không thể xem tất cả cookie trên một trang.

Greasemonkey không phải là công cụ tốt nhất cho việc này, mặc dù nó có thể đủ cho các tình huống lựa chọn.

Dưới đây là một số giải pháp xa mạnh hơn:

  1. Sử dụng Selective Cookie Delete. Nó giữ các tập tin cookie bạn muốn và xóa phần còn lại. Nó thực hiện điều này bằng cách nhấn một nút rất tiện dụng hoặc tự động khi Firefox đóng. Cả danh sách trắng và danh sách đen đều được hỗ trợ.
  2. Sử dụng BetterPrivacy để lén lút LSO.
  3. Chạy CCleaner ít nhất một lần một tuần, để loại trừ một phổ rộng của theo dõi và cruft.
  4. Để loại bỏ cookie mạnh mẽ, tùy chỉnh, hoàn toàn tự động không có giới hạn nghiêm trọng mà Greasemonkey có và chạy thường xuyên hơn Cookie chọn lọc Xóa, bạn có thể viết tiện ích bổ sung cho trình duyệt của mình.
+0

Tuyệt vời, điều này phù hợp với nhu cầu của tôi: D –

+1

Cảm ơn rất nhiều! Cuối cùng, tập lệnh xóa cookie hoạt động! – GrayFace

0

Bạn sẽ có thể xóa cookie cho trang web hiện đang mở. Có một cái nhìn tại Cookie Zapper script, điều này có thể làm những gì bạn muốn và nếu không phải là nguồn có lẽ sẽ chỉ cho bạn đi đúng hướng.

+1

Không thể xóa cookie chỉ sử dụng phương thức đó (trong Greasemonkey). –

Các vấn đề liên quan