您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
hook function in crawling
// ==UserScript== // @name Hook // @namespace https://github.com/JaycgbEDC/Script/Js // @version 0.3 // @license Unlicense // @description hook function in crawling // @author Kribe // @homepage https://github.com/JaycgbEDC/Script/blob/main/Js/Hook/Hook.user.js // @supportURL https://github.com/JaycgbEDC/Script/issues // @match *://*/* // @icon https://s1.imagehub.cc/images/2023/08/12/default.th.jpeg // @grant unsafeWindow // @grant GM_registerMenuCommand // @grant GM_log // @grant GM_setValue // @grant GM_getValue // @run-at document-start // ==/UserScript== (function () { 'use strict'; const hookFunctionDebugger = () => { Function.prototype.constructor_ = Function.prototype.constructor; Function.prototype.constructor = function (a) { if(a == "debugger") { return function (){}; } return Function.prototype.constructor_(a); }; }; const hookCookie = () => { var cookie_cache = document.cookie; Object.defineProperty(document, 'cookie', { get: function () { return cookie_cache; }, set: function (val) { GM_log('Setting cookie', val); // 填写cookie名 if (val.indexOf('m=') != -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; } }); }; const hookSetInterval = () => { let setInterval_ = unsafeWindow.setInterval; unsafeWindow.setInterval = function() { GM_log("setInterval"); return function () {}; }; unsafeWindow.setInterval.toString = function() { GM_log("有函数正在检测setInterval是否被hook"); return setInterval_.toString(); } }; const hookRandom = () => { /* hook掉随机值,比如Date、Math,方便调试 */ Date.now = function now() { console.log("hook Date.now"); return 1692702146230; }; Date.parse = function parse() { console.log("hook Date.parse"); return 1692702146230; }; Date.prototype.valueOf = function () { console.log("hook Date.prototype.valueOf"); return 1692702146230; }; Date.prototype.getTime = function () { console.log("hook Date.prototype.getTime"); return 1692702146230; }; Date.prototype.toString = function () { console.log("hook Date.prototype.toString"); return 1692702146230; }; Math.random = function random() { console.log("hook Math.random"); return 0.08636862211354912; }; }; (() => { /* 注册用户脚本菜单 */ const menu1 = GM_registerMenuCommand(`${GM_getValue("hookFunctionDebugger") === true ? '✅' : '⬜'} Hook FunctionDebugger`, (event) => { if (GM_getValue("hookFunctionDebugger") === true) { GM_setValue("hookFunctionDebugger", false); } else { GM_setValue("hookFunctionDebugger", true); } window.location.reload(true); }); const menu2 = GM_registerMenuCommand(`${GM_getValue("hookCookie") === true ? '✅' : '⬜'} Hook Cookie`, (event) => { if (GM_getValue("hookCookie") === true) { GM_setValue("hookCookie", false); } else { GM_setValue("hookCookie", true); } window.location.reload(true); }); const menu3 = GM_registerMenuCommand(`${GM_getValue("hookSetInterval") === true ? '✅' : '⬜'} Hook setInterval`, (event) => { if (GM_getValue("hookSetInterval") === true) { GM_setValue("hookSetInterval", false); } else { GM_setValue("hookSetInterval", true); } window.location.reload(true); }); const menu4 = GM_registerMenuCommand(`${GM_getValue("hookRandom") === true ? '✅' : '⬜'} Hook hookRandom`, (event) => { if (GM_getValue("hookRandom") === true) { GM_setValue("hookRandom", false); } else { GM_setValue("hookRandom", true); } window.location.reload(true); }); })(); if (GM_getValue("hookFunctionDebugger") === true) { hookFunctionDebugger(); } if (GM_getValue("hookCookie") === true) { hookCookie(); } if (GM_getValue("hookSetInterval") === true) { hookSetInterval(); } if (GM_getValue("hookRandom") === true) { hookRandom(); } })();