版本 1.4

本页面会消耗至少 2 MB 流量

请先订阅 测试规则
AdBlock Plus 请订阅 测试规则

测试平台 : Linux (AOSC OS 9) ,Edge 104
插件 AdGuard 4.0.204 / uBlock Origin 1.43.0 / AdBlock Plus 3.14.1
期望的测试平台 : Android 上各种声称支持 ABP 规则的浏览器
包括 crx 插件,不包括 AdGuard for Android

测试完毕后请删除此规则,否则会影响你浏览其它网页。

序号后缀,没有字母代表通用
b AdBlock Plus
u uBlock Origin
g AdGuard (crx)
@ 排除类规则
测试项目目录,点击展开
暂时无法构建以下测试,点击展开
1.2.12 $ping
1.2.13 $websocket
1.2.14 $webrtc
1.2.53b $sitekey
没有服务器,无法构建
1.2.44u $cname
1.2.63g $cookie
不知如何构建例子
1.2.18u $inline-font
1.2.20g $other
1.2.38g $content
1.2.60bu $header
2.3.3b :-abp-properties
2.3.7g :matches-property
2.2.5u ##^
2.2.6g $$ $@$
2.2.10b #$#snippet
尝试构建过,但没有生效
1.2.6g $object
1.2.7g $object-subrequest
1.2.16u $popunder
1.2.27ug $all
1.2.58g $mp4
没有必要构建
1.2.41g $stealth
1.2.47g $network
1.2.48g $app
1.2.59g $replace
1.2.64g $hls
1.2.65g $jsonprune
3.1.1g [$app]
期望的测试平台不支持这些功能
1.2.40g $extension
暂时不打算构建测试用的用户脚本
1.2.28bu $document
ABP 需要用户手动添加才可生效
uBO 在某些场景下才可生效
此测试会连接以下内部 (内容可控) 网站,点击展开
此测试会连接以下外部网站,点击展开
某些测试项目需要跳转到 Cloudflare lemon399-static.pages.dev 进行

1.0.1bg xxx
ABP AdG AdG 中文

tallSilv
1.0.1
上面的西瓜框里的图片应被拦截

1.0.2bg xxx.xx 匹配 URL
ABP AdG AdG 中文 uBO uBO 中文

example.com
1.0.2
上面的西瓜框里的图片应被拦截

1.0.3 https://xxx.xx/
ABP AdG AdG 中文

https://www.cook.com/
1.0.3
上面的西瓜框里的图片应被拦截

1.0.4 xxx/
ABP AdG AdG 中文

test/flash/
1.0.4
上面的西瓜框里的图片应被拦截

1.0.5u \
uBO uBO 中文

test/data/media/abpt/long \
    /long.xhtml
上面的西瓜框里的页面应被拦截
1.0.5@
上面的西瓜框里的图片不应被拦截
上面的西瓜框里的页面不应被拦截

1.1.1 *
AdG AdG 中文

