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 ...
随机推荐
- python 文件相关知识
字符编码相关 什么是字符编码 字符编码的类型 字符编码的使用 python2和python里字符编码的区别 文件的相关 文件的基础操作 打开文件的模式 字符编码 什么是字符编码在计算机里只识别二进制, ...
- IE页面刷新ocx插件被释放,野指针非阻塞Sleep问题。
做一个视频页面,自动化测试的时候崩溃.排查了半天,才发现虚表为NLL,然后调用的已经释放对象里面的函数. 问题出在哪呢?出在了左边的非阻塞Sleep的地方.对象已经释放掉了,但是好在阻塞循环,调用st ...
- 微信公众号开发(三)获取access_token
微信公众号开发(三)获取access_token 1.说明 access_token是公众号的全局唯一接口调用凭据,公众号调用各接口时都需使用access_token.开发者需要进行妥善保存.acce ...
- IIS 服务无法在此时接受控制信息
应用程序池无法重新启动,报错:服务无法在此时接受控制信息 解决方法:重启 Credential Manager服务即可
- win10 安装Node.js 报错:2503
解决方法: 使用管理员打开CMD
- Ionic3 遇到的一些错误-submodule update -q --init --recursive
解决方法: ionic start myTabs tabs --skip-deps cd .\myTabs cnpm install --save-dev ionic serve > npm i ...
- 使用chart和echarts制作图表
前 言 chart.js是一个简单.面向对象.为设计者和开发者准备的图表绘制工具库.它可以帮你用不同的方式让你的数据变得可视化.每种类型的图表都有动画效果,并且看上去非常棒,即便是在retina ...
- Again Stone Game
Alice and Bob are playing a stone game. Initially there are n piles of stones and each pile contains ...
- hdu 1520 Anniversary party(入门树形DP)
Anniversary party Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6926 Accepted: 3985 ...
- CSS与JS中的相对路径引用
javascript和css文件中采用相对路径,其基准路径是完全不同的. 1.javascript引用资源(比如图片)相对路径是以宿主路径(被引用的网页比如你在首页index.php引用了某js文件, ...