我需要能够确定和识别 cookie 的来源。虽然许多 cookie 会在原始页面的 HTTP 响应中到达浏览器,但其他 cookie 是通过 javascript 或通过使用 http 加载到页面上的资产(例如跟踪像素或 AJAX 调用)添加到浏览器的。
确定/识别每个 cookie 来源的好方法是什么?
我需要能够确定和识别 cookie 的来源。虽然许多 cookie 会在原始页面的 HTTP 响应中到达浏览器,但其他 cookie 是通过 javascript 或通过使用 http 加载到页面上的资产(例如跟踪像素或 AJAX 调用)添加到浏览器的。
确定/识别每个 cookie 来源的好方法是什么?
发布这个,因为我也在努力解决这个问题,终于找到了解决方案。
据我所知,这仅在 Firefox 控制台中有效......
您应该会在控制台中看到正在创建的每个 cookie 的堆栈跟踪!
origDescriptor = Object.getOwnPropertyDescriptor(HTMLDocument.prototype, 'cookie'); // add cookie property to HTMLDocument constructor
Object.defineProperty(document, 'cookie', {
get() {
return origDescriptor.get.call(this);
},
set(value) {
console.log("%c Cookie is :" + value, "background: #ffffff; color: #000000");
console.trace();
// debugger;
return origDescriptor.set.call(this, value);
},
enumerable: true,
configurable: true
});
我必须感谢他在另一个主题中发布的这段代码 - 谢谢!
在浏览器中打开开发控制台并保存对本机 document.cookie getter/setter 的引用。在此之后,使用您自己的函数覆盖 document.cookie getter/setter,您可以在其中包含一个 console.log('creating cookie: ' + value),然后在该函数中调用本机 getter/setter。有关代码示例,请参见以下链接:Cookie Monster
粘贴在 Chrome 控制台上的代码,基于: Breaking JavaScript execution always when cookie is set
function debugAccess(obj, prop, debugGet){
var origValue = obj[prop];
Object.defineProperty(obj, prop, {
get: function () {
if ( debugGet )
debugger;
return origValue;
},
set: function(val) {
debugger;
return origValue = val;
}
});
};
debugAccess(document, 'cookie');