网页修剪器--adblock plus

突然发现这个网站,可以发文章上去,挺不错的。试着写一篇?

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

内容过滤规则结构如下


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)).

你可能感兴趣的:(网页修剪器--adblock plus)