ublock 基本屏蔽语法规则介绍 chrome浏览器屏蔽页面元素的方法(以屏蔽b站动态为例)

ublock插件是一款开源的chrome广告屏蔽插件,下载地址 https://chrome.google.com/webstore/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm

内置很多网站的广告屏蔽规则,比如youtube,但是有时候也会出现问题,比如说它默认把淘宝京东这些网站的详情页给屏蔽了,但是可以对特定网站关闭屏蔽功能,所以逛这些购物网站时关掉就可以了。

即使不学习过滤规则,也可以通过元素选择模式,手动选择页面的一些元素进行过滤。

但是要进行一些高级的过滤,就需要学习过滤规则了,比如说关键词匹配,或者说屏蔽用户id为xxx的用户的帖子。又或者说屏蔽bilibili直播的礼物特效。

01.基础过滤规则

源文档 https://github.com/gorhill/uBlock/wiki/Introduction-to-basic-filtering-syntax

<div id="unique-identifier" class="first-class second-class" data-storage="123-456">
<div class="first-class">

过滤器需要##作为前缀

可以通过 标签选择器,id选择器,类选择器等方式选择元素,

分别为 ##div, ###unique-identifier, ##.first-class

并集选择器和交集选择器也一样适用,比如##.first-class.second-class

也可以对属性进行筛选,用[]标签

  • ##[data-storage="123-456"] -正好匹配
  • ##[data-storage^="123-"] - 匹配开头
  • ##[data-storage$="-456"] - 匹配结尾
  • ##[data-storage*="3-4"] - 匹配中间
  • ##[id="unique-identifier"] 等价于 ###unique-identifier
  • ##[class="first-class"]等价于 ##.first-class, 但是只喜欢只会逐字比较属性

02.Cosmetic filters(元素隐藏过滤器)

参考 https://github.com/gorhill/uBlock/wiki/Static-filter-syntax#static-network-filtering

存在一些固定的过滤方法可以使用,这些方法很多都支持链式调用,前面讲到的##属于最基础的Cosmetic filters

:has(...), :has-text(...), :if(...), :if-not(...), :matches-css(...), :matches-css-before(...), :matches-css-after(...), :min-text-length(n), :not(...), :nth-ancestor(n), :upward(arg), :watch-attr(...), :xpath(...).

这里简单介绍一下最实用的

  • :has-text(needle) 参数needle可以是字符串或者正则表达式,正则表达式要用//包裹起来

会对当前元素和它的子元素中的所有文本进行匹配

  • :has(arg)类似于if的作用,arg里面的参数可以是普通的css选择器或者Cosmetic filters,

过滤器的默认行为是隐藏选中的元素,而不会把他们从dom树上移除

下面两个方法分别是移除元素,和重新定义样式

subject:remove()

  • Description: action operator, instruct to remove elements from the DOM tree, instead of just hiding them.
  • Chainable: No, action operator can only be used at the end of the root chain.
  • subject: Can be a plain CSS selector, or a procedural cosmetic filter.
  • Examples:
    • gorhill.github.io###pcf #a18 .fail:remove()

New in uBO 1.26.0. Fixes #2252

Since :remove() is an "action" operator, it must only be used as a trailing operator (just like the :style() operator).

AdGuard's cosmetic filter syntax { remove: true; } will be converted to uBO's :remove() operator internally.


subject:style(arg)

  • Description: action operator, applies specified style to selected elements in DOM tree.
  • Chainable: No, action operator can only be used at the end of the root chain.
  • subject: Can be a plain CSS selector, or a procedural cosmetic filter after 1.29.3b10. Before, only native, plain CSS selectors were supported, see #382.
  • arg: one or more CSS property declarations, separated by the standard ;. Property values with url(...) are forbidden.
  • Examples:
    • example.com##h1:style(background-color: blue !important)
    • motobanda.pl###mvideo:style(z-index: 1!important)

03.HTML过滤器(在response data阶段移除元素)

也就是在返回html的阶段移除元素,但是现在vue之类框架的页面通常都是用ajax请求动态请求数据,所以这种过滤方式用处还是比较有限的.

和Cosmetic filters的语法基本相同,只是在前面加一个^符号

比如example.com##^.badstuff

04.脚本注入

+js(...)可以从官方脚本资源库中加载脚本

官方脚本资源连接如下

https://github.com/gorhill/uBlock/wiki/Resources-Library

举个例子

acis.js

全名是abort-current-inline-script.js

这个脚本会终止页面内(script标签)js的执行,只要文本或者正则表达式或者属性能够成功匹配到

Examples:

  • weristdeinfreund.de##+js(acis, Number.isNaN)
  • tichyseinblick.de##+js(acis, Math, /\}\s*\(.*?\b(self|this|window)\b.*?\)/)

下面的过滤器可以禁止指定站点的脚本加载:

example.com#@#+js()

05.实战使用 b站动态屏蔽指定用户 屏蔽抽奖广告

举个例子就是b站的动态,有些up主你虽然关注了,但是不希望他们的发言出现在动态里.比如因为他们的发言过于频繁,或者说你关注她们主要是为了看直播的,比如一些vtuber.

我们可以添加类似下面的规则

其中用到两个方法 has和has-text,还用到了正则

! 2022-05-28 https://t.bilibili.com 屏蔽b站动态up的选择器
t.bilibili.com##.bili-dyn-item__main:has(.bili-dyn-title__text:has-text(/用户名1|用户名2/))

还有一个问题就是,这样我们连他们发视频的动态也一起过滤了,所以我们可以先加一个not排除里面有视频的动态.

t.bilibili.com##.bili-dyn-item__main:not(:has(.bili-dyn-card-video)):has(.bili-dyn-title__text:has-text(/用户名1|用户名2/))

屏蔽抽奖广告,这个网站的抽奖广告也是挺烦的。

www.jianshu.com##.aside div:has-text(抽奖)
www.jianshu.com##footer+div:has-text(抽奖)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容