-
Notifications
You must be signed in to change notification settings - Fork 40
后台网络请求
重要说明:
This wiki page is out of date and in need of revision. When this documentation was created, the behind-the-scene network requests uBlock Origin was able to see and filter originated from many places, such as those from other extensions or from various browser operations (ex.: real-time search suggestions).
Since then things have changed: uBO no longer can see network requests from other extensions, and behind-the-scene network requests are now quite less frequent. Furthermore, the webRequest API now provides more context to event listeners, such that it is often possible to still filter properly even when it's not possible to know from which exact tab a network request originates.
Because of this (and other reasons which will be eventually come to light), starting with uBO 1.15.20, the behind-the-scene
scope will no longer be whitelisted by default, meaning network requests from the behind-the-scene scope will be subject to filtering by default.
动态过滤后台网络请求的功能适合打开了高级用户模式的用户使用。
后台 网络请求是指那些 uBlock 无法从浏览器任何已打开的标签页观察到的网络请求,这些请求来自_某处_,但 uBlock 缺少这方面的汇报信息,无法获知它们到底来自何方。
所有无法获知来源的网络请求都被归类为_后台_ 请求。通常其他过滤工具会忽略并自动将这些请求放行。
在 Chromium 浏览器里后台请求包括以下几种类型:
- 浏览器更新扩展时产生的请求
- 浏览器开启特殊功能时产生的请求,比如开启了_"使用预测服务帮助补全地址栏输入的搜索关键字或 URL"_
- 网页使用了
navigator.sendBeacon()
、[hyperlink auditing] (http://www.wilderssecurity.com/threads/hyperlink-auditing-aka-a-ping-and-beacon-aka-navigator-sendbeacon.364904/) 等规范时产生的请求 - 已安装的扩展无论是否出于好意所发送的请求(uBlock 也有发送这样的请求,在规则列表需要更新时用来获取最新版本)
- 对于 Chrome 商店 的 uBO:
chrome-extension://cjpalhdlnbpafiamejdnhcphjbkeiagm/popup.html?tabId=-1&fullsize=1
. - 对于 Opera 商店的 uBO:
chrome-extension://kccohkcpppjjkkjppopfnflnebibpida/popup.html?tabId=-1&fullsize=1
. - 对于 AMO(Firefox) 的 uBO:
chrome://ublock0/content/popup.html?tabId=-1&fullsize=1
.
对于基于 Chromium 的浏览器,如果你是手动安装的 uBO,你需要将 id 这部分(例如:cjpalhdlnbpafiamejdnhcphjbkeiagm
)替换为你安装目录使用的 id。
从 uBlock 0.8.6.0 开始,你可以使用网络请求记录台查看所有后台网络请求,方法是点击下拉列表中的_"后台"_ 这项。
这里也可以看到各种各样扩展产生了后台请求
通常你需要长时间开着网络请求记录台以便抓取到任意和所有后台网络请求。
查看后台请求的功能向所有用户开放,所以你不必事先开启_"高级用户 "_模式。
**重要说明:**过滤后台网络请求会导致你的浏览器或所安装的扩展缺失重要功能。所以如果你真要过滤后台网络请求,你得自个儿承担所有后果。
动态过滤后台网络请求的功能只有在 uBlock 控制面板里打开了_"高级用户 "_模式后方可使用。
同时_后台_ 这个标签页里面的所有请求默认都不屏蔽,不管你是否打开了_"高级用户 "_模式。
要过滤后台网络请求,只要在网络请求记录台选中 "后台 " 这个标签页,然后打开 uBlock 的弹出界面:
弹出界面会出现当前记录台观察的所有页面的设置和数据。
上图显示的是浏览 Github 网站时所发生的情况:Github 使用 navigator.sendBeacon()
来发送数据给 Google Analytics,结果导致后台请求被屏蔽。
**重要说明:**过滤后台请求时请自担风险。我今后不会对这类源自直接过滤后台网络请求的 issue 作出回复。
请记住不加选择地过滤后台请求可能会导致浏览器无法正常更新组件、更新扩展乃至扩展无法正常使用。这就是为什么我把它作为一项高级用户才可开启的特性。
要关闭过滤后台请求功能,你可以把整个_"后台 "_ 标签页加为白名单,或直接关闭_"高级用户 "_模式。
前者的实现方式是在 uBlock 的控制面板的_白名单_ 标签页里面加入 behind-the-scene
这条规则。
如果你只想过滤极少数特定的后台网络请求,要将潜在的问题减到最少最好是使用动态过滤:将全部
这个单元格设置为本地 allow (绿色), 比如 behind-the-scene * * allow
这样的规则。这样可以确保所有后台请求都不会被屏蔽,就好比在后台请求范围内关闭 uBlock。然后再创建基于特定主机名的 block 规则来屏蔽所有网络请求,或创建 noop
规则使得特定主机名只允许被静态过滤规则屏蔽。
uBlock Origin - 一款支持 Chromium、Firefox 和 Safari 的高效过滤工具,快速且简洁