最新国产好看的视频,伊人天堂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
        //判斷內(nèi)容有包含這個鏈接,可以直接方法
        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');
            }
        }
        //判斷內(nèi)容有包含這個方法
        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)了劫持情況,及時排查解決。

相關(guān)文章

最新評論

犍为县| 高密市| 翼城县| 黄大仙区| 新邵县| 青龙| 吉木萨尔县| 西林县| 长宁区| 抚州市| 三台县| 安多县| 临夏县| 藁城市| 宣武区| 滦平县| 隆化县| 康平县| 新巴尔虎右旗| 新源县| 侯马市| 杭锦后旗| 海伦市| 阿拉善盟| 伊吾县| 都江堰市| 水城县| 辽宁省| 通江县| 汉川市| 响水县| 繁峙县| 景洪市| 阿拉善右旗| 太保市| 嘉兴市| 彩票| 泸州市| 崇阳县| 高邮市| 安阳县|