猿人学第五题-乱码增强(油猴hook禁用频繁日志、扣代码易错点)

1.油猴hook禁用频繁日志

学习文章:https://stapp.space/disable-javascript-console-on-production/
在这里插入图片描述

// ==UserScript==
// @name         猿人学第5题【关闭频繁日志打印】
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  猿人学第5题
// @author       You
// @match        http://match.yuanrenxue.com/match/5
// @grant        none
// @run-at       document-start
// ==/UserScript==



(function () {
   
   
    'use strict';
    var method;
    var noop = function() {
   
    };
    var methods = [
        'log', 'assert', 'clear', 
猿人第14中,如果遇到无法 Hook 到 `cookie` 的问,通常是因为目标网站对 `document.cookie` 的访问或修改进行了检测或限制,甚至可能使用了其他机制(如 `fetch` 或 `XMLHttpRequest`)来动态生成或验证 `cookie` 值。此外,部分网站可能会使用沙箱环境或代理访问来阻止常见的 Hook 技术。 ### 解决方法 #### 1. 使用 `Function.prototype.toString` 的 Hook 来干扰检测 有些网站会通过检测 `Function.prototype.toString` 来识别是否被 Hook,可以通过重写该方法来规避检测[^1]: ```javascript (function() { 'use strict'; var origToString = Function.prototype.toString; Function.prototype.toString = function() { return 'function cookie() { [native code] }'; }; })(); ``` #### 2. Hook `XMLHttpRequest` 和 `fetch` 来捕获网络请求中的 `cookie` 如果无法直接 Hook `document.cookie`,可以尝试 Hook 网络请求 API 来捕获 `cookie` 的生成或使用过程: ```javascript (function() { 'use strict'; var origOpen = XMLHttpRequest.prototype.open; XMLHttpRequest.prototype.open = function(method, url) { console.log('Hooked XMLHttpRequest:', method, url); this.addEventListener('load', function() { var cookie = document.cookie; console.log('Current cookie:', cookie); }); return origOpen.apply(this, arguments); }; })(); ``` #### 3. 使用 `Proxy` 替代 `Object.defineProperty` 进行更隐蔽的 Hook 部分网站可能会检测 `Object.defineProperty` 的使用,可以尝试使用 `Proxy` 来实现更隐蔽的 Hook: ```javascript (function() { 'use strict'; var cookieJar = ''; var cookieProxy = new Proxy(document, { get: function(target, prop) { if (prop === 'cookie') { return cookieJar; } return Reflect.get(target, prop); }, set: function(target, prop, value) { if (prop === 'cookie') { if (value.indexOf('m') !== -1) { debugger; } console.log('Hook捕获到cookie设置->', value); cookieJar = value; return true; } return Reflect.set(target, prop, value); } }); // 替换 document 对象 Object.defineProperty(window, 'document', { value: cookieProxy, configurable: false, writable: false }); })(); ``` #### 4. 使用浏览器扩展或调试工具进行更底层 Hook 如果上述方法仍无法生效,可以考虑使用浏览器扩展(如 Tampermonkey)或调试工具(如 Chrome DevTools 的 `override` 功能)注入 Hook 脚本,绕过网站的检测机制。 #### 5. 分析 Cookie 生成逻辑并手动模拟 如果 Hook 仍然无效,建议深入分析 `cookie` 的生成逻辑,查看是否涉及 `localStorage`、`sessionStorage` 或其他加密函数。可以尝试通过静态分析找到生成 `cookie` 的关键函数,并手动模拟其逻辑。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷心兔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值