/test/data/media/*.png
1.1.1
上面的西瓜框里的图片应被拦截

1.1.2@ @@
ABP AdG AdG 中文

@@/luna.png
1.1.2@
上面的西瓜框里的图片应被放行

1.1.3 xxx|
ABP AdG AdG 中文

.webp|
1.1.3
上面的西瓜框里的图片应被拦截
1.1.3@
上面的西瓜框有些多余...

1.1.4 |xxx
ABP AdG AdG 中文

|https://kfkl.oaaxa
上面的西瓜框里的页面应被拦截,不应出现口令

1.1.5 ||
ABP AdG AdG 中文

||neverssl.com/favicon.ico
1.1.5
上面的西瓜框里的图片应被拦截

1.1.6 ^
ABP AdG AdG 中文

logo.jpg^
1.1.6
上面的西瓜框里的图片应被拦截
1.1.6@
上面的西瓜框里的图片不应被拦截
1.1.6
上面的西瓜框里的图片应被拦截

1.1.7 /正则/
ABP AdG AdG 中文

/help\/image\/\w+\.svg$/
1.1.7
上面的西瓜框里的图片应被拦截

1.2.1 $script
ABP AdG AdG 中文

/abp1.*$script
上面的西瓜框里不应出现文字
1.2.1@
上面的西瓜框里的图片不应被拦截

1.2.2ug $inline-script
uBO uBO 中文

vercel.app$inline-script
上面的西瓜框里不应出现文字

1.2.3 $image
ABP AdG AdG 中文

abpt/img$image
1.2.3
上面的西瓜框里的图片应被拦截
上面的西瓜框里的文字不应被拦截

1.2.4 $stylesheet
ABP AdG AdG 中文

/abp5.*$stylesheet
上面的西瓜框里不应出现文字
1.2.4@
上面的西瓜框里的图片不应被拦截

1.2.5ug $css
uBO uBO 中文

/abp6.*$css
上面的西瓜框里不应出现文字
1.2.5@
上面的西瓜框里的图片不应被拦截

1.2.6 $object
ABP AdG AdG 中文

/0000-0060.*$object
坏耶
上面的西瓜框里的视频应被拦截
1.2.6@
上面的西瓜框里的图片不应被拦截

1.2.8 $xmlhttprequest
ABP AdG AdG 中文

/abp10.*$xmlhttprequest
上面的西瓜框里不应出现文字
1.2.8@
上面的西瓜框里的图片不应被拦截

1.2.9ug $xhr
uBO uBO 中文

/abp2.*$xhr
上面的西瓜框里不应出现文字
1.2.9@
上面的西瓜框里的图片不应被拦截

1.2.10 $subdocument
ABP AdG AdG 中文

/ifr1$subdocument
上面的西瓜框里不应出现页面
1.2.10@
上面的西瓜框里的图片不应被拦截

1.2.11ug $frame
uBO uBO 中文

/ifr2$frame
上面的西瓜框里不应出现页面
1.2.11@
上面的西瓜框里的图片不应被拦截

1.2.15 $popup
ABP AdG AdG 中文

/ifr3$popup
点我弹窗
点击后不应出现弹窗

1.2.17 $font
ABP AdG AdG 中文

abpt/icofont.*$font
  
上面的西瓜框里应为乱码或空白
图标字体来自 IcoFont许可
1.2.17@
上面的西瓜框里的图片不应被拦截

1.2.19 $media
ABP AdG AdG 中文

*pt/la$media
上面的音频应被拦截
1.2.19@
上面的西瓜框里的图片不应被拦截

1.2.21 ~ 1.2.26u
$third-party ABP AdG AdG 中文
$3p uBO uBO 中文
$strict3p uBO uBO 中文
$first-party uBO uBO 中文
$1p uBO uBO 中文
$strict1p uBO uBO 中文

!1.2.21
*_tp.gif$third-party
!1.2.22
*_3p.gif$3p
!1.2.23
*_s3p.gif$strict3p
!1.2.24
*_fp.gif$first-party
!1.2.25
*_1p.gif$1p
!1.2.26
*_s1p.gif$strict1p
1.2.21-1 1.2.21-2 1.2.21-3
$third-party 上面的西瓜框里应为 1 bu / 1 2 g
1.2.22-1 1.2.22-2 1.2.22-3
$3p 上面的西瓜框里应为 1 u / 1 2 g
1.2.23u-1 1.2.23u-2 1.2.23u-3
$strict3p 上面的西瓜框里应为 1 u
1.2.24-1 1.2.24-2 1.2.24-3
$first-party 上面的西瓜框里应为 2 3 u / 3 g
1.2.25-1 1.2.25-2 1.2.25-3
$1p 上面的西瓜框里应为 2 3 u / 3 g
1.2.26u-1 1.2.26u-2 1.2.26u-3
$strict1p 上面的西瓜框里应为 2 3 u

1.2.28ug $document
uBO uBO 中文 AdG AdG 中文

/gg.xhtml$document
跳转到 gg.xhtml
上面的链接,点击后的页面应被拦截

1.2.29ug $doc
uBO uBO 中文

/gg2.xhtml$doc
跳转到 gg2.xhtml
上面的链接,点击后的页面应被拦截

1.2.28@g ~ 1.2.37@g 按条件关闭功能

!1.2.28@
@@lemon399-static.pages.dev/indexd.html$document
!1.2.30@
@@lemon399-static.pages.dev/indexe.html$elemhide
!1.2.31@
@@lemon399-static.pages.dev/indexeh.html$ehide
!1.2.32@
@@lemon399-static.pages.dev/indexg.html$generichide
!1.2.33@
@@lemon399-static.pages.dev/indexgh.html$ghide
!1.2.34@
@@lemon399-static.pages.dev/indexgb.html$genericblock
!1.2.35@
@@lemon399-static.pages.dev/indexs.html$specifichide
!1.2.36@
@@lemon399-static.pages.dev/indexsh.html$shide
!1.2.37@
@@lemon399-static.pages.dev/indexub.html$urlblock

1.2.28@g $document
AdG AdG 中文
点击这里 跳转到 Cloudflare 进行测试

1.2.30@ $elemhide
ABP uBO uBO 中文 AdG AdG 中文
点击这里 跳转到 Cloudflare 进行测试

1.2.31@ug $ehide
uBO uBO 中文
点击这里 跳转到 Cloudflare 进行测试

1.2.32@ $generichide
ABP uBO uBO 中文 AdG AdG 中文
点击这里 跳转到 Cloudflare 进行测试

1.2.33@ug $ghide
uBO uBO 中文
点击这里 跳转到 Cloudflare 进行测试

1.2.34@bg $genericblock
ABP AdG AdG 中文
点击这里 跳转到 Cloudflare 进行测试

1.2.35@ug $specifichide
uBO uBO 中文 AdG
点击这里 跳转到 Cloudflare 进行测试

1.2.36@ug $shide
uBO uBO 中文
点击这里 跳转到 Cloudflare 进行测试

1.2.37@g $urlblock
AdG AdG 中文
点击这里 跳转到 Cloudflare 进行测试

1.2.42bg $match-case
ABP AdG AdG 中文

*?CoDe=1$match-case
1.2.42
上面的西瓜框里的图片应被拦截
1.2.42@
上面的西瓜框里的图片不应被拦截

1.2.43@ug $badfilter
uBO uBO 中文 AdG AdG 中文

/disa.gif
/disa.gif$badfilter
1.2.43@
上面的西瓜框里的图片不应被拦截

1.2.45ug $important
uBO uBO 中文 AdG AdG 中文

@@/impo.gif
/impo.gif$important
/impo2.gif
@@/impo2.gif$important
1.2.45
上面的西瓜框里的图片应被拦截
1.2.45@
上面的西瓜框里的图片不应被拦截

1.2.46ug $empty
uBO uBO 中文 AdG AdG 中文

/abp4.js$empty
上面的西瓜框里应出现 成功

1.2.49ug _
uBO uBO 中文 AdG

media/abpt/tesu/$script,_,stylesheet
media/abpt/tesu/$font,__,image
上面的西瓜框里的文字应被拦截
上面的西瓜框里的文字应被拦截
1.2.49
上面的西瓜框里的图片应被拦截
上面的西瓜框里的页面不应被拦截

1.2.50 $~xxx
ABP AdG AdG 中文

media/abpt/test/$~image
1.2.50
上面的西瓜框里的图片不应被拦截
上面的西瓜框里的页面应被拦截

1.2.51 $domain
ABP uBO uBO 中文 AdG AdG 中文

/abp7.js$domain=pages.dev
上面的西瓜框里的文字不应被拦截
点击这里 跳转到 Cloudflare 进行测试

1.2.52ug $denyallow
uBO uBO 中文 AdG

/abp8.js$denyallow=vercel.app,domain=pages.dev
上面的西瓜框里的文字不应被拦截
点击这里 跳转到 Cloudflare 进行测试

1.2.54 $csp
ABP uBO uBO 中文 AdG AdG 中文

/gg3.xhtml$csp=style-src 'self'
上面的西瓜框里的文字不应是红的

1.2.55bg $rewrite=abp-resource:
ABP AdG

! $rewrite 必须指定 $domain 并且匹配部分需要有 * 或 ||
*/gg4.xhtml$rewrite=abp-resource:blank-html,domain=vercel.app
上面的西瓜框里的页面应被替换为空白
页面框架的阴影应存在

