java 屏蔽广告js_用js屏蔽被http劫持的浮动广告实现方法、检测劫持

本文介绍了一位前端开发者如何通过JavaScript锁定全局变量,阻止被劫持的浮动广告显示。作者分享了自定义代码来检测并清除广告,虽然不是万能解,但对于临时屏蔽提供了思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下面小编就为大家带来一篇用js屏蔽被http劫持的浮动广告实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

最近发现网站经常在右下角弹出一个浮动广告,开始的时候以为只是浏览器的广告。

后来越来越多同事反映在家里不同浏览器也会出现广告。然后深入检查了下,发现网站竟然被劫持了。

然后百度了一大堆资料,什么http劫持、dns劫持、运营商劫持之类的,确定真的是中招了。

真是偷梁换柱啊,被插入广告代码了。真是无良奸商,什么都做得出。

IIS7网站监控可以及时防控网站风险,快速准确监控网站是否遭到各种劫持攻击,网站在全国是否能正常打开(查看域名是否被墙),精准的DNS污染检测,具备网站打开速度检测功能,第一时间知道网站是否被黑、被入侵、被改标题、被挂黑链。精益求精的产品,缺陷为零数据提供!

它可以做到以下功能:

1、检测网站是否被黑

2、检测网站是否被劫持

3、检测域名是否被墙

4、检测DNS是否被污染

5、网站真实的完全打开时间(独家)

6、拥有独立监控后台,24小时定时监控域名

官方地址:http://wzjk.iis7.net/?dx

官方图:

789a907ff325006bae0eb7da38e0b384.png

f5ef792548733cdfd5b39909c42744dc.png

然并卵,最重要的解决办法是啥?然后把问题扔给了运维的同事。

最终结果是解决不了。没错,就是这么的坑爹。除非采用https。网上那些什么打电话、发信投诉之类的貌似没啥用。可能是运维太烂了。反正结果就是没结果。

然后,没办法啦。只能我们大前端自己想办法屏蔽啦。然后开启了研究劫持代码之旅,

......过程省略了800字寻找过程。

最终发现了,被劫持的广告会定义一个js全局变量_pushshowjs_ ,里面保存了一些劫持广告的相关信息,然后创建一个id为_embed_v3_dc的div放广告。并且每次都是一样的,不会有变化。

根据劫持广告的投放原理,最终使用了js屏蔽被劫持广告的方法。

具体代码如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

;(function($,window,undefined){

var needClear=false,

timeout;

if(window._pushshowjs_){

console.log("adHttp");

needClear=true;

}

window._pushshowjs_={};

Object.freeze(window._pushshowjs_);//让对象只读, 防止属性被直接修改

Object.defineProperty(window, '_pushshowjs_', {

configurable: false,//防止属性被重新定义

writable: false//防止属性被重新赋值

});

if(needClear){

timeout=setInterval(function(){

if($("#_embed_v3_dc").length>0){

$("#_embed_v3_dc").remove();

console.log("http清除");

needClear=false;

clearInterval(timeout);

}

},500);

$(window).load(function(){

if(needClear){

setTimeout(function(){

clearInterval(timeout);

console.log("清除");

},2000);

}

});

}

}(jQuery,window));

代码不多,就不详细解析了(如果觉得代码有问题,望指正)。简单点说就是把劫持广告必须的全局js变量_pushshowjs_设定为不可被修改,只读。如果发现广告就清除。

放了代码,终于跟被劫持的广告说88了。

为什么说是笨办法?

因为这只是自欺欺人。其实劫持还是存在,并且被劫持了的js的加载顺序有可能会发生变化而导致错误,理想的办法还是要靠运维跟运营商去解决或使用https。

每个劫持的广告逻辑应该都差不多,但广告代码都会不同。所以我这个不一定会适用于其他的劫持广告。这只是一个思路,没办法之中的办法。

有大神有更好的解决办法,望指教。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值