最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

重寫JS setTimeout 方法 JavaScript Hook 劫持setTimeout

 更新時間:2023年07月03日 21:58:22   作者:psonh  
想要重寫  setTimeout  方法,發(fā)現(xiàn)有動態(tài)引入的js,需要改成自己的js,以下教教大家這個需求,防止網(wǎng)站被劫持

一、重新定義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);

效果圖

直接請求百度了。

方法劫持我就不演示了。

當然我們也可以直接加載一個php頁面返回當期的網(wǎng)址,就知道哪個網(wǎng)站出現(xiàn)了劫持情況,及時排查解決。

相關文章

最新評論

嘉义市| 赤城县| 福海县| 襄汾县| 深水埗区| 东山县| 收藏| 佛教| 都昌县| 海晏县| 玉溪市| 克什克腾旗| 大渡口区| 察雅县| 江口县| 洪雅县| 连平县| 滦平县| 集安市| 拉萨市| 深水埗区| 错那县| 外汇| 龙里县| 双流县| 封开县| 长垣县| 惠东县| 北安市| 社旗县| 怀柔区| 兴和县| 山阴县| 鹤山市| 红桥区| 班戈县| 万载县| 胶州市| 荆门市| 长武县| 奎屯市|