Tho*_*ing 8 javascript cookies firefox greasemonkey userscripts
Greasemonkey可以删除给定域中的cookie吗?如果是这样,怎么样?
Bro*_*ams 12
Greasemonkey可以删除的内容有很大的局限性.其他工具可能更适合您的需求,请参阅下文.但是,如果满足所有这些条件:
/空白路径等.那么,以下代码将删除它们:
//--- 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);
}
Run Code Online (Sandbox Code Playgroud)
其中eraseCookie():(
请注意,此eraseCookie通过尝试所有可能的路径和最可能的子域获得更多cookie.)
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);
}
Run Code Online (Sandbox Code Playgroud)
可选功能,用于信息或调试:
function listCookies () {
var cookieList = document.cookie.split (/;\s*/);
for (var J = 0, numCookies = cookieList.length; J < numCookies; ++J) {
console.log ("Cookie ", J, ": ", cookieList[J]);
}
}
Run Code Online (Sandbox Code Playgroud)
您的GM脚本也可以使用iFrame技巧删除第三方域上的Cookie,但GM通常不是处理Cookie的最佳方式.
不要被任何其他声明所欺骗,Greasemonkey和javascript根本无法删除cookie,除非满足此答案顶部列出的所有条件.请注意,javascript和Greasemonkey甚至无法查看页面上的所有Cookie.
Greasemonkey不是最好的工具,尽管它可能适用于特定情况.
以下是一些更强大的解决方案:
| 归档时间: |
|
| 查看次数: |
7385 次 |
| 最近记录: |