油猴 Hook createElement、getElementsByTagName、getElementById

(function() {
    'use strict';
    var xzz = {}
    !(function()  {
    'use strict';
    const $toString = Function.toString;
    const myFunction_toString_symbol = Symbol('('.concat('', ')_', (Math.random() + '').toString(36)));
    const myToString = function toString() {
        return typeof this == 'function' && this[myFunction_toString_symbol] || $toString.call(this);
    };
    function set_native(func,key,value) {
         try {
                Object.defineProperty(func, key, {
                    "enumerable": false,
                    "configurable": true,
                    "writable": true,
                    "value": value
                })
            } catch (e) {
                console_log("保护函数出错 => ", e)
                debugger
            }
    };
    set_native(Function.prototype,"toString",myToString);
    set_native(Function.prototype.toString,myFunction_toString_symbol,"function toString() { [native code] }")
    this.functionprotect = (func,func_name,type) => {
        set_native(func, myFunction_toString_symbol ,`function ${func_name || ''}() { [native code] }`);
    };
}).call(xzz);
    console.clear = function () {};
    xzz.functionprotect(console.clear,'clear');
    document.createElement = function(createElement) {
        return function() {
            var ret = createElement.apply(this, arguments);
            var time = new Date();
            console.log('[*] '+(this.__proto__ + '')+'正在创建标签'+arguments[0])
            debugger
            return ret;
        };
    }(document.createElement);
    xzz.functionprotect(document.createElement,'createElement');
    document.getElementsByTagName = function(getElementsByTagName) {
        return function () {
            var ret = getElementsByTagName.apply(this,arguments);
            var time = new Date();
            console.log('[*] '+(this.__proto__ + '')+'正在获取标签'+arguments[0]+',标签内html:'+ret.innerHTML)
            debugger
            return ret
        }
    }(document.getElementsByTagName);
    xzz.functionprotect(document.getElementsByTagName,'getElementsByTagName');
    document.getElementById = function(getElementById) {
        return function () {
            var ret = getElementById.apply(this,arguments);
            var time = new Date();
            console.log('[*] '+(this.__proto__ + '')+'正在获取标签id'+arguments[0]+',标签内html:'+ret.innerHTML)
            debugger
            return ret
        }
    }(document.getElementById);
    xzz.functionprotect(document.getElementById,'getElementById');
})();

(Greasemonkey)、Hook.js 和 Cookie 这些都是浏览器插件技术或者JavaScript库,常用于扩展网页功能或自动化某些操作。它们可以让你在网页加载后动态添加或修改脚本,实现特定的功能。 1. ** (Greasemonkey)**:这是一个著名的用户代理脚本平台,允许你在Firefox或Chrome中编写自定义脚本来修改网站的行为。通过CSS选择器或DOM操作,你可以注入JavaScript到页面特定元素中。 2. **Hook.js**:这是一个轻量级的JavaScript库,设计用于简化Web页面的事件监听和挂钩,它提供了一个简单的API来注册钩子,当你想要某个函数在特定事件发生时被执行时。 3. **Cookie**:JavaScript原生支持操作Cookie,这是保存小数据在客户端的一种常见方式。你可以创建、读取、更新或删除Cookie,例如在登录状态保持或个性化设置上使用。 结合这三个概念,比如你可能会这样操作: ```javascript // 使用Greasemonkey或Hook.js创建一个脚本 // 注册一个Hook,在特定时刻(如页面加载完成) Hook.runOnce(document, 'DOMContentLoaded', function() { // 获取或设置Cookie var myCookie = getCookie('myKey'); // 如果cookie存在 setCookie('myKey', 'newValue'); // 可能还会检查Cookie来决定是否执行某个特定的操作 }); function getCookie(name) { // 简单的Cookie获取函数,实际需要处理跨域等问题 } function setCookie(name, value, options) { // 简单的Cookie设置函数,实际可能包含过期时间等选项 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值