Определение происхождения куки, который javascript или пиксель отслеживания

Мне нужно иметь возможность определить и идентифицировать источник файлов cookie. В то время как многие cookie-файлы поступают в браузер в ответе HTTP исходной страницы, другие добавляются в браузер с помощью javascript или с помощью ресурсов, загружаемых на страницу с использованием http (таких как пиксели отслеживания или вызовы AJAX).

Как правильно определить / идентифицировать источник каждого файла cookie?

3 ответа

Публикуя это, как я боролся с этим вопросом, и, наконец, нашел решение.

Это работает в консоли Firefox, насколько я могу судить...

  1. Установите точку останова в самой первой строке JavaScript, которая, как вам известно, запускается на вашей странице после обновления (до того, как будет установлен какой-либо файл cookie).
  2. Затем очистите кеш и куки.
  3. Вставьте приведенный ниже фрагмент кода в консоль в Firefox.
  4. Удалить точку останова и возобновить выполнение скрипта.

Вы должны увидеть трассировку стека для каждого файла 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
});

Я должен отдать должное fflorent за этот код, который он разместил в другой теме - спасибо!

Код для вставки в консоль Chrome на основе этого:прерывание выполнения JavaScript всегда при установке файла cookie .

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

Откройте консоль разработки в браузере и сохраните ссылку на собственный метод получения / установки документа document.cookie. После этого переопределите метод получения / установки set.cookie своей собственной функцией, где вы можете включить console.log("создание cookie:" + значение), а затем вызвать собственный метод получения / установки в этой функции. Смотрите следующую ссылку для примера кода: Cookie Monster

Другие вопросы по тегам