1.2.56ug $redirect
uBO uBO 中文 AdG

/gg5.xhtml$redirect=noop.html
/gg6.xhtml$redirect=noopframe
上面的西瓜框里的页面应被替换为空白
页面框架的阴影应存在
上面的西瓜框里的页面应被替换为空白
页面框架的阴影应存在

1.2.57ug $redirect-rule
uBO uBO 中文 AdG

||vercel.app/test/data/rr.*
/rr.png$redirect-rule=32x32.png
/rr.gif$redirect-rule=1x1-transparent.gif
1.2.57
上面的西瓜框里的图片应被替换为 32*32 透明 png
1.2.57
上面的西瓜框里的图片应被替换为 1*1 透明 gif

1.2.61g $removeheader
AdG

/getHeader$removeheader=request:user-agent
上面的西瓜框里不应出现 浏览器 的 UserAgent

1.2.62ug $removeparam
uBO uBO 中文 AdG

/getHeader$removeparam
上面的西瓜框里页面文字应该是彩色的

2.0 元素规则基本语法
ABP uBO uBO 中文 AdG AdG 中文

! 无域名
##figure > blockquote > q
! 无域名放行
###noggao
#@##noggao
! 有域名
vercel.app###ggao
! 有域名放行
vercel.app##.text
vercel.app#@#.text
! 域名生效验证
pages.dev###rth
! 域名排除
~vercel.app##.dirty
! 多域名
vercel.app,pages.dev##span + strong
是广告
无域名 上面的西瓜框里的文字应被隐藏
内容
无域名放行 上面的西瓜框里的文字不应被隐藏
广告
有域名 上面的西瓜框里的文字应被隐藏
点击这里 跳转到 Cloudflare 测试不同域名
内容
有域名放行 上面的西瓜框里的文字不应被隐藏
广告
域名排除 上面的西瓜框里的文字不应被隐藏
点击这里 跳转到 Cloudflare 测试不同域名
内容广告
多域名 上面的西瓜框里的 "广告" 应被隐藏,只应有 "内容"

