最近上线一个新版本,需要在导航增加一个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过滤规则
http://bbs.kafan.cn/thread-1674209-1-1.html adblock plus官方规则说明反馈贴
 
 

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

  1. 如何一步一步用DDD设计一个电商网站(九)—— 小心陷入值对象持久化的坑

    阅读目录 前言 场景1的思考 场景2的思考 避坑方式 实践 结语 一.前言 在上一篇中(如何一步一步用DDD设计一个电商网站(八)—— 会员价的集成),有一行注释的代码: public interfa ...

  2. 多线程爬坑之路-Thread和Runable源码解析之基本方法的运用实例

    前面的文章:多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类) 多线程爬坑之路-Thread和Runable源码解析 前面 ...

  3. Spark踩坑记——Spark Streaming+Kafka

    [TOC] 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端,我们利用了spark strea ...

  4. 多线程爬坑之路-学习多线程需要来了解哪些东西?(concurrent并发包的数据结构和线程池,Locks锁,Atomic原子类)

    前言:刚学习了一段机器学习,最近需要重构一个java项目,又赶过来看java.大多是线程代码,没办法,那时候总觉得多线程是个很难的部分很少用到,所以一直没下决定去啃,那些年留下的坑,总是得自己跳进去填 ...

  5. 踩石行动:ViewPager无限轮播的坑

    2016-6-19 前言 View轮播效果在app中很常见,一想到左右滑动的效果就很容易想到使用ViewPager来实现.对于像我们常说的banner这样的效果,具备无限滑动的功能是可以用ViewPa ...

  6. 为C# as 类型转换及Assembly.LoadFrom埋坑!

    背景: 不久前,我发布了一个调试工具:发布:.NET开发人员必备的可视化调试工具(你值的拥有) 效果是这样的: 之后,有小部分用户反映,工具用不了(没反应或有异常)~~~ 然后,建议小部分用户换个电脑 ...

  7. 首个threejs项目-前端填坑指南

    第一次使用threejs到实际项目中,开始的时候心情有点小激动,毕竟是第一次嘛,然而做着做着就感受到这玩意水好深,满满的都是坑,填都填不过来.经过老板20天惨无人道的摧残,终于小有成就. 因为第一次搞 ...

  8. dll文件32位64位检测工具以及Windows文件夹SysWow64的坑

    自从操作系统升级到64位以后,就要不断的需要面对32位.64位的问题.相信有很多人并不是很清楚32位程序与64位程序的区别,以及Program Files (x86),Program Files的区别 ...

  9. 关于微软HttpClient使用,避免踩坑

    最近公司对于WebApi的场景使用也越来越加大了,随之而来就是Api的客户端工具我们使用哪个?我们最常用的估计就是HttpClient,在微软类库中命名空间地址:System.Net.Http,是一个 ...

随机推荐

  1. 【转】打包AAC码流到FLV文件

    AAC编码后数据打包到FLV很简单.1. FLV音频Tag格式                              字节位置    意义0x08,                         ...

  2. kafka-分布式消息系统

    消息中间件MessageQuene 解耦且可扩展:业务复杂度的提升带来的也是耦合度的提高,消息队列在处理过程中间插入了一个隐含的.基于数据的接口层,两边的处理过程都要实现这一接口.这允许你独立的扩展或 ...

  3. Linux基本操作 1-----命令行BASH的基本操作

    1 Shell(壳)是用户与操作系统底层(通常是内核)之间交互的中介程序,负责将用户指令.操作传递给操作系统底层 shell 分为两种 CUI : Command Line Interface Lin ...

  4. swing入门例子

    // a simple exmple that can show the basis of swing------------------------------------------------- ...

  5. 从free命令看Linux内存管理

    free命令是Linux系统下用来查看内存使用情况的,例如: $ free -h total used free shared buffers cached Mem: 7.8G 6.6G 1.3G 0 ...

  6. 《第一行代码》学习笔记16-碎片Fragment(1)

    1.碎片( Fragment):一种可以嵌入在活动当中的UI片段,能让程序更加合理和充分地利用大屏幕的空间,在平板上的应用广泛. 2.碎片同样包括布局,有自己的生命周期,甚至可理解成一个迷你型的活动. ...

  7. MySQL 数据库入门操作

    启动mysqld:在命令行启动mysql时,如不加"--console",启动.关闭信息不在界面中显示,而是记录在安装目录下的data目录里,文件名一般是hostname.err, ...

  8. MySQL percona-toolkit工具包的使用教程

    percona-toolkit工具包的使用教程之介绍和安装http://blog.chinaunix.net/uid-20639775-id-3206802.htmlpercona-toolkit工具 ...

  9. 关于WinForm/Web如何使用缓存Cach

    原文链接:http://www.cnblogs.com/zfanlong1314/archive/2013/03/28/2986403.html Cache 的绝对到期与滑动到期 绝对到期:设置绝对过 ...

  10. c#字符串方法

    作者: 常浩 staticvoid Main(string[] args) { string s =""; //(1)字符访问(下标访问s[i]) s ="ABCD&qu ...