用js屏蔽被http劫持的浮动广告实现方法
最近发现网站经常在右下角弹出一个浮动广告,开始的时候以为只是浏览器的广告。 后来越来越多同事反映在家里不同浏览器也会出现广告。然后深入检查了下,发现网站竟然被劫持了。 然后百度了一大堆资料,什么http劫持、dns劫持、运营商劫持之类的,确定真的是中招了。看图: 真是偷梁换柱啊,被插入广告代码了。真是无良奸商,什么都做得出。 然并卵,最重要的解决办法是啥?然后把问题扔给了运维的同事。 最终结果是解决不了。没错,就是这么的坑爹。除非采用https。网上那些什么打电话、发信投诉之类的貌似没啥用。可能是运维太烂了。反正结果就是没结果。 然后,没办法啦。只能我们大前端自己想办法屏蔽啦。然后开启了研究劫持代码之旅, ......过程省略了800字寻找过程。 最终发现了,被劫持的广告会定义一个js全局变量_pushshowjs_ ,里面保存了一些劫持广告的相关信息,然后创建一个id为_embed_v3_dc的div放广告。并且每次都是一样的,不会有变化。 根据劫持广告的投放原理,最终使用了js屏蔽被劫持广告的方法。 具体代码如下: ;(function($,window,undefined){ var needClear=false, timeout; if(window._pushshowjs_){ console.log("adHttp"); needClear=true; }