不断更新cookie会导致浏览器崩溃

Constantly updating cookie causes browser crash

本文关键字:浏览器 崩溃 更新 cookie      更新时间:2023-09-26

问题背景:

我通常会把浏览器停在我的梦幻棒球现场得分页面上过夜。第二天,浏览器总是很慢,经常崩溃。

经过一些调查,我确信这是由网站每1秒更新一次cookie引起的。如果我在网站的域上打开了5个选项卡(我经常这样做(,它会每秒更新cookie 5次。

调试:

我使用火狐4.0与firebug和firecookie。

会话cookie名为">fsr.a",包含一个*nix时间戳。我相信它被称为"预见触发器",是某种广告软件。

你可以在这里看到它的作用(无需登录(:http://www.cbssports.com/

cookie似乎是由以下文件设置的:http://sports.cbsimg.net/js/phase2-min-v0047.js

修复:

我试过广告屏蔽它,但那破坏了网站。我试着写一个Greasemonkey脚本来对抗它,但我对JS还不够好。我显然无法阻止域上的所有cookie。

只是在寻找想法,或者用Greasemonkey脚本找到一个正确的方向。

编辑:

我想知道我是否可以用Greasemonkey更改计时器变量,以减少cookie的更新频率?

作为参考,我相信这是负责">fsr.a"cookie的代码:

var FSR = {
    version: "5.3.0",
    date: "11/11/2009",
    enabled: true,
    files: "http://images.cbssports.com/script/foresee/",
    id: "7alXWMyc064b1ROgR/DloA==",
    sites: [{
        path: /'w+-?'w+'.(com|org|edu|gov|net)/
    }, {
        path: ".",
        domain: "default"
    }]
};
function fsr$setAlive() {
    var a = new Date().getTime();
    document.cookie = "fsr.a=" + a + ";path=/" + ((FSR.site.domain) ? ";domain=" + FSR.site.domain + ";" : ";")
}(function () {
    if (window != window.top) {
        return
    }
    function g(k) {
        if (typeof k == "object") {
            var l = k.constructor.toString().match(/array/i);
            return (l != null)
        }
        return false
    }
    var e = FSR.sites;
    for (var h = 0, a = e.length; h < a; h++) {
        var c;
        if (!g(e[h].path)) {
            e[h].path = [e[h].path]
        }
        for (var j = 0, b = e[h].path.length; j < b; j++) {
            if (c = document.location.href.match(e[h].path[j])) {
                FSR.siteid = h;
                FSR.site = FSR.sites[FSR.siteid];
                if (!FSR.site.domain) {
                    FSR.site.domain = c[0]
                } else {
                    if (FSR.site.domain == "default") {
                        FSR.site.domain = false
                    }
                }
                if (!FSR.site.name) {
                    FSR.site.name = c[0]
                }
                var d = ["files", "js_files", "image_files", "html_files"];
                for (var h = 0, f = d.length; h < f; h++) {
                    if (FSR.site[d[h]]) {
                        FSR[d[h]] = FSR.site[d[h]]
                    }
                }
                break
            }
        }
        if (c) {
            break
        }
    }
    if (!window["fsr$timer"]) {
        fsr$setAlive();
        window["fsr$timer"] = setInterval(fsr$setAlive, 1000)
    }
})();

交替粘贴:http://pastebin.com/YrHFCZn1

似乎需要注册并登录该网站才能设置cookie。我不会那样做,所以我不能测试修复。

但是,看看JS,下面的一个或多个应该可以从Greasemonkey中工作:

  1. clearInterval (unsafeWindow["fsr$timer"]);   unsafeWindow["fsr$timer"] = null;

  2. unsafeWindow["fsr$setAlive"] = function () {}


最坏的情况发生:

  1. 将JS文件复制到你的电脑上
  2. 编辑它,杀死计时器
  3. 使用adblock只屏蔽原始JS文件
  4. 使用Greasemonkey应用修改后的JS