屏蔽网络运营商植入广告jQuery代码

目前我网站没有挂任何广告,然而在移动端浏览时却发现时不时的在页脚出现一个悬浮广告,一开始就知道是网络运营商劫持植入的广告,但没理会。

昨晚闲来无事搜索了一下,发现有同样问题的用户还不少。

一般情况下,广告都是通过<iframe>或<script>嵌入的,下面这段代码可以移除这类广告:

$(document).ready(function(){
bzg_filter_ad('iframe', 'src');
bzg_filter_ad('script', 'src');
});
function bzg_filter_ad(elem, attribute) {
var domain = window.location.hostname;
//域名白名单
var white_list = new Array(domain, 'zz.bdstatic.com', 'push.zhanzhang.baidu.com', 'hm.baidu.com', 'bdimg.share.baidu.com');
$(elem).each(function(){
var a = document.createElement('a');
a.href = $(this).attr(attribute);
if( $.inArray(a.hostname, white_list) == -1 ) {
$(this).remove();
}
});
}

注意白名单功能,可以使白名单中的<iframe>和<script>不会被移除,只需添加外网的域名,本站域名已经通过window.location.hostname获取了,这里我添加了百度统计、百度分享、百度自动推送的域名。

然而我遇到的情况是,移除<iframe>和<script>后仍然会显示一张图片广告,因为它在div元素上加了背景图

因此,更简单高效的代码产生了:

$(document).ready(function(){
$('#colophon').nextAll().remove();
});

需要确定你网页</body>前的最后一个元素是什么,例如本站每个页面的最后一个元素都是footer#colophon,如果你实在不确定,可以在页脚模板的</body>前加一个空元素:

<div id="killAd"></div>

同时将jQuery代码中的#colophon修改为#killAd

$(document).ready(function(){
$('#killAd').nextAll().remove();
});

考虑到网络运营商的广告都是在页面加载完成以后才植入的,所以,直接把上面的代码放进去是不行的,要加个定时执行:

setTimeout(function(){
$('#killAd').nextAll().remove();
}, 3000);

这样,程序会在3秒后执行广告删除,但是用户仍然会看到几秒的广告,而且我们也不确定广告是多久后植入,所以我现在使用的代码是:

setInterval(function(){
$('#killAd').nextAll().remove();
}, 500);

每500毫秒执行一次,到目前为止我再也没有看到网络运营商的广告出现了。

可能你会担心setInterval重复执行会不会太耗资源,于是我特别在我网站测试了一下,执行广告删除大概需要2.3毫秒的时间,注意是毫秒(1秒等于1000毫秒),而执行删除广告任务的程序是500毫秒执行一次,所以不会有任何问题。

最后,网站使用HTTPS安全协议才是王道,现在有不少服务商提供免费SSL证书了,只是我用的虚拟主机不支持SSL,所以只有用jQuery解决。

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress输出Trackback链接标签:trackback_url

2021-4-18 11:29:53

WordPress教程

用wp_enqueue_style和wp_enqueue_script加载CSS和JS

2021-4-18 23:29:42

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索