你被adblock坑过吗?

最近上线一个新版本,需要在导航增加一个app的下载入口(一个图片链接),然后经过了正常的原型图、设计、切图、上线的过程,一切都是那么顺利。上线之后,像往常一下会让产品进行确认,所有的调整和优化都没有问题,可以正常的展示,但是发现一个奇怪的现象,在chrome下app的入口始终看不到。然后我就在我的机器上几乎看了所有的浏览器(chrome、firefox、safari、IE系列、opera),都能看到。于是我理所当然的做了以下几步:

  • 让产品清除缓存看一看,之前有过这种情况,由于样式资源存在缓存导致没有正常显示,结果,没有显示
  • 怀疑是不是那台机器没有上啊(我很不想出现这个,这会导致上线脚本等一系列问题),去看了产品的机器,发现其他调整了的都能正常运行,应该可以排除这个问题了

紧接着我就想到了是不是浏览器的插件有影响呢?是的,在看插件的时候,我看到了它,这个让我醉生梦死的她。禁用之后,发现可以正常显示了。进一步跟了一下,到底触发了一个什么样的规则,导致我一个正常的功能入口,被当做广告给拦截了。看了一下源码发现,我使用了一个nav-ad的类名,就是这个触发了adblock的规则。当然知道了什么原因导致的问题,很快就可以正常的解决这个问题。

但是事情还没有完,这只是一个点,我想了一下,如果不把这个规则搞清楚的话,以后还会触发其他我们现在未知的的一些规则,导致在用户那里不能正常展示。于是我学习了一下,adblock的撰写规则,这里跟大家一块儿学习一下。

  • 基本过滤规则

要拦截的url地址,如:http://example.com

  • 定义例外规则

可以使用@@表示后面的是例外,不会拦截;也可以配合|使用。如:@@|http://example.com

  • 匹配网址开头和结尾

使用管线符号|表示最前端或者最末端。如:阻挡以swf结尾,swf|;阻挡以http开头的,|http。

  • 标记分隔符

通常需要接受过规则的任何分隔符,分隔符可以除了字母、数字或_-.%之外的任意字符。

  • 注释

使用!作为注释的开始,也可以在注释的上面书写任何想些的文案。

  • 制定过滤规则选项

  • 使用正则表达式

通过正则表达式书写过滤规则,但是出于性能考虑,不建议使用。

  • 元素隐藏

之前讲到的规则,只要匹配上请求都无法发送。有一些拦截必须要发送请求之后才能知道是否真的需要拦截,才是可以使用到元素隐藏的规则。发现请求的数据触发了拦截的规则,此时会隐藏相应的元素。一般使用选择器进行匹配,如:http://example.com###coner-flash http://example.com##.floatgg等等

