Skip to content

后台网络请求

fang5566 edited this page Mar 8, 2021 · 20 revisions

返回“动态过滤:默认拒绝模式” 页面

重要说明:

本文档已过期,需重新修订。在本文档创建时,uBlock Origin 还可以查看和过滤来自多地的后台网络请求,例如来自其他扩展或各种浏览器操作(如实时搜索建议)的后台请求。

此后情况变化了:uBO 再也无法查看来自其他扩展的网络请求,后台请求也没那么频繁出现。再者,WebRequest 的 API 现在提供了更多的上下文给事件监听器(event listener),这样即便没法知道某条网络请求出自哪个标签页,我们也还是经常可以正确过滤。

鉴于此原因(和其他最终浮现的原因 -"Who Left Open The Cookie Jar?" 漏洞),从 uBO 1.15.20 开始,我们默认不再把 behind-the-scene 加入 受信任站点 列表,这意味着默认情况下后台请求将可能被过滤。


过滤后台网络请求的功能适合打开了高级用户模式的用户使用。

什么是后台网络请求

后台 网络请求是指那些 uBlock 无法与浏览器任何特定标签页关联的网络请求,这些请求来自 某处,但 uBlock 缺少这方面的汇报信息,无法获知它们到底来自何处。

所有无法获知来源的网络请求都被归类为 后台 请求。通常其他过滤工具会忽略并自动将这些请求放行。

在 Chromium 浏览器里后台请求包括以下几种类型:

  • 浏览器更新扩展时产生的请求
  • 浏览器开启特殊功能时产生的请求,比如开启了 “使用预测服务帮助补全地址栏输入的搜索关键字或 URL”
  • 网页使用了 navigator.sendBeacon()超链接审核等规范时产生的请求
  • 已安装的扩展无论是否出于好意所发送的请求(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。

如何查看后台网络请求

你可以打开记录台,点击下拉列表中的 “后台网络请求” 查看所有后台网络请求。

c
这里也可以看到各种各样扩展产生了后台请求

通常你需要长时间开着记录台以便抓取到任意和所有后台网络请求。

查看后台请求的功能向所有用户开放,所以你不必事先开启 _"高级用户 "_模式。

如何过滤后台网络请求

重要说明: 过滤后台网络请求会导致浏览器或所安装的扩展缺失重要功能。所以如果你真要过滤后台网络请求,请自行承担所有后果。

过滤后台网络请求的功能只有在 uBlock 控制面板里打开了 “高级用户 ” 模式后方可使用。

同时 后台网络请求 这个标签页里面的所有请求默认都加入 受信任站点 列表,不管你是否打开了 “高级用户 ” 模式。

要过滤后台网络请求,只要在记录台选中 “后台网络请求 ” 这个标签页,然后打开 uBlock 的弹出界面:

后台网络请求和弹出界面
弹出界面会出现当前记录台观察的所有页面的设置和数据。

上图显示的是使用 Chromium 浏览器访问 Github 网站时所发生的情况:Github 使用 navigator.sendBeacon() 来发送数据给 Google Analytics,结果导致后台请求被屏蔽。

重要说明: 过滤后台请求时请自担风险。今后我不再回复并会关闭这类源自直接过滤后台网络请求的 issue。

请记住不加选择地过滤后台请求可能会导致浏览器无法正常更新组件、更新扩展乃至扩展无法正常使用。这就是为什么它是一项高级用户才可开启的特性。

要关闭过滤后台请求功能,你可以允许整个 “后台网络请求 ” 标签页,或直接关闭 “高级用户 ” 模式。

前者的实现方式是在 uBlock 的控制面板的 受信任站点 标签页里面加入 behind-the-scene 这条规则。

如果你只想过滤极少数特定的后台网络请求,要将潜在的问题减到最少最好是使用动态过滤:将全部这个单元格设置为本地 allow (绿色), 比如 behind-the-scene * * allow 这样的规则。这样可以确保所有 后台请求 都不会被屏蔽,就好比在后台请求范围内关闭 uBlock。然后再为特定主机名的创建 block 规则来屏蔽所有网络请求,或创建 noop 规则使得特定主机名只允许被静态过滤规则屏蔽。

Clone this wiki locally