原理
通过油猴插件重写操作Cookie的get和set操作
通过指定Cookie名动态进入derbugger模式
代码
// ==UserScript== // @name Hook Cookie // @namespace http://tampermonkey.net/ // @version 0.1 // @description try to take over the world! // @author You // @include * // @grant none // @run-at document-start // ==/UserScript== (function () { 'use strict'; var cookie_cache = document.cookie; Object.defineProperty(document, ' cookie', { get: function () { return cookie_cache; }, set: function (val) { console.log('Setting cookie', val); // 填写cookie名 if (val.indexOf('cookie名') != -1) { debugger; } var cookie = val.split(";")[0]; var ncookie = cookie.split("="); var flag = false; var cache = cookie_cache.split("; "); cache = cache.map(function (a) { if (a.split("=")[0] === ncookie[0]) { flag = true; return cookie; } return a; }) cookie_cache = cache.join("; "); if (!flag) { cookie_cache += cookie + "; "; } return cookie_cache; } }); })();
以百度搜索为例,定位cookie中H_PS_645EC的生成方式,将H_PS_645EC填写金cookie名的位置
保存脚本并打开开关,清空cookie后重新刷新页面,成功断下,且值已经生成了
往上跟踪堆栈就可以定位到生成代码,然后就可以提取关键代码去调试了