2.1g 元素规则域名修饰符
AdG

!2.1.2
[$domain=pages.dev]###dom
!2.1.3
[$path=abpt.html]###path
广告
[$domain] 上面的西瓜框里的文字不应被隐藏
点击这里 跳转到 Cloudflare 测试不同域名
广告
[$path] 上面的西瓜框里的文字应被隐藏
点击这里 跳转到 Cloudflare 测试不同域名

2.3.1 :has()
ABP uBO uBO 中文 AdG AdG 中文

! 通用
vercel.app#?#blockquote:has(.mymoney)
! ABP
vercel.app#?#blockquote:-abp-has(.myhoney)
! AdGuard 伪属性
vercel.app#?#blockquote[-ext-has=".mytony"]
你好
内容
你好
内容
:has() 上面应只有两个西瓜框,且均为 内容
蜂蜜
内容
蜂蜜
内容
:-abp-has() 上面应只有两个西瓜框,且均为 内容
托尼
内容
托尼
内容
[-ext-has] 上面应只有两个西瓜框,且均为 内容

2.3.2 :has-text()
ABP uBO uBO 中文 AdG AdG 中文

! 通用
vercel.app#?#blockquote:has-text(烦恼)
! 正则
vercel.app#?#blockquote:has-text(/区分\d/)
! AdGuard
vercel.app#?#blockquote:contains(滑块)
! ABP
vercel.app#?#blockquote:-abp-contains(红日)
! AdGuard 伪属性
vercel.app#?#blockquote[-ext-contains="媒体"]
烦恼
内容
烦恼
内容
:has-text() 上面应只有两个西瓜框,且均为 内容
区分1
内容
区分2
内容
:has-text(/正则/) 上面应只有两个西瓜框,且均为 内容
滑块
内容
滑块
内容
:contains() 上面应只有两个西瓜框,且均为 内容
红日
内容
红日
内容
:-abp-contains() 上面应只有两个西瓜框,且均为 内容
媒体
内容
媒体
内容
[-ext-contains] 上面应只有两个西瓜框,且均为 内容

