【问题标题】:How to delete cookies after overriding native cookie functions?覆盖本机 cookie 功能后如何删除 cookie?
【发布时间】:2022-01-23 03:14:59
【问题描述】:

可以使用如下脚本覆盖 document.cookie 设置器和获取器:

if (Object.getOwnPropertyDescriptor && Object.defineProperty) {
  var cookieDescriptor = Object.getOwnPropertyDescriptor(Document.prototype, 'cookie') || Object.getOwnPropertyDescriptor(HTMLDocument.prototype, 'cookie');
  if (cookieDescriptor && cookieDescriptor.configurable) {
    Object.defineProperty(document, 'cookie', {
      get: function() {
        return cookieDescriptor.get.apply(document);
      },
      set: function(value) {
        //do your own stuff before setting the cookie
        cookieDescriptor.set.apply(document, value);
      }
    });
  }
}

使用这个cookie代理,我们需要过滤cookie并允许设置好的cookie。通过谷歌标签管理器注入的一些营销脚本几乎是无法控制的,我们不想删除这些脚本,而是想阻止/阻止它们设置为创建的未知/不需要的 cookie。这个脚本允许我们这样做;但是,通过 HTTP 响应设置的 cookie 不属于欢迎列表,也应该被删除,这就是问题所在。

使用上述脚本后,我们无法再删除过期的cookie。

所以,这种 cookie 删除技术​​不再起作用了:

document.cookie = "cookieTest=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";

是否有任何解决方法可以在覆盖本机函数时使 cookie 删除工作?

【问题讨论】:

  • 也许您可以使用setInterval() 运行一个定期删除不需要的 cookie 的函数。
  • 我认为 HTTP 响应的内置 cookie 处理没有任何挂钩。
  • 而且我认为这些都无法检测到 HttpOnly cookie。
  • 我也没有,但是一旦设置了 Http cookie,就可以通过 document.cookie 访问 cookie,并且可以将其删除,但是,由于我提到的“黑客”事情,我们不能.这些并不是真正可以预防的,但至少在删除有效的情况下是“可删除的”。
  • 您的代码可以检查正在设置的过期时间。如果是过去,那就是 cookie 删除,所以应该允许。

标签: javascript html cookies


【解决方案1】:

您可以使用 ListenLayer 等侦听器服务。他们有一个浏览器存储监听器。您可以告诉它您希望它侦听的 cookie 名称,它会解析 cookie 并将它们推送到 dataLayer 对象中,只要它们被设置/更改,或者页面加载并且它们存在时。
In this image 你可以看到我告诉听众专注于 _ga 和 _hstc

当监听器将 cookie 数据推送到 dataLayer 时,您可以在平台内部编写一个简单的规则来触发 dataLayer 推送并在浏览器中存储一些内容。您基本上可以使用它来覆盖带有单个空格或文本字符串(如 DELETED)的 cookie Here you can see 我有一个浏览器存储规则,只要我有一个名为 nativeCookie 的数据层事件(它来自于侦听器从我的第一张图像中看到 cookie 集时)就会触发。

当满足该条件时,here in image 3 您可以看到我将每个 cookie 设置为具有一个具有较长过期时间的空白空间。现在 cookie 仍然存在,但它们会在很长一段时间内为空。如果数据层事件再次发生变化,listneer 被设置为重新推送,并且它们将被改回“”。

在这种情况下,GA 不断尝试设置他们的 cookie ID,他们必须使用某种指纹识别,或者他们认为这是一个空值。解决方案虽然有效:侦听器只是不断用“”替换 cookie。您可以尝试 null 并查看它的行为,这可能取决于您尝试阻止的服务以及它们如何设置 cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-06
    • 1970-01-01
    • 2011-10-08
    相关资源
    最近更新 更多