JS setTimeout 方法,JavaScript Hook 劫持setTimeout

Jun 3, 2022 4:39:19 PM 7787

有我们网站的会员用户,想要重写  setTimeout  方法。发现有动态引入的js。需要改成自己的js,这个需求应该都懂。

一、重新定义setTimeout方法

直接上代码和注释:

//定义 _setTimeout 接收 setTimeout
var _setTimeout = window.setTimeout;
// 重写setTimeout 
window.setTimeout = function(ref, tm){

        code = '' + ref;//把方法tostring
        //判断内容有包含这个链接,可以直接方法
        if(code.indexOf('www.jsjiami.com/main.js') !== -1){
            ref = function () {
                 //我把它改成想改成其他的js
                var script = document.createElement("script");
                script.setAttribute("src","https://www.baidu.com/main.js");
                var s = document.getElementsByTagName("script")[0];
                s.parentNode.insertBefore(script, s);
                console.log('被劫持了哦1');
               
            }
        }
        //判断内容有包含这个方法
        if(code.indexOf('method') !== -1){
            ref = function () {
               console.log('被劫持了哦2');
               return ;
            }
        }

    	var argu = Array.prototype.slice.call(arguments,2);
        var f = function(){
        	ref.apply(null, argu);
        };
        return _setTimeout(f, tm);
}

应该看得明白吧,配合注释看。

比如的代码。

setTimeout(function () {
    //比如我要劫持这个引入js
    var script = document.createElement("script");
    script.setAttribute("src","https://www.jsjiami.com/main.js");
    var s = document.getElementsByTagName("script")[0];
    s.parentNode.insertBefore(script, s);
    
},100);


直接请求百度了。

方法劫持我们就不演示了。


版权所属:JavaScript加密

原文地址:https://www.jsjiami.com/article/settimeout-hook.html

转载时必须以链接形式注明原始出处及本声明。


本文标签:
最新文章
Can "Upgrade" only to "WebSocket".是为什么? 5557
JS setTimeout 方法,JavaScript Hook 劫持setTimeout 7787
文件(文本)不乱码,保存后发给对方,对方打开乱码,怎么处理文件乱码? 11867
MacBook安装Nginx最有效方法 3329
模仿支付宝输入支付密码的UI,带JavaScript 密码输入校验功能 25259
Chrome浏览器模拟微信客户端访问网址,方法图文讲解模拟微信 47351
JavaScript在线加密,最牛加密按次加密计费方式讲解。 53231
丁香公开课请求 sign(签名) 分析过程讲解 15486
JavaScript优雅的跳转,作弊跳转方式,JS防检测跳转。 26147
JS代码书写注意事项,JavaScript代码压缩后为什么报错? 15088

      商务合作:1#vfan.cn(把#换成@),或者联系QQ:84034666

      业务咨询:i#itboy.net(把#换成@),或者联系QQ:8446666

再次输入密码