学习了撰写规则,然后在大概了解一下easylist(https://easylist-downloads.adblockplus.org/easylistchina.txt)等规则,大概知道什么情况下会触发这些规则。进而,在开发过程中,可以避免掉入这些坑里面。

总结一下:通过上面的学习可以再根据easylist查看一些经常会被拦截的id、class命名,然后避免使用包含ad的类名、class名、文件名;避免使用被拦截域名下的资源;很多公司的打点统计会被拦截,这个可以通过bd联系一下,看看是否可以解决。如果打点统计被拦截之后,量足够大的话,是会直接影响数据的准确性的,所以这块儿需要重视一下。

参考资料:

https://adblockplus.org/zh_CN/filters#basic 撰写adblock Plus过滤规则

https://easylist-downloads.adblockplus.org/easylistchina.txt 过滤规则

http://bbs.kafan.cn/thread-1674209-1-1.html adblock plus官方规则说明反馈贴

时间: 2024-10-03 09:37:57

你被adblock坑过吗?的相关文章

移动端点击事件全攻略,有你知道与不知道的各种坑

看标题的时候你可能会想,点击事件有什么好说的,还写一篇攻略?哈哈,如果你这么想,只能说明你too young to simple. 接触过移动端开发的同学可能都会面临点击事件的第一个问题:click事件的300ms延迟响应.不能立即响应给体验造成了很大的困扰,因此解决这个问题就成为了必然. 这个问题的解决方案就是: zepto.js的tap事件.tap事件可以理解为在移动端的click事件,而zepto.js因为几乎完全复制jQuery的api,因此常常被用在h5的开发上用来取代jquery.

[原创] 关于免费VPN我踩过的那些坑

关于免费VPN我踩过的那些坑 因为工作的关系,笔者经常需要用到VPN, 访问国外国网站,你懂的. 我曾经试着自己购买VPS搭建过VPN, 被封了后就没心情再维护了,毕竟直接买VPN比VPS便宜太多.时间一长,也就有了一些经验. 这里总结成表格的形式,分享给大家: [NydusVPN] 知乎推荐的香港VPN, 比直通车好,线路稳定性好,办公游戏适合.注册前7天内可以无条件退款哦.  官方网站  [Astrill] 老牌VPN,但近两年被封底得太厉害,现在已经不太给力了. 注册第一个月能免费使用(付

Linux下GDB调试与对拍(先挖个坑)

应为NOIP要复赛在NOI-Linux下编写程序,所以被迫选择Vim+Gdb(主要是Guide太丑了). 虽然GUIDE的调试功能已经对付大多数的调试,反正学一学GDB的使用也没什么坏处. 1 生成调试信息 要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点.如: gcc -g hello.c -o hello g++ -g hello.cpp -o hello 如果没有-g,你将看不见程序的函数名.变量名,

Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n

错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refreshing org.spring[email protected]56528192: startup date [Tue Sep 19 15:05:24 CST 2017]; root of context hierarchy 2017-09-19 15:05:24.858 INFO 9986 --

小心掉入旧墙刷漆的五大“坑”

一些朋友的旧墙刷漆都是由自己一手包办,但墙面重新刷漆有好几个误区需要多加注意的.前期材料的选择.施工的准备以及施工的方法,这都是墙面重新刷漆的重要环节.在这些环节中,一不小心就会掉入误区,现在让我们看看有哪些是需要我们注意的. 第一点:过分在意墙面涂料的品牌 一些朋友认为购买墙面涂料一定要买知名品牌使用才好,当然知名品牌的涂料产品确实有一定的质量保障,但是并不是说我们要一味地追求品牌油漆.其实,市场上许多普通品牌的油漆与知名品牌的质量和粉刷效果相差无几,但是在价格上却有很大的差异.所以家装时,需

angular踩坑之路:初探webpack

之前费了一番力气安装好了angular开发环境,后面的几天都是在angular中文官网上看文档,照着英雄教程一步一步操作,熟悉了angular的一些基本特性,这部分没有遇到什么大问题,还比较顺利.这两天在看官方文档中的Webpack简介,想跟着文档做一遍,了解一下如何用Webpack打包angular项目,结果遇到了一些问题,因为是初学angular和Webpack的小白,这些问题一时难以解决,花费了不少时间,想在这里记录一下. 首先跟着文档将相关的文件都添加到项目中,目录是这样子的: 根据文档

谈谈Vagrant中的那些坑:CentOS

安装了vagrant之后,当然需要将它投入使用.由于计划中的生产环境是 CentOS 7,因此想搭建一个 基于CentOS 7(x86_64)的虚拟开发环境. 最开始的一系列工作,比如在vbox中安装CentOS 7.打包box文件.将box导入vagrant等都不在此一一细述,后面将有专文总结这些过程. 然后坑来了:修改Vagrantfile配置文件欲实现 public_network: config.vm.network "public_network", ip: "19

阿里云磁盘扩容踩坑总结

公司半年前上线一个新的项目,采购了一批阿里云主机,磁盘组成是40G系统盘+100G的数据盘,数据库采用MariaDB Galera Cluster集群部署,由于业务数据量快速增长,导致磁盘存储空间剩余量很少,急需要扩容,先总结整个项目规划中埋下的坑: 1.没有DBA对数据库的容量规划,而前期的运维人员采购时选用100G的SSD云盘: 2.数据库默认使用共享表空间,缺点是删除数据后不释放空间,当数据快速增长后,我们采取了先删除临时表数据的方式来尽量避免暴力扩容,争取在春节期间稳定,删除部分数据后,

跳入linux的第一个坑-因为安装Ubuntu导致的硬盘被误格的恢复.(记TestDisk使用记录)

不看废话,直接跳到操作说明 前几日心血来潮想把家中的旧笔记本换成Linux操作系统,算是在业余生活中正式投入Linux的怀抱.说干就干,发行版选择了Ubuntu,下载了Ubuntu16.04的ISO,下载软碟通,制作成U盘启动.恩,重启电脑,U盘引导,进入安装界面. 恩,安装界面挺炫酷啊,还检测到硬盘中安装的Win8,恩,问我是与其他系统共存还是清除并安装,既然都正式投入怀抱了,肯定只安装Ubuntu啊,Win8,拜拜了,恩,选第二个.下图是网上找的.请注意第二个选项的注意:..算了,我就是看到