突然发现简书这个网站,可以发文章上去,挺不错的。试着写一篇?
Preface
我们每个人都是用户,而用户的活动似乎总是被引导。当引导得有点严重的时候,说难听点,那就是被设计了、被强奸了。对陌生景点一脸懵逼的时候,有导游讲解是不错的。然而有的导游不止于此,他们还要向你推销更多不知道是什么玩意儿的东西。
人们在阅读的过程中,自己能找到自己的兴趣点并进一步搜索。而很多网站致力于阻止用户这样做,方式如增加站内链接的出现,有事没事加点链接,理由是方便你访问。将不相关内容列出来,理由是方便你访问。对于可能有点相关的,那更要罗列出来了。
当一个东西越容易访问,那你就越容易去访问,因为运动的摩擦力越小,所以惯性的效果也维持得越久。特别是当你有兴趣时,你相当于处在滑坡中,显然身不由己。
在这样一个信息爆炸的时代,当一个人发现太容易获得低相关高松散信息时,我觉得他应懂得给自己增加点获取信息的阻力。要尽量收束,谨慎扩展,因为一个链接后面,总是有无穷无尽的链接。
在浏览器领域,Adblock Plus显然为此做出了一份贡献。网站已经陈列,而明白信息推销的用户,手上已经握了一把镰刀,或者说一瓶除草剂——Adblock Plus。
如果了解一点CSS,会发现Adblock Plus非常强大,不过我们还是要处处培养自身定力,毕竟防不胜防。有些链接看起来很吸引人,不过在点进去之前,不妨追究以下几个问题:
- 它能给我什么?
- 我希望从中得到什么?
- 我需要吗?
至于然后怎样,那就是你自己的事了。
分割线
接下来写一点Adblock Plus的语法,谨慎阅读。
Grammar
Basic filter rules
使用通配符,如http://example.com/ads/banner*.gif
。有时候图片文件是集中存放在一个文件夹下的,可以直接将此文件夹屏蔽,例如http://example.com/ads/
。
!
表示注释。
Defining exception rules
如果规则屏蔽了一些不该屏蔽的元素,你可以选择使用异常规则创建例外而非直接删除规则。前缀@@
来表示异常规则,除此之外,异常规则与筛选规则没有什么不同。
Matching at the beginning or end of an address
管道符|
被用于表示,呃,一堵墙?如果被用在元素地址末尾,意思是此处是结束,后面不得出现其他字符,否则不匹配。
比如,
filter | block | allow |
---|---|---|
swf |
http://example.com/annoyingflash.swf |
http://example.com/swf/index.html |
http://baddomain.example/ |
http://baddomain.example/banner.gif |
http://gooddomain.example/analyze?http://baddomain.example |
如果想同时屏蔽
-
http://
example.com/banner.gif -
https://
example.com/banner.gif -
http://www.
example.com/banner.gif
可以通过在过滤器前面放置两个管道符号来实现这一点,确保匹配域名的开头:
||example.com/banner.gif
Marking separator characters
使用^
表示分隔符。分隔符不包括字母、数字和下列字符
- _
- .
- %
例如,这个网址:http://example.com:8000/foo.bar?a12&b
可以被下来过滤器匹配到
^example.com^
^foo.bar^
Content Filters
内容过滤规则结构如下
<domains><separator><body>
domain要写完整。下面是separator和body的一些可能值
Separator | Type | Body content |
---|---|---|
## |
Element hiding | CSS selector (domains may be empty) |
#?# |
Element hiding emulation | Extended CSS selector |
#@# |
Element hiding exception | Selector |
#$# |
Snippet filter | Snippet |
##
表示隐藏元素的意思,#?#
表示扩展选择器,#@#
是用于选择器的例外语法。
分隔符##
标记了一个元素隐藏规则,而其余部分(主体)是一个 CSS 选择器,用于标识需要隐藏的元素。 任何CSS 选择器语法均可用。
用~
表示该规则不适用于该域的页。
一些示例
filter | 作用 |
---|---|
##table[width="80%"] |
隐藏宽度属性设置为80% 的表 |
##div[title*="adv"] |
隐藏所有带有 title 属性包含字符串“ adv”的 div 元素 |
##div[title^="adv"][title$="ert"] |
隐藏title 属性以“ adv”开头、以“ ert”结尾的 div 元素。 |
Extended CSS selectors (Adblock Plus-specific)
有时标准的 CSS 选择器不足以隐藏广告。 对于这些情况,adblock plus添加了一些新的选择器,即:
-
:-abp-has()
判断元素中是否具有什么内容。
-abp-has(> div > a.advertiser)
-
:-abp-contains()
选择器根据样式表属性选择元素。
div.sidebar > span:-abp-contains(Advertisement)
selects the elements within a ``, with a class of sidebar that contains the word "Advertisement".
- :-abp-properties()
支持通配符
-abp-properties(width:*px;height:250px;)
支持正则:/expression/
:-abp-properties(/width:30[2-8]px;height:250px;/)
这些扩展选择器以 #?#
开头。需要注意的是,这样做会对性能产生影响,所以要尽量节省。
Note: When using the
background-color property
, use the rgb() notation. For example, instead of:-abp-properties(background-color: #3D9C4F;)
, use:-abp-properties(background-color: rgb(61, 156, 79))
.