Skip to content

动态过滤快速指南

fang5566 edited this page Feb 9, 2021 · 18 revisions

返回"动态过滤"页面


下图的动态过滤面板(只针对高级用户开启)可通过点击 更少更多 按钮打开或关闭:

图 1


重要说明

静态过滤 是指存在于过滤规则列表中的过滤规则,例如使用 EasyListEasyPrivacy、hpHosts 等等。动态过滤 则是好比防火墙规则那样的过滤规则。

动态过滤 会覆盖 静态过滤

这就是说一条 block 动态规则会覆盖任何现有的 allow 静态规则。这表示你可以用动态过滤规则达到 100% 的屏蔽目的(适用于恢复被某些静态规则破坏的页面)。

uBlock 的网络过滤引擎概览这篇文章有助于你理解静态过滤和动态过滤是如何交互运作的。


第一列是动态过滤的对象:

图 2

如你所见,你可以按照资源类型或主机名的源地址创建动态过滤规则。

每个条目的颜色可以用来判断所有请求是被屏蔽(红色),被允许(绿色),还是部分屏蔽部分允许(黄色)。

加粗的是域名,域名可以看作是主机名,但主机名不能看成是域名,因为 uBlock 所认可的域名必须来自 Mozilla Public Suffix 列表

第二列全局 的动态过滤规则,所有在这列出现的过滤规则在 任何 网站的任何位置均可生效:

图 3

第三列本地 的动态过滤规则,所有在这列出现的过滤规则只在 当前 网站生效:

图 4

第三列的单元格总体显示有多少请求被屏蔽或允许:

  • - or +:分别有 1-9 条网络请求被屏蔽或允许
  • -- or ++:分别有 10-99 条网络请求被屏蔽或允许
  • --- or +++:分别有 100 或更多网络请求被屏蔽或允许
  • 空白单元格:该主机名没有任何网络请求被屏蔽或允许

所以动态过滤规则既有全局的规则,也有本地的规则。

默认情况下,uBo 安装后不包含任何动态过滤规则,所以动态过滤引擎也不会屏蔽任何内容。你得根据自己需要自行创建规则。


Block 规则

出于对安全性和隐私的保护,默认所有网页的第三方帧框架都被屏蔽:

图 5

很好,所有嵌入页面的第三方帧框架都被屏蔽了。不过似乎这个网页有一个 Youtube 视频嵌入:

图 6

如果你想默认屏蔽某个网站的所有第三方帧框架,但不屏蔽内嵌的 Youtube 视频,有两种办法。


Noop 规则

第一种办法

为第三方帧框架创建一条本地 noop 规则:

图 7

正常了,现在内嵌的 Youtube 视频显示出来了。

注意 noop 规则的单元格是暗灰色,而无任何规则的单元格是亮灰色(默认颜色)。因此灰色表示该单元格无任何动态规则生效。如果一个单元格从更高优先级的单元格继承了一条 blockallow 规则,则我们可以使用 noop 规则来覆盖上述所继承的规则。从概念上说,noop 规则是在你的动态规则集里打洞用的,这样网络请求可以畅快通过。

但上面的规则会导致该站点的所有第三方帧框架都被允许,这可不太好。

第二种办法

youtube.com 创建一条本地 noop 规则 (and for the specific page used as example, a noop rule for google.com also had to be created to un-break the embedded Youtube video):

图 8

这会阻止动态过滤规则对 youtube.com 的一切生效,但只适用于当前站点。


重要说明:

请记住 noop 规则会忽略范围更广的动态过滤规则,静态过滤规则仍完全保持不变,意味着你在内嵌的 Youtube 视频里不会看到广告。


如果你想默认屏蔽所有网站的第三方帧框架,但不屏蔽任何网站内嵌的 Youtube 视频,那又该怎么办?

只要为 youtube.com 创建一条全局 noop 规则就可以了:

图 9

上图表示所有动态过滤规则默认不会在 youtube.com 任何地方生效。


重要说明:

本地 动态过滤规则会覆盖 全局 规则。 换句话说:更专用的动态过滤规则会覆盖次专用的规则。 例如,youtube.com 的动态过滤规则(专用)会覆盖第三方帧框架的动态过滤规则(通用) 。


All dynamic rules are temporary by default: Click the padlock if you want to persist the ruleset for a specific web site.

figure 12

  • The padlock will be visible if and only if there is at least one temporary rule in the pane
  • This is really the optimal way to use dynamic filtering, as using this feature is often a matter of trial and error
  • This prevents ruleset pollution: your ruleset will be only those rules which you will have explicitly persisted
  • If you Ctrl-click to set/unset a rule, it will be immediately persisted (command ⌘-click on Mac)

Allow 规则

我们已经谈过了 blocknoop 这两种动态过滤规则,那 allow 规则呢?

allow 规则(绿色)最适合用来恢复某些被静态过滤规则破坏的页面。: allow rules will override all block filters from static filter lists, and because of this, allow rules are to be used only for exceptional cases and are rarely needed in the real world.

The only way to enable the ability to point-and-click to create allow rules is to either:

  • Tap twice on the Ctrl key while in the popup panel
    • This won't work in Firefox when privacy.resistFingerprinting is set to true
  • Set filterAuthorMode to true in advanced settings

Doing so will enable the allow rule creation widget in the popup panel:

figure 10

This small obstacle to easily create allow rule through point-and-click is by design, as it has been found over the years that too many users are misusing dynamic filtering by creating allow rules where noop rules should have been used.

To reiterate, creating allow rules will completely override related block filters from static filter lists, which may easily cause you to be less protected than if not using dynamic filtering at all -- allow rules are to be used exceptionally, and most of the time, temporarily -- they are typically most useful to filter list maintainers in order to quickly narrow down filter issues.

Furthermore, when an allow rule is set for the 1st-party domain, this will completely disable scriptlet injection and HTML filtering, again a behavior which is most useful to filter list maintainers. Scriptlet injection and HTML filtering are often used to deal with anti-blocker mechanisms.

**重要说明:**通常情况下请使用更精确的 allow 动态过滤规则来恢复被破坏的页面,因为这些 allow 规则会覆盖所有静态规则,意味着如果你使用了宽泛的 allow 规则, 广告、跟踪者和其他干扰可能又会冒出来。


My rules pane

All the rules you create through the dynamic filtering panel will appear in the "My rules" pane in the dashboard:

figure 11

From there you can freely add/modify/delete your rules manually through plain text editing.


Now that you have a basic understand of dynamic filtering, you can head to medium blocking mode or hard blocking mode in order to learn more about using uBO in default-deny mode.

Clone this wiki locally