2.3.3ug :matches-css()
uBO uBO 中文 AdG AdG 中文

! uBO 括号不应转义,AdGuard 括号必须转义

! 通用: inherit (蓝)
vercel.app#?#blockquote:matches-css(background-color: rgb\(135, 206, 235\))
vercel.app#?#blockquote:matches-css(background-color: rgb(135, 206, 235))
! 通用: js 修改内联 (灰)
vercel.app#?#blockquote:matches-css(background-color: rgb\(200, 206, 214\))
vercel.app#?#blockquote:matches-css(background-color: rgb(200, 206, 214))
! AdGuard 伪属性 (淡绿)
vercel.app#?#blockquote[-ext-matches-css="background-color: rgb\(240, 255, 240\)"]
vercel.app#?#blockquote[-ext-matches-css="background-color: rgb(240, 255, 240)"]
! 正则 (粉和橙)
vercel.app#?#blockquote:matches-css(background-color: /^rgb\(255,/)
内容
内容
内容
内容
内容
内容
如果全部支持,上面应只有一个背景为紫色的框

2.3.4ug + 2.3.5ug :matches-css-*()
uBO uBO 中文 AdG AdG 中文

! uBO 需要加引号,AdGuard 不应加引号

!2.3.4
! 通用
vercel.app#?#blockquote:matches-css-before(content: 我是广告啊)
vercel.app#?#blockquote:matches-css-before(content: "我是广告啊")
! AdGuard 伪属性
vercel.app#?#blockquote[-ext-matches-css-before="content: 我是广告呢"]
vercel.app#?#blockquote[-ext-matches-css-before="content: "我是广告呢""]
!2.3.5
! 通用
vercel.app#?#blockquote:matches-css-after(content: 我是广告哟)
vercel.app#?#blockquote:matches-css-after(content: "我是广告哟")
! AdGuard 伪属性
vercel.app#?#blockquote[-ext-matches-css-after="content: 我是广告哦"]
vercel.app#?#blockquote[-ext-matches-css-after="content: "我是广告哦""]
如果全部支持,上面应只有一个包含 "我是内容啊" 的西瓜框

2.3.6g :matches-attr()
AdG

vercel.app#?#[type=range]:matches-attr("disabled")
vercel.app#?#[type=range]:matches-attr("min"="5")
vercel.app#?#[type=range]:matches-attr("max"="/^3/")



上面的西瓜框应为空

2.3.7ug :matches-path()
uBO uBO 中文

vercel.app,pages.dev#?#:matches-path(/test) .pathexa
我是广告
上面的西瓜框里的文字应被隐藏
点击这里 跳转到 Cloudflare 测试路径不符

2.3.8u :min-text-length()
uBO uBO 中文

vercel.app#?#p.content:min-text-length(20)

我是内容

我是广告,可爱的广告,好看的广告,漂亮的广告,美丽的广告,萌萌的广告

我是内容

上面的西瓜框里应只有两个 "我是内容"

2.3.9ug :nth-ancestor()
uBO uBO 中文 AdG

vercel.app#?#[src$="up.gif"]:nth-ancestor(2)

我是内容

2.3.9
上面的西瓜框里应只有 "我是内容"

2.3.10ug :upward()
uBO uBO 中文 AdG

vercel.app#?#[src$="up2.gif"]:upward(2)
vercel.app#?#p > em:upward(.box)

我是内容

我是广告

2.3.10
如果完全支持,上面的西瓜框里应只有 "我是内容"

2.3.11u :watch-attr()
uBO uBO 中文

vercel.app#?#blockquote span:watch-attr(id):has-text(我是广告哈)
上面的西瓜框里不应有文字

2.3.12 :xpath()
ABP uBO uBO 中文 AdG

vercel.app#?##close:xpath(../../*[1])
广告
关闭
上面的西瓜框里的 "广告" 应被隐藏,只应有 "关闭"

