js屏蔽广告
最近遇到有些广告的问题,首先是在手机端,可能是用户访问了一些小网站的,(你懂得),然后在访问我的网站时,会带小广告过来,通常是wifi被dns劫持的情况下导入到广告脚本,
1、处理这些要知道广告的根源,广告脚本种子基本上是动态创建script来加载的,比如百度的pos广告
处理这些需要禁止动态加载脚本,防止广告加载,
(function () {
var createElement = document.createElement;
document.createElement = function (tag) {
switch (tag) {
case 'script':
console.log('禁用动态添加脚本,防止广告加载');
break;
default:
return createElement.apply(this, arguments);
}
}
})();
这是一种方法,如果你的脚本也是动态加载的话就需要自己配置自己脚本的“白名单”--过滤规则
2、另一种是通用的js广告,常见的是div嵌套iframe,就需要js清楚,话不多说
//注入页面的脚本文件
;
$(function() { var clearAd = {
//由于manifest文件匹配规则只有通配没有非功能,所以可在此处添加不想删除广告的页面
checkUrl: function() {
var Checkflag = 0,
url = window.location.href; //手动添加不需要清除广告的域
var notDel = [
"www.baidu.com",
"taobao.com",
"tmall.com",
"jd.com"
]; //正则匹配
for (var i = 0; i < notDel.length; i++) {
var reg = new RegExp(notDel[i], "g"); if (reg.test(url)) {
console.log('This page does not clear ads.');
break;
} else {
if (i == notDel.length - 1) {
Checkflag = 1;
}
}
} if (Checkflag == 1) {
this.clear();
this.findSomeAdPossible();
}
},
clear: function() {
console.log('Clear Start');
//此处可手动添加广告框id名,去除顽疾ad必备
var ad_id_name = [
"cproIframe2001holder",
"cproIframe2002holder",
"cproIframe2003holder",
"cproIframe2004holder",
"cproIframe2005holder",
"cproIframe2006holder",
"cproIframe2007holder",
"cproIframe2008holder",
"cproIframe2009holder",
"id_300x250_banner_top",
"ads",
"google_image_div",
"mx_cs_71603_1261456",
"AC_TR86_71603",
"cproIframe_u2060917_1",
"content_right",
"left-promotion",
"top_ads",
"layerd"
]; //此处添加广告框类名
var ad_css_name = [
"cproIframe_u410704_3",
"img_ad",
"hover_btn"
]; for (var i = 0; i < ad_id_name.length; i++) {
//使用remove删除节点,提升性能
$('#' + ad_id_name[i]).remove();
} for (var i = 0; i < ad_css_name.length; i++) {
$('.' + ad_css_name[i]).remove();
}
},
//简单的智能算法
findSomeAdPossible: function() {
var sap = $('div iframe'),
ad_img = $('div script').parent().find('img,embed'),
float_img = $('div object').parent().find('img,embed'); this.arrayDel(sap, 360, 200);
this.arrayDel(ad_img, 350, 150);
this.arrayDel(float_img, 350, 150);
},
arrayDel: function(arr, conWidth, conHeight) {
var len = arr.length; for (var i = 0; i < len; i++) {
var self = arr.eq(i); if (self.width() <= conWidth || self.height() <= conHeight) {
self.remove();
} }
},
init: function() {
this.checkUrl();
}
} $(document).ready(function() {
clearAd.init(); //为防止ajax异步延时加载的广告隔4s再清除一次
setTimeout(function() {
clearAd.init();
}, 4000)
});
})
引入这个文件可以过滤大部分的广告,其他的还需要继续完善广告。
如果有其他更好的方法,请联系我,蟹蟹。
js屏蔽广告的更多相关文章
- 笨办法用js屏蔽被http劫持的浮动广告
最近发现网站经常在右下角弹出一个浮动广告,开始的时候以为只是浏览器的广告. 后来越来越多同事反映在家里不同浏览器也会出现广告.然后深入检查了下,发现网站竟然被劫持了. 然后百度了一大堆资料,什么htt ...
- hosts 屏蔽广告 定位
hosts 屏蔽广告 定位 JS Miner 挖矿 百度全家桶的全天候定位记录 各类统计服务(仅屏蔽 JS.不屏蔽控制台) 常见下载劫持 360 和百度的部分软件下载 CNNIC 根证书劫持 http ...
- js屏蔽浏览器右键菜单,粘贴,复制,剪切,选中(转)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- js屏蔽浏览器(IE和FireFox)的刷新和右键等功能
//一.js屏蔽浏览器(IE和FireFox)的刷新功能 document.onkeydown=function() { if ((window.event.keyCode==116)|| //屏蔽 ...
- js 屏蔽浏览器事件汇总
//js 屏蔽 window.document.oncontextmenu = function () { event.returnValue = false; }//屏蔽鼠标右键 window.do ...
- Js浮动广告效果实现
第一种 漂浮广告 不符合W3CJavaScript漂浮广告代码,很不错,代码精简,不过一次只有漂一个,复制就能用了.希望站长朋友喜欢. <html> <head> <ti ...
- 5.js屏蔽方向键,兼容IE和firefox
document.onkeydown=function(e){ e=e||event; //屏蔽向左的方向键 if(e.keyCode==37){ alert('禁止向左的方向键!'); return ...
- 4.js屏蔽浏览器鼠标右键菜单
document.oncontextmenu = function(){return false;} 参考链接:js 屏蔽浏览器事件汇总
- 技术改变生活| 免费看VIP视频,屏蔽广告,解锁新姿势!
说到这个,我就忍不住的要介绍一下今天的主角 Tampermonkey 了.Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于Chrome, Microsoft Edg ...
随机推荐
- .8-Vue源码之AST(4)
上一节讲完了超长的start函数,也同时完结了handleStartTag函数,接着continue进入下一轮while循环. 此时剩余的字符串状态如图:,切掉了<div id='app'> ...
- 如何用Android Studio同时使用SVN和Git管理项目
这篇来讲讲如何在 Android Studio 上同时用 SVN 和 Git 来管理项目.我知道,你肯定会说我吃饱了撑着,没事找事做,为啥要同时用 SVN 和 Git 来管理项目.问题是,我也不想啊, ...
- D - Zhenya moves from the dormitory URAL - 2015
After moving from his parents’ place Zhenya has been living in the University dormitory for a month. ...
- zabbix 3.2 高可用实现方式二-pacemaker+corosync实现zabbix高可用集群
一.pacemaker 是什么 1.pacemaker 简单说明 2.pacemaker 由来 二.pacemaker 特点 三.pacemaker 内部结构 1.群集组件说明: 2.功能概述 四.c ...
- PHPMailer 发送邮件(二)
发现PHPMailer又做了较大的更新,以前发送邮件的方法已不太适用,刚好要做一个实验,需要搭建个环境,这里使用Gmail进行测试,现记录下来. 传送地址Github: PHPMailer 基本要求的 ...
- [译]ASP.NET Core 2.0 区域
问题 如何将一个规模庞大的ASP.NET Core 2.0应用程序进行逻辑分组? 答案 新建一个ASP.NET Core 2.0空项目,修改Startup类,增加Mvc服务和中间件: public v ...
- day2--SecureCRT的配置
生产中,我们是看不到虚拟机的工作界面,虚拟机的界面相当于机房显示屏的样子,实际上我们是在操作工具里面进行管理,这里使用SecureCRT远程连接虚拟机,SecureCRT的设置如下: 1.打开Secu ...
- c# word文档与二进制数据的相互转换
最近项目出使用到了将word文档以二进制的方法存到数据库中,并再次读取出二进制数据转换为word文档.最后总结了一下,不多说看示例方法: 代码 , content.Length); ...
- ServerSocket(TCP/IP协议)__Java
服务器端 //参数为端口号,可以自定义 ServerSocket ss=new ServerSocket(11111); System.out.println("开启监听..." ...
- OpenTSDB介绍
OpenTSDB 2.0, the scalable, distributed time series database可扩展.分布式时间序列数据库 1.背景 一些老的监控系统,它常常会出现这样的问题 ...