js屏蔽广告详解编程语言
2023-06-13 09:20:40 时间
最近遇到有些广告的问题,首先是在手机端,可能是用户访问了一些小网站的,(你懂得),然后在访问我的网站时,会带小广告过来,通常是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) });
引入这个文件可以过滤大部分的广告,其他的还需要继续完善广告。
如果有其他更好的方法,请联系我,蟹蟹。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/13868.html
cgojava相关文章
- js中四舍五入的方法_JS取整
- 页面跳转进度条JS实现详解编程语言
- js封装好的模仿qq消息弹窗代码详解编程语言
- js+html实现遮罩层效果详解编程语言
- js实现按钮的滑动效果详解编程语言
- js合并单元格详解编程语言
- js 判断是否是空对象详解编程语言
- js检测浏览器版本方法详解编程语言
- 原生js的RSA和AES加密解密详解编程语言
- 页面显示载入中,请稍候… 自动跳转到的JS代码详解编程语言
- Ember.Js v2.14.0-beta.1 发布,一个JavaScript框架详解编程语言
- JS正则表达式从入门到入土(1)—— REGEXP对象详解编程语言
- along.js详解编程语言
- JS如何判断浏览器类型和详细区分IE各版本浏览器详解编程语言
- 两段简单的JS代码防止SQL注入详解编程语言
- js关于for循环中的闭包问题详解编程语言
- Js中String转int详解编程语言
- js为一个对象Object添加一个新的属性和值详解编程语言
- js字符串和数字对象互相转换详解编程语言
- js 事件流 捕获阶段 冒泡阶段 目标阶段详解编程语言
- 超强推荐的js编程中的简洁写法收集