2.3.13ug :remove()
uBO uBO 中文 AdG

vercel.app#?##remo:remove()
广告
如果支持,上面的框的背景色应为 淡紫色

2.3.14ug :style()
uBO uBO 中文

vercel.app#?##royal:style(color: royalblue !important)
你好啊
上面的西瓜框里文字应为 蓝紫色

2.3.15 + 2.3.16ug :not() :if-not()
ABP uBO uBO 中文 AdG

!2.3.15
vercel.app#?##not > blockquote:not(:has(.ok))
! ABP 需要 :-abp-has()
vercel.app#?##abpnot > blockquote:not(:-abp-has(.ok))
!2.3.16
vercel.app#?##ifnot > blockquote:if-not(.ok)
你好啊
你好啊
你好啊
:not(:has()) 上面应有两个 "你好啊" 西瓜框
你好啊
你好啊
你好啊
:if-not() 上面应有一个 "你好啊" 西瓜框
你好啊
你好啊
你好啊
:not(:-abp-has()) 上面应有两个 "你好啊" 西瓜框

2.2.4 #@?# #@#
ABP uBO uBO 中文 AdG AdG 中文

vercel.app#?#blockquote:has(.yes)
vercel.app#@?#blockquote:has(.yes)
! ABP 需要用 #@#
vercel.app#?#blockquote:-abp-has(.abpyes)
vercel.app#@#blockquote:-abp-has(.abpyes)
你好啊
#@?# 上面的西瓜框不应被隐藏
你好啊
#@# 上面的西瓜框不应被隐藏

2.2.7g + 1.2.39g #%# #@%# $jsinject
AdG AdG 中文

!1.2.39@
@@lemon399-static.pages.dev/index.html$jsinject
!2.2.7
vercel.app#%#window.ohohoh=123;
!2.2.7@
vercel.app#%#window.ohohohoh=123;
vercel.app#@%#window.ohohohoh=123;
#%# 上面的西瓜框里应有 123
点击这里 跳转到 Cloudflare 测试 $jsinject
#@%# 上面的西瓜框里不应有 123

2.2.8g + 2.2.9u #%#//scriptlet() ##+js()
uBO uBO 中文 AdG

!2.2.8
vercel.app#%#//scriptlet('noeval')
!2.2.9
vercel.app##+js(noeval-silent)
上面的西瓜框里不应有文字

2.2.10ug #$# #@$#
uBO uBO 中文 AdG AdG 中文 ABP

!2.2.10
vercel.app#$##turq { color: turquoise !important }
!2.2.10@
vercel.app#$##seag { color: seagreen !important }
vercel.app#@$##seag { color: seagreen !important }
你好啊
#$# 上面的西瓜框里文字应为 青绿色
你好啊
#@$# 上面的西瓜框里文字应为 红色

2.2.11ug #$?# #@$?#
uBO uBO 中文 AdG AdG 中文

!2.2.11
vercel.app#$?#span:contains(真的是) { display: none!important; }
!2.2.11@
vercel.app#$?#span:contains(真不是) { display: none!important; }
vercel.app#@$?#span:contains(真不是) { display: none!important; }
我真的是广告
上面的西瓜框里不应有文字
我真不是广告
上面的西瓜框里应有文字

3.1ug !#include
uBO uBO 中文 AdG AdG 中文

!#include abpti.txt
你好啊
上面的西瓜框里的文字应被隐藏

3.2@ug !#if !#endif
uBO uBO 中文 AdG AdG 中文

!#if false
/disa2.gif
!#endif
3.2@
上面的西瓜框里的图片不应被拦截

4.1 应用于 iframe

###iAmAnAdVert
lemon399-static.pages.dev###iAmAnAdVert
上面的页面里 “广告”两个字应被隐藏

4.2 应用于 Web Components

###iAmAnAdVertToo
vercel.app###iAmAnAdVertToo
###iJustAmAnAdVert
vercel.app###iJustAmAnAdVert
广告
上面的西瓜框里 “广告”两个字应被隐藏