Skip to content

动态 URL 过滤

fang5566 edited this page Jun 2, 2015 · 7 revisions

[文章完善中]

动态 URL 过滤功能是从 uBlock Origin 0.9.8.0 版本开始引入的。

动态 URL 过滤("URL 过滤")的首要目的是作为一种诊断或减损工具使用,用来修复被动态过滤或静态过滤破坏的网页。它的次要目的是提供比动态过滤更高的颗粒度。

URL 过滤的优先级比动态过滤和静态过滤更高,"uBlock 的网络过滤引擎概览"显示了 URL 过滤的应用范围,并有助于更好了解其使用目的。

你可以从日志记录台访问 URL 过滤功能,例如通过记录台界面创建和管理动态 URL 的规则,只要找到要创建规则的资源并点击该行的第四个单元格:

a

URL 过滤也使用_规则_,类似于动态过滤规则,但区别是目标主机名是用一条 URL 来代替:

[源主机名] [目标主机名] 类型 操作

源主机名是一条请求被取消时来自的_上下文_,就像动态过滤规则,地址栏中 URL 的主机名就是这个上下文。使用 (*) 这个全局的上下文可以创建一条应用于任何网页的 URL 过滤规则。

目标 URL 是用来匹配的 URL:一个资源的 URL 必须完全目标 URL 打头才能满足匹配要求。

类型是该资源的类型,使用 * 这个特殊类型可以创建一条应用于任何类型的 URL 过滤规则。

操作是要告诉 URL 过滤引擎有匹配的资源以后要做什么,操作类型和动态过滤规则一样,包括:allownoopblock

重要的是要了解到 URL 过滤规则会覆盖动态过滤规则和静态过滤规则。所以你可以创建一条 allow 的 URL 过滤规则来覆盖一条 block 的普通动态过滤规则。

关于 URL 过滤好处的例子

恢复受损的网站:issue #240 里面有提到一个真实的例子,该网站需要获取 http://s7.addthis.com/js/300/addthis_widget.js 这个资源才可能正常显示评论区。但是 addthis.com 被 uBlock 的 Privacy 规则列表给屏蔽了,还添加了 important 规则选项,表示这条规则无法被例外规则所覆盖。使用 URL 过滤就可以解决这个问题,因为 URL 过滤规则会覆盖其他所有类型的过滤规则。

实现更细颗粒度的动态过滤:[还在想一个更具体的例子] 使用 * * 3p block 这条动态过滤规则会默认屏蔽所有第三方资源,但用 example.org https://foo.com/widget.js script allow 规则来允许特定的第三方资源,这在 URL 过滤功能引入之前是实现不了的,唯一的解决办法是允许 foo.com 下的所有资源。

Clone this wiki locally