From 5146128b084c2da1f9046a4473769b9effe6fcf2 Mon Sep 17 00:00:00 2001 From: aoguai <1340219674@qq.com> Date: Sun, 3 May 2026 13:16:44 +0800 Subject: [PATCH 01/12] =?UTF-8?q?fix(=E5=93=94=E5=93=A9=E5=93=94=E5=93=A9)?= =?UTF-8?q?:=20=E8=A7=86=E9=A2=91=E5=8D=A1=E7=89=87=E5=B9=BF=E5=91=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apps/tv.danmaku.bili.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/apps/tv.danmaku.bili.ts b/src/apps/tv.danmaku.bili.ts index f5e0d2fdc..dcacc5c0f 100644 --- a/src/apps/tv.danmaku.bili.ts +++ b/src/apps/tv.danmaku.bili.ts @@ -41,7 +41,7 @@ export default defineGkdApp({ key: 0, name: '点击广告卡片右侧菜单图标', matches: - '[parent=null][height > prev.bottom.plus(200)] >n [(((desc*="广告"||desc*="来自淘宝")&&desc*="查看")||desc$=",,轻点两下查看详情"||(desc^="【有奖调研】"&&desc.length=22))||(id*="/ad_")][visibleToUser=true] >(2,3,4) @ImageView[visibleToUser=true] < [vid^="more" || id^="tv.danmaku.bili.adbiz:id/more"][visibleToUser=true]', + '[height > prev.bottom.plus(200)] >n [(((desc*="广告"||desc*="来自淘宝")&&desc*="查看")||desc$=",,轻点两下查看详情"||(desc^="【有奖调研】"&&desc.length=22))||(id*="/ad_")][visibleToUser=true] >(2,3,4) @ImageView[visibleToUser=true] < [vid^="more" || id^="tv.danmaku.bili.adbiz:id/more"][visibleToUser=true]', snapshotUrls: [ 'https://i.gkd.li/import/12642260', // n = 2 'https://i.gkd.li/import/12705266', // n = 3 @@ -69,8 +69,9 @@ export default defineGkdApp({ 'https://i.gkd.li/i/23012670', 'https://i.gkd.li/i/23123800', 'https://i.gkd.li/i/23687196', + 'https://i.gkd.li/i/27153803', ], - excludeSnapshotUrls: ['https://i.gkd.li/i/23833031'], // 会出现按钮在底部导航栏后且visibleToUser=true的情况,需要使用 [parent=null][height > prev.bottom.plus(200)] 排除,原理是根元素的高度必须大于右侧元素(视频卡片元素)bottom+200 + excludeSnapshotUrls: ['https://i.gkd.li/i/23833031'], // 会出现按钮在底部导航栏后且visibleToUser=true的情况,需要使用 [height > prev.bottom.plus(200)] 排除,原理是根元素的高度必须大于右侧元素(视频卡片元素)bottom+200 }, { preKeys: [0], From 6787c799278b7d9290717859774905b9f903fc1d Mon Sep 17 00:00:00 2001 From: aoguai <1340219674@qq.com> Date: Sun, 3 May 2026 13:18:42 +0800 Subject: [PATCH 02/12] =?UTF-8?q?feat(QQ):=20=E5=A5=BD=E5=8F=8B=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E5=B9=BF=E5=91=8A=E5=8D=A1=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apps/com.tencent.mobileqq.ts | 63 ++++++++++++++------------------ 1 file changed, 27 insertions(+), 36 deletions(-) diff --git a/src/apps/com.tencent.mobileqq.ts b/src/apps/com.tencent.mobileqq.ts index 5b1d334c8..ebb6fdd57 100644 --- a/src/apps/com.tencent.mobileqq.ts +++ b/src/apps/com.tencent.mobileqq.ts @@ -151,29 +151,14 @@ export default defineGkdApp({ name: '分段广告-好友动态广告卡片', desc: '关闭好友动态中的广告卡片', enable: false, + activityIds: [ + 'com.qzone.reborn.feedpro.activity.QzoneFriendFeedProActivity', + '.activity.SplashActivity', + '.guild.base.QPublicFragmentActivityForMainWebActivity', + ], rules: [ { key: 0, - activityIds: [ - 'com.tencent.mobileqq.activity.SplashActivity', - 'com.qzone.reborn.feedx.activity.QZoneFriendFeedXActivity', - ], - matches: 'View[desc="广告"] + ImageView[clickable=true]', - snapshotUrls: [ - 'https://i.gkd.li/i/12847842', - 'https://i.gkd.li/i/13787345', - 'https://i.gkd.li/i/24381585', - ], - }, - { - key: 1, - activityIds: 'com.tencent.mobileqq.activity.SplashActivity', - matches: '[desc="广告 展开 按钮"] > [desc="关闭"]', - snapshotUrls: 'https://i.gkd.li/i/14138572', - }, - { - key: 3, - fastQuery: true, activityIds: [ 'com.qzone.reborn.feedpro.activity.QzoneFriendFeedProActivity', '.guild.base.QPublicFragmentActivityForMainWebActivity', @@ -185,28 +170,34 @@ export default defineGkdApp({ ], }, { - preKeys: [0, 1, 3], - fastQuery: true, - activityIds: [ - 'com.tencent.mobileqq.activity.SplashActivity', - 'com.qzone.reborn.feedx.activity.QZoneFriendFeedXActivity', - 'com.qzone.reborn.feedpro.activity.QzoneFriendFeedProActivity', - ], - anyMatches: [ - '@[clickable=true] > * > ImageView + [text="隐藏此条动态"]', - '@[clickable=true] >(1,2) ImageView + [text="关闭此条广告"]', - ], + key: 1, + activityIds: '.activity.SplashActivity', + matches: + '@[desc="更多"][clickable=true] - [desc="广告"][visibleToUser=true] - LinearLayout > [text="今天"]', + snapshotUrls: 'https://i.gkd.li/i/24381585', + }, + // 第二段 + { + key: 50, + preKeys: [0, 1], + name: '点击[关闭]此条广告', + matches: + '@[clickable=true] >(1,2) [text^="关闭"][text*="条"][text.length<10]', snapshotUrls: [ - 'https://i.gkd.li/i/13761147', - 'https://i.gkd.li/i/13849730', - 'https://i.gkd.li/i/12840889', - 'https://i.gkd.li/i/13831867', - 'https://i.gkd.li/i/14138571', 'https://i.gkd.li/i/21947698', 'https://i.gkd.li/i/24381598', 'https://i.gkd.li/i/24406932', + 'https://i.gkd.li/i/26997293', // 关闭这条 ], }, + // 第三段 + { + key: 100, + preKeys: [50], + name: '点击[直接关闭]', + matches: '[text="直接关闭"][clickable=true]', + snapshotUrls: 'https://i.gkd.li/i/26997174', + }, ], }, { From 38ed5bb36edc6aaf350a5c8051bf5b64bfdc282f Mon Sep 17 00:00:00 2001 From: aoguai <1340219674@qq.com> Date: Sun, 3 May 2026 13:19:48 +0800 Subject: [PATCH 03/12] =?UTF-8?q?feat(=E7=99=BE=E5=BA=A6=E8=B4=B4=E5=90=A7?= =?UTF-8?q?):=20=E4=BF=A1=E6=81=AF=E6=B5=81=E5=B9=BF=E5=91=8A;=20=E8=B4=B4?= =?UTF-8?q?=E5=90=A7=E5=86=85=E7=AD=BE=E5=88=B0=E5=B9=B6=E5=85=B3=E9=97=AD?= =?UTF-8?q?=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apps/com.baidu.tieba.ts | 95 +++++++++++++++++++------------------ 1 file changed, 49 insertions(+), 46 deletions(-) diff --git a/src/apps/com.baidu.tieba.ts b/src/apps/com.baidu.tieba.ts index 08c53508f..e46d1d164 100644 --- a/src/apps/com.baidu.tieba.ts +++ b/src/apps/com.baidu.tieba.ts @@ -28,14 +28,15 @@ export default defineGkdApp({ desc: '关闭首页、帖子内的广告和直播推广', enable: false, fastQuery: true, - forcedTime: 10000, + activityIds: [ + '.tblauncher.MainTabActivity', + '.pb.pb.main.PbActivity', + '.forum.ForumActivity', + ], rules: [ { key: 0, - activityIds: [ - 'com.baidu.tieba.tblauncher.MainTabActivity', - 'com.baidu.tieba.forum.ForumActivity', - ], + activityIds: ['.tblauncher.MainTabActivity', '.forum.ForumActivity'], matches: '@ImageView[clickable=true][visibleToUser=true] <(1,2) LinearLayout <4 RelativeLayout +2 RelativeLayout >2 [text="直播中"]', snapshotUrls: [ @@ -45,13 +46,9 @@ export default defineGkdApp({ }, { key: 1, - activityIds: [ - 'com.baidu.tieba.forum.ForumActivity', - 'com.baidu.tieba.pb.pb.main.PbActivity', - 'com.baidu.tieba.tblauncher.MainTabActivity', - ], matches: '@FrameLayout[clickable=true][visibleToUser=true] < LinearLayout < RelativeLayout <3 LinearLayout < RelativeLayout + LinearLayout >2 [text$="广告"]', + exampleUrls: 'https://e.gkd.li/3b2f0906-f620-4fda-a59f-334a9548836e', snapshotUrls: [ 'https://i.gkd.li/i/16595127', 'https://i.gkd.li/i/16595515', @@ -60,7 +57,7 @@ export default defineGkdApp({ }, { key: 2, - activityIds: 'com.baidu.tieba.pb.pb.main.PbActivity', + activityIds: '.pb.pb.main.PbActivity', matches: '@FrameLayout[clickable=true][visibleToUser=true] < LinearLayout < FrameLayout -(1,2) [text$="广告"]', snapshotUrls: [ @@ -70,36 +67,16 @@ export default defineGkdApp({ }, { key: 3, - activityIds: 'com.baidu.tieba.pb.pb.main.PbActivity', + activityIds: '.pb.pb.main.PbActivity', matches: '@ImageView[clickable=true][visibleToUser=true] -3 [text="直播中"]', snapshotUrls: 'https://i.gkd.li/i/16596210', }, { key: 4, - activityIds: 'com.baidu.tieba.pb.pb.main.PbActivity', - matches: - '@[clickable=true][visibleToUser=true] <(1,2) RelativeLayout <(1,4) RelativeLayout[childCount>1] >(3,4) [text="广告"]', - snapshotUrls: [ - 'https://i.gkd.li/i/16595124', - 'https://i.gkd.li/i/16596297', - 'https://i.gkd.li/i/24541094', - ], - excludeSnapshotUrls: 'https://i.gkd.li/i/16632851', // [childCount>1] 防止误触] - }, - { - key: 5, - activityIds: [ - 'com.baidu.tieba.pb.pb.main.PbActivity', - 'com.baidu.tieba.forum.ForumActivity', - 'com.baidu.tieba.tblauncher.MainTabActivity', - ], matches: - '@FrameLayout[clickable=true][visibleToUser=true] <(3,4) RelativeLayout + FrameLayout >(7,8,9) [text="广告"]', + 'ImageView[index=parent.childCount.minus(1)] < @[vid="obfuscated"][clickable=true] -n * < RelativeLayout + FrameLayout >n [text="广告"]', snapshotUrls: [ - 'https://i.gkd.li/i/16595301', - 'https://i.gkd.li/i/16596195', - 'https://i.gkd.li/i/16596775', 'https://i.gkd.li/i/21524232', 'https://i.gkd.li/i/21529443', 'https://i.gkd.li/i/21556758', @@ -108,24 +85,50 @@ export default defineGkdApp({ ], }, { + key: 5, + activityIds: '.pb.pb.main.PbActivity', + matches: + 'ImageView[childCount=0] < @FrameLayout[clickable=true][childCount=1][visibleToUser=true] <2 RelativeLayout + RelativeLayout >3 [text="广告"]', + snapshotUrls: 'https://i.gkd.li/i/24541094', + }, + // 第二段 + { + key: 50, preKeys: [0, 1, 2, 3, 4, 5], - key: 10, - activityIds: [ - 'com.baidu.tieba.tblauncher.MainTabActivity', - 'com.baidu.tieba.pb.pb.main.PbActivity', - 'com.baidu.tieba.forum.ForumActivity', - ], - anyMatches: [ + name: '点击[不感兴趣]', // 直接结束, 无需第三段 + matches: '@View[clickable=true][visibleToUser=true] - [text^="选择不喜欢"]', - '[text="已经看过"][clickable=true]', - ], snapshotUrls: [ 'https://i.gkd.li/i/16595134', 'https://i.gkd.li/i/16595511', 'https://i.gkd.li/i/16595113', + ], + }, + { + key: 51, + preKeys: [0, 1, 2, 3, 4, 5], + name: '选一个[理由]', + matches: + '[text="已经看过" || text="广告重复" || text="不感兴趣"][clickable=true]', + snapshotUrls: [ 'https://i.gkd.li/i/26634661', // [已经看过] ], }, + { + key: 52, + preKeys: [0, 1, 2, 3, 4, 5], + name: '选[不喜欢]该直播', + matches: '@[clickable=true] >3 [text="不喜欢"]', + snapshotUrls: 'https://i.gkd.li/i/27052244', // [不喜欢] 直播 + }, + // 第三段 + { + key: 100, + preKeys: [51, 52], + name: '点击[确定]', + matches: '@[clickable=true] - [text^="已选"][text$="理由"]', + snapshotUrls: 'https://i.gkd.li/i/26934788', + }, ], }, { @@ -306,14 +309,13 @@ export default defineGkdApp({ key: 0, name: '贴吧页签到', activityIds: 'com.baidu.tieba.forum.ForumActivity', - anyMatches: [ - '@TextView[text="签到"][visibleToUser=true] <3 View < View <2 View < View < WebView < WebView < FrameLayout < ViewGroup <2 FrameLayout < FrameLayout < [id="android:id/content"]', - '@TextView[text="签到"][visibleToUser=true] <5 View < View <2 View < WebView < WebView < FrameLayout < ViewGroup <2 FrameLayout < FrameLayout < [id="android:id/content"]', - ], + matches: + '@TextView[text="签到"][visibleToUser=true] Date: Sun, 3 May 2026 13:20:14 +0800 Subject: [PATCH 04/12] =?UTF-8?q?feat(=E9=97=B2=E9=B1=BC):=20=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E6=9F=A5=E7=9C=8B=E5=8E=9F=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apps/com.taobao.idlefish.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/apps/com.taobao.idlefish.ts b/src/apps/com.taobao.idlefish.ts index 14e8710a5..4fe76ebbd 100644 --- a/src/apps/com.taobao.idlefish.ts +++ b/src/apps/com.taobao.idlefish.ts @@ -113,12 +113,17 @@ export default defineGkdApp({ name: '功能类-自动查看原图', desc: '浏览图片时自动切换至原图模式', enable: false, - activityIds: + activityIds: [ + 'com.idlefish.flutterbridge.flutterboost.boost.FishFlutterBoostTransparencyActivity', 'com.idlefish.flutterbridge.flutterboost.boost.FishFlutterBoostActivity', + ], rules: [ { matches: '[desc="查看原图"][visibleToUser=true]', - snapshotUrls: 'https://i.gkd.li/i/15463399', + snapshotUrls: [ + 'https://i.gkd.li/i/15463399', + 'https://i.gkd.li/i/27207770', + ], }, ], }, From ff37885a004a2b081858c9ee98f25777e3264b5a Mon Sep 17 00:00:00 2001 From: aoguai <1340219674@qq.com> Date: Sun, 3 May 2026 13:20:51 +0800 Subject: [PATCH 05/12] =?UTF-8?q?fix(YouTube):=20=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E7=BF=BB=E8=AF=91=E8=AF=84=E8=AE=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apps/com.google.android.youtube.ts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/apps/com.google.android.youtube.ts b/src/apps/com.google.android.youtube.ts index f40e3f867..5319b4449 100644 --- a/src/apps/com.google.android.youtube.ts +++ b/src/apps/com.google.android.youtube.ts @@ -96,14 +96,16 @@ export default defineGkdApp({ activityIds: 'com.google.android.apps.youtube.app.watchwhile.MainActivity', matches: - '@Button[desc^="翻译成"||desc^="Translate to"][clickable=true][visibleToUser=true] -n [desc^="@"] <<3 ViewGroup -n * < [vid="results" || vid="section_list"]', + '@[desc^="翻译成"||desc^="Translate to"][visibleToUser=true] 3] <<(2,4) ViewGroup Date: Sun, 3 May 2026 13:21:30 +0800 Subject: [PATCH 06/12] =?UTF-8?q?docs(=E6=94=AF=E4=BB=98=E5=AE=9D):=20?= =?UTF-8?q?=E8=A1=A5=E5=85=85=E5=BF=AB=E7=85=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apps/com.eg.android.AlipayGphone.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/apps/com.eg.android.AlipayGphone.ts b/src/apps/com.eg.android.AlipayGphone.ts index 2aba36161..3d96652c1 100644 --- a/src/apps/com.eg.android.AlipayGphone.ts +++ b/src/apps/com.eg.android.AlipayGphone.ts @@ -43,6 +43,7 @@ export default defineGkdApp({ 'https://i.gkd.li/i/20684144', 'https://i.gkd.li/i/23455533', 'https://i.gkd.li/i/25000603', + 'https://i.gkd.li/i/27007114', ], excludeSnapshotUrls: ['https://i.gkd.li/i/19478718'], }, From 9b02db7d5b25f30d83b97f986a8767f77d294d42 Mon Sep 17 00:00:00 2001 From: aoguai <1340219674@qq.com> Date: Sun, 3 May 2026 13:22:32 +0800 Subject: [PATCH 07/12] =?UTF-8?q?refactor:=20=E5=85=A8=E5=B1=80=E8=A7=84?= =?UTF-8?q?=E5=88=99=E6=B7=BB=E5=8A=A0=20forcedTime?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/globalGroups.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/globalGroups.ts b/src/globalGroups.ts index c760f86e8..a4c961f10 100644 --- a/src/globalGroups.ts +++ b/src/globalGroups.ts @@ -55,6 +55,7 @@ export default defineGkdGlobalGroups([ matchRoot: true, actionMaximum: 2, matchTime: 9000, + forcedTime: 9000, fastQuery: true, resetMatch: 'app', actionMaximumKey: 0, @@ -124,6 +125,7 @@ export default defineGkdGlobalGroups([ enable: false, order: FULLSCREEN_AD, matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, rules: [ @@ -218,6 +220,7 @@ export default defineGkdGlobalGroups([ enable: false, order: PARTIAL_AD, matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, rules: [ @@ -286,6 +289,7 @@ export default defineGkdGlobalGroups([ disableIfAppGroupMatch: '更新提示', actionMaximum: 2, matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, actionMaximumKey: 0, @@ -368,6 +372,7 @@ export default defineGkdGlobalGroups([ disableIfAppGroupMatch: '评价提示', actionMaximum: 2, matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, actionMaximumKey: 0, @@ -415,6 +420,7 @@ export default defineGkdGlobalGroups([ order: NOTIFICATION_PROMPT, disableIfAppGroupMatch: '通知提示', matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, rules: [ @@ -462,6 +468,7 @@ export default defineGkdGlobalGroups([ disableIfAppGroupMatch: '青少年模式', actionMaximum: 2, matchTime: 10000, + forcedTime: 10000, resetMatch: 'app', actionCdKey: 0, actionMaximumKey: 0, @@ -509,6 +516,7 @@ export default defineGkdGlobalGroups([ order: YOUTH_MODE, disableIfAppGroupMatch: '权限提示', matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, rules: [ @@ -555,6 +563,7 @@ export default defineGkdGlobalGroups([ order: LOCATION_PROMPT, disableIfAppGroupMatch: '定位提示', matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, rules: [ From 4e44a8eda73f85b406cfc54bc5e097d857c3a12e Mon Sep 17 00:00:00 2001 From: aoguai <1340219674@qq.com> Date: Sun, 3 May 2026 13:40:23 +0800 Subject: [PATCH 08/12] =?UTF-8?q?refactor:=20=E4=BC=98=E5=85=88=E9=80=89?= =?UTF-8?q?=E6=8B=A9=20clickable=3Dtrue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apps/com.autonavi.minimap.ts | 6 +++--- src/apps/com.eg.android.AlipayGphone.ts | 2 +- src/apps/com.jingdong.app.mall.ts | 2 +- src/apps/com.taobao.idlefish.ts | 2 +- src/apps/com.xyhui.ts | 2 +- src/globalGroups.ts | 4 ++-- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/apps/com.autonavi.minimap.ts b/src/apps/com.autonavi.minimap.ts index 1f9cff75b..c777789d4 100644 --- a/src/apps/com.autonavi.minimap.ts +++ b/src/apps/com.autonavi.minimap.ts @@ -64,7 +64,7 @@ export default defineGkdApp({ key: 2, name: '加油页面优惠券弹窗', matches: - '@ImageView < [desc="关闭"][clickable=true] * >n View[text="立即领取"]', + 'ImageView < @[desc="关闭"][clickable=true] * >n View[text="立即领取"]', snapshotUrls: ['https://i.gkd.li/import/12642857'], }, { @@ -97,7 +97,7 @@ export default defineGkdApp({ fastQuery: true, activityIds: 'com.autonavi.map.activity.NewMapActivity', matches: - 'ViewGroup[desc="图片"][childCount=2] > ViewGroup[clickable=true] > @ImageView[childCount=0] < @ViewGroup[clickable=true] > ImageView[childCount=0] < View[text^="高德购票" && text$="优惠"] < View[text^="高德购票" && text$="优惠"] < [text="近期不再提醒我"]', + '[text="添加会员小组件"] < View +3 View[childCount=2] > @[text="近期不再提醒我"][clickable=true]', snapshotUrls: 'https://i.gkd.li/i/16427922', }, { diff --git a/src/apps/com.jingdong.app.mall.ts b/src/apps/com.jingdong.app.mall.ts index 9538a8a9d..d9108d99c 100644 --- a/src/apps/com.jingdong.app.mall.ts +++ b/src/apps/com.jingdong.app.mall.ts @@ -101,7 +101,7 @@ export default defineGkdApp({ }, { matches: - '@ImageView < FrameLayout[clickable=true] + TextView[text^="打开系统通知"]', + 'ImageView < @FrameLayout[clickable=true] + TextView[text^="打开系统通知"]', snapshotUrls: 'https://i.gkd.li/import/12839865', }, ], diff --git a/src/apps/com.taobao.idlefish.ts b/src/apps/com.taobao.idlefish.ts index 4fe76ebbd..e05ab3435 100644 --- a/src/apps/com.taobao.idlefish.ts +++ b/src/apps/com.taobao.idlefish.ts @@ -119,7 +119,7 @@ export default defineGkdApp({ ], rules: [ { - matches: '[desc="查看原图"][visibleToUser=true]', + matches: '@[desc="查看原图"][clickable=true][visibleToUser=true]', snapshotUrls: [ 'https://i.gkd.li/i/15463399', 'https://i.gkd.li/i/27207770', diff --git a/src/apps/com.xyhui.ts b/src/apps/com.xyhui.ts index 2667d9356..1ef48305c 100644 --- a/src/apps/com.xyhui.ts +++ b/src/apps/com.xyhui.ts @@ -50,7 +50,7 @@ export default defineGkdApp({ fastQuery: true, activityIds: 'com.bytedance.sdk.openadsdk.stub.activity.Stub_Standard_Portrait_Activity', - matches: 'View[clickable=true] < FrameLayout +4 * >2 [text="反馈"]', + matches: '@View[clickable=true] < FrameLayout +4 * >2 [text="反馈"]', snapshotUrls: 'https://i.gkd.li/i/13259183', }, { diff --git a/src/globalGroups.ts b/src/globalGroups.ts index a4c961f10..c8f98f0d7 100644 --- a/src/globalGroups.ts +++ b/src/globalGroups.ts @@ -132,12 +132,12 @@ export default defineGkdGlobalGroups([ { key: 0, name: '快手SDK-类型1', - matches: `[text="广告"] <n ViewGroup[childCount=1][clickable=true] > ImageView${COMMON_PREFIX}`, + matches: `[text="广告"] <n @ViewGroup[childCount=1][clickable=true] > ImageView${COMMON_PREFIX}`, }, { key: 1, name: '快手SDK-类型2', - matches: `[text="广告"] <n ViewGroup[childCount=4][clickable=true] > [text="跳过"]${COMMON_PREFIX}`, + matches: `[text="广告"] <n @ViewGroup[childCount=4][clickable=true] > [text="跳过"]${COMMON_PREFIX}`, }, { key: 2, From 90391d46c1d63d17d7b47775ee68ce3f8a05b559 Mon Sep 17 00:00:00 2001 From: aoguai <1340219674@qq.com> Date: Sun, 3 May 2026 13:52:21 +0800 Subject: [PATCH 09/12] =?UTF-8?q?refactor:=20=E5=85=A8=E5=B1=80=E8=A7=84?= =?UTF-8?q?=E5=88=99-=E5=BF=AB=E9=80=9F=E6=9F=A5=E8=AF=A2=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/globalGroups.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/globalGroups.ts b/src/globalGroups.ts index c8f98f0d7..9541c01ba 100644 --- a/src/globalGroups.ts +++ b/src/globalGroups.ts @@ -132,17 +132,20 @@ export default defineGkdGlobalGroups([ { key: 0, name: '快手SDK-类型1', - matches: `[text="广告"] <n @ViewGroup[childCount=1][clickable=true] > ImageView${COMMON_PREFIX}`, + fastQuery: true, + matches: `ImageView${COMMON_PREFIX} < @ViewGroup[childCount=1][clickable=true] <n [text="广告"]`, }, { key: 1, name: '快手SDK-类型2', - matches: `[text="广告"] <n @ViewGroup[childCount=4][clickable=true] > [text="跳过"]${COMMON_PREFIX}`, + fastQuery: true, + matches: `[text="跳过"]${COMMON_PREFIX} < @ViewGroup[childCount=4][clickable=true] <n [text="广告"]`, }, { key: 2, name: '快手SDK-类型3', - matches: `[text="广告"] <n ImageView${COMMON_PREFIX}`, + fastQuery: true, + matches: `@ImageView${COMMON_PREFIX} <n [text="广告"]`, snapshotUrls: ['https://i.gkd.li/i/13625303'], }, { @@ -513,7 +516,7 @@ export default defineGkdGlobalGroups([ name: '权限提示', desc: '! 该规则会自动拒绝 APP 包括但不限于蓝牙、剪切板、通讯录、悬浮窗权限申请弹窗提示,如果有影响请关闭', enable: false, - order: YOUTH_MODE, + order: PERMISSION_PROMPT, disableIfAppGroupMatch: '权限提示', matchTime: 10000, forcedTime: 10000, From 23ee61e44fc34d5743432ca22339a6d766e4c717 Mon Sep 17 00:00:00 2001 From: aoguai <1340219674@qq.com> Date: Sun, 3 May 2026 14:32:00 +0800 Subject: [PATCH 10/12] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E8=A7=84?= =?UTF-8?q?=E5=88=99=E5=B9=B6=E5=90=AF=E7=94=A8=E5=BF=AB=E9=80=9F=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apps/com.autonavi.minimap.ts | 4 ++-- src/apps/com.eg.android.AlipayGphone.ts | 4 ++-- src/apps/com.google.android.documentsui.ts | 1 + src/apps/com.google.android.gm.ts | 8 +++++--- src/apps/com.gotokeep.keep.ts | 3 +++ src/apps/com.greenpoint.android.mc10086.activity.ts | 1 + src/apps/com.intsig.camscanner.ts | 1 + src/apps/com.miui.player.ts | 2 +- src/apps/com.smile.gifmaker.ts | 4 +++- src/apps/com.taobao.taobao.ts | 6 ++---- src/apps/com.tencent.mobileqq.ts | 1 + src/apps/com.zhaopin.social.ts | 1 + src/apps/com.zhihu.android.ts | 2 +- src/apps/com.zmzx.college.search.ts | 1 + src/apps/me.ele.ts | 3 +-- 15 files changed, 26 insertions(+), 16 deletions(-) diff --git a/src/apps/com.autonavi.minimap.ts b/src/apps/com.autonavi.minimap.ts index c777789d4..e72582e2f 100644 --- a/src/apps/com.autonavi.minimap.ts +++ b/src/apps/com.autonavi.minimap.ts @@ -71,7 +71,7 @@ export default defineGkdApp({ key: 3, fastQuery: true, matches: - '@ViewGroup[clickable=true] > View[visibleToUser=true][text^="关闭"] < View[text^="关闭"][visibleToUser=true] < [visibleToUser=true][text="关闭"] < [text="关闭"][visibleToUser=true] <3 @[childCount=0][text="同意"] <3 @[text="同意"][childCount=0] <(1,3) [childCount!=null][text$="用" || text$="收下" || text*="立减"] <(1,3) [text$="用" || text$="收下" || text*="立减"][childCount!=null] <(1,2) [visibleToUser=true][text*="消息通知" || text*="系统通知"] <(1,2) [text*="消息通知" || text*="系统通知"][visibleToUser=true] < @View[clickable=true][childCount=1][text=""] > Image[childCount=0][text=""] < @View[clickable=true][childCount=1][text=""] > Image[text=""][childCount=0] <2 [visibleToUser=true][text*="立即续费"] <2 [text*="立即续费"][visibleToUser=true] < Date: Sun, 3 May 2026 14:53:00 +0800 Subject: [PATCH 11/12] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E5=BC=80?= =?UTF-8?q?=E5=B1=8F=E5=B9=BF=E5=91=8A=E5=85=A8=E5=B1=80=E8=A7=84=E5=88=99?= =?UTF-8?q?=E5=B9=B6=E5=90=AF=E7=94=A8=E5=BF=AB=E9=80=9F=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将开屏广告规则拆分为“快速路径”与“兜底路径”两部分。 - 优先使用 text 和 vid 锚点触发 fastQuery,显著提升匹配响应速度。 - 增加延迟 1000ms 的兜底规则,确保 desc 和宽泛正则匹配场景不发生回归。 - 设置 priorityTime 权重,防止启动阶段被其他普通全局规则抢占。 - 提取公共排除项与快照链接为常量,优化代码逻辑结构。 --- src/globalGroups.ts | 70 +++++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 15 deletions(-) diff --git a/src/globalGroups.ts b/src/globalGroups.ts index 9541c01ba..e1c174e27 100644 --- a/src/globalGroups.ts +++ b/src/globalGroups.ts @@ -36,6 +36,39 @@ const uniqueAppIdsUP = new Set([ const COMMON_PREFIX = '[name!$=".CheckBox"][name!$=".EditText"][name!$=".ProgressBar"][childCount=0][visibleToUser=true][height>0&&width>0&&width<500&&height<300][top>0&&left>0]'; +// 开屏广告拆成“快速锚点 + 原规则兜底”:优先使用可 fastQuery 的 text/vid 定位, +// 再复用旧的宽泛规则覆盖 desc、正则 vid 等无法快速查询的场景。 +const OPEN_AD_TIME_EXCLUDES = + '[!(text~="([01]?[0-9]|2[0-3])[::][0-5][0-9]")][!(desc~="([01]?[0-9]|2[0-3])[::][0-5][0-9]")]'; +const OPEN_AD_TEXT_SUFFIX = `${COMMON_PREFIX}[text.length<=6][(text~="(?is)跳[\\\\s]*过[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||text~="(?is)跳[\\\\s]*過[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||text~="(?is).*skip.*")]${OPEN_AD_TIME_EXCLUDES}`; +const OPEN_AD_SKIP_VID_SUFFIX = `${COMMON_PREFIX}[vid~="(?is).*skip.*"]${OPEN_AD_TIME_EXCLUDES}`; +const OPEN_AD_COUNT_DOWN_VID_SUFFIX = `${COMMON_PREFIX}[(vid~="(?is).*count.*"&&vid~="(?is).*down.*"&&!(vid~="(?is).*load.*")&&!(vid~="(?is).*hour.*")&&!(vid~="(?is).*minute.*")&&!(vid~="(?is).*timing.*")&&!(vid~="(?is).*add.*")&&!(vid~="(?is).*ead.*"))]${OPEN_AD_TIME_EXCLUDES}`; +// 这里必须使用 vid 精确匹配作为选择器首个条件,才能命中文档要求的 fastQuery 格式。 +const OPEN_AD_FAST_SKIP_VIDS = + '[vid="tt_splash_skip_btn"||vid="btn_skip"||vid="skip_btn"||vid="skip_button"||vid="skipButton"||vid="ad_skip"||vid="ad_skip_btn"||vid="splash_skip"||vid="splash_skip_btn"||vid="tme_ad_skip_button"||vid="skip_ad_button"||vid="ksad_splash_skip_view"||vid="ksad_skip_view"]'; +const OPEN_AD_FAST_COUNT_DOWN_VIDS = + '[vid="count_down"||vid="count_down_view"||vid="countDown"||vid="countDownView"||vid="gdt_count_down_view"||vid="GdtCountDownView"||vid="ui_count_down"]'; +// 兜底规则保持旧主规则的匹配表达式,避免只优化快速路径导致 desc/宽泛 vid 场景回归。 +const OPEN_AD_FALLBACK_MATCHES = `${COMMON_PREFIX}[(text.length<=6&&(text~="(?is)跳[\\\\s]*过[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||text~="(?is)跳[\\\\s]*過[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||text~="(?is).*skip.*"))||id~="(?is).*tt_splash_skip_btn"||vid~="(?is).*skip.*"||(vid~="(?is).*count.*"&&vid~="(?is).*down.*"&&!(vid~="(?is).*load.*")&&!(vid~="(?is).*hour.*")&&!(vid~="(?is).*minute.*")&&!(vid~="(?is).*timing.*")&&!(vid~="(?is).*add.*")&&!(vid~="(?is).*ead.*"))||desc~="(?is)跳[\\\\s]*过[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||desc~="(?is)跳[\\\\s]*過[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||desc~="(?is).*skip.*"]${OPEN_AD_TIME_EXCLUDES}`; +const OPEN_AD_TEXT_EXCLUDE_MATCH = + '([text*="搜索" || text="历史记录" || text$="在搜"][text.length>3 && text.length<7][visibleToUser=true]) || ([text="设置" || text="退款详情" || text="Submit" || text*="阅读并同意" || text$="登录"][visibleToUser=true])'; +// 快速规则和兜底规则共用旧排除条件,保证优化前后的误触保护一致。 +const OPEN_AD_EXCLUDE_MATCHES = [ + OPEN_AD_TEXT_EXCLUDE_MATCH, + '[id~="(?is).*search.*"] < * > [(id~="(?is).*clear.*")||(id~="(?is).*close.*")||(id~="(?is).*back.*")||(text~="(?is).*取消.*")][height>0&&width>0][top>0&&left>0]', + '[name!$=".EditText"] < * > [(id~="(?is).*clear.*")||(id~="(?is).*close.*")||(id~="(?is).*back.*")||(text~="(?is).*取消.*")][height>0&&width>0][top>0&&left>0]', +]; +const OPEN_AD_EXCLUDE_SNAPSHOT_URLS = [ + // 避免误触 + 'https://i.gkd.li/i/17108010', // text!="帮助" + 'https://i.gkd.li/i/18265000', // text!="取消" + 'https://i.gkd.li/i/19580951', // text="退款详情" + 'https://i.gkd.li/i/19952277', // text="Submit" + 'https://i.gkd.li/i/20946730', // text="设置" + 'https://i.gkd.li/i/20949002', // vid!~="(?is).*video.*" + 'https://i.gkd.li/i/22634992', // text*="登录" +]; + const NEGATION_PART_RULE_TEXT = `${COMMON_PREFIX}[(((text^="不"||text^="现在不要")&&text$="谢谢")||text$="不感兴趣"||text="与我无关"||text="关闭此广告"||text="关闭该广告"||text="關閉此廣告"||text="没兴趣"||text="否"||text="关闭"||text~="跳[\\\\s]+过"||text~="跳[\\\\s]+過"||text="关闭按钮"||text="我没空"||text="不开启"||text="暂时不用"||text="暂时不要"||text="我已知晓"||text="不用了"||text="本次忽略"||text="考虑一下"||text="考慮一下"||text="先不了"||text="不允许"||text^="不了"||text^="不再"||(text^="稍后"&&text!="稍后再看")||text^="忽略"||text^="暂不"||text^="放弃"||text^="放棄"||text^="取消"||text$="再说"||text$="拒绝"||text$="再想想"||text$="知道了"||text$="稍后提醒我"||text$="稍後提醒我"||((text^="不"||text^="現在不要")&&text$="謝謝")||text="關閉"||text="關閉按鈕"||text="我已知曉"||text="不開啟"||text$="再說"||text$="拒絕"||text^="暫不"||text~="(?is)close.*"||text~="(?is)not now.*"||text~="(?is)Ignore.*"||text~="(?is)cancel.*"||text~="(?is).*later"||text~="(?is).*refuse"||text~="(?is).*i see")&&(text!*="取消全部")&&(text!*="取消订单")&&text.length<=7]`; const NEGATION_PART_RULE_DESC = `${COMMON_PREFIX}[(((desc^="不"||desc^="现在不要")&&desc$="谢谢")||desc$="不感兴趣"||desc="与我无关"||desc="关闭此广告"||desc="关闭该广告"||desc="關閉此廣告"||desc="没兴趣"||desc="否"||desc="关闭"||desc~="跳[\\\\s]+过"||desc~="跳[\\\\s]+過"||desc="关闭按钮"||desc="我没空"||desc="不开启"||desc="暂时不用"||desc="暂时不要"||desc="我已知晓"||desc="不用了"||desc="本次忽略"||desc="考虑一下"||desc="考慮一下"||desc="先不了"||desc="不允许"||desc^="不了"||desc^="不再"||(desc^="稍后"&&desc!="稍后再看")||desc^="忽略"||desc^="暂不"||desc^="放弃"||desc^="放棄"||desc^="取消"||desc$="再说"||desc$="拒绝"||desc$="再想想"||desc$="知道了"||desc$="稍后提醒我"||desc$="稍後提醒我"||((desc^="不"||desc^="現在不要")&&desc$="謝謝")||desc="關閉"||desc="關閉按鈕"||desc="我已知曉"||desc="不開啟"||desc$="再說"||desc$="拒絕"||desc^="暫不"||desc~="(?is)close.*"||desc~="(?is)not now.*"||desc~="(?is)Ignore.*"||desc~="(?is)cancel.*"||desc~="(?is).*later"||desc~="(?is).*refuse"||desc~="(?is).*i see")&&(desc!*="取消全部")&&(desc!*="取消订单")&&desc.length<=7]`; const NEGATION_PART_RULE_BUTTON = `${COMMON_PREFIX}[(vid~="(?is).*dismiss.*"||vid~="(?is).*iv.*"||vid~="(?is).*guide.*"||vid~="(?is).*alert"||vid~="(?is).*notific.*"||vid~="(?is).*dialog.*"||vid~="(?is).*btn.*"||vid~="(?is).*ad.*"||vid~="(?is).*ab.*"||vid~="(?is).*update.*")&&(vid~="(?is).*close.*"||vid~="(?is).*delete.*"||vid~="(?is).*cancel.*"||vid~="(?is).*cancle.*"||vid~="(?is).*exit.*")||vid~="(?is)close.*"||vid~="(?is)ab.*"||vid~="(?is)closeIv.*"||vid~="(?is)ivDelete.*"||vid~="(?is)deleteIv.*"||vid~="(?is)iv_close_bt.*"||vid~="(?is).*_close"||text=""||desc=""||text="×"||desc="×"||text="✕"||desc="✕"||text="퀺"||desc="퀺"||text=""||desc=""||text=""||desc=""||text=""||desc=""]`; @@ -56,28 +89,26 @@ export default defineGkdGlobalGroups([ actionMaximum: 2, matchTime: 9000, forcedTime: 9000, + // 开屏阶段保持优先级,减少启动窗口内被普通全局规则抢占的概率。 + priorityTime: 9000, fastQuery: true, resetMatch: 'app', actionMaximumKey: 0, rules: [ { key: 0, - excludeMatches: [ - '([text*="搜索" || text="历史记录" || text$="在搜"][text.length>3 && text.length<7][visibleToUser=true]) || ([text="设置" || text="退款详情" || text="Submit" || text*="阅读并同意" || text$="登录"][visibleToUser=true])', - '[id~="(?is).*search.*"] < * > [(id~="(?is).*clear.*")||(id~="(?is).*close.*")||(id~="(?is).*back.*")||(text~="(?is).*取消.*")][height>0&&width>0][top>0&&left>0]', - '[name!$=".EditText"] < * > [(id~="(?is).*clear.*")||(id~="(?is).*close.*")||(id~="(?is).*back.*")||(text~="(?is).*取消.*")][height>0&&width>0][top>0&&left>0]', - ], - matches: `${COMMON_PREFIX}[(text.length<=6&&(text~="(?is)跳[\\\\s]*过[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||text~="(?is)跳[\\\\s]*過[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||text~="(?is).*skip.*"))||id~="(?is).*tt_splash_skip_btn"||vid~="(?is).*skip.*"||(vid~="(?is).*count.*"&&vid~="(?is).*down.*"&&!(vid~="(?is).*load.*")&&!(vid~="(?is).*hour.*")&&!(vid~="(?is).*minute.*")&&!(vid~="(?is).*timing.*")&&!(vid~="(?is).*add.*")&&!(vid~="(?is).*ead.*"))||desc~="(?is)跳[\\\\s]*过[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||desc~="(?is)跳[\\\\s]*過[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||desc~="(?is).*skip.*"][!(text~="([01]?[0-9]|2[0-3])[::][0-5][0-9]")][!(desc~="([01]?[0-9]|2[0-3])[::][0-5][0-9]")]`, - excludeSnapshotUrls: [ - // 避免误触 - 'https://i.gkd.li/i/17108010', // text!="帮助" - 'https://i.gkd.li/i/18265000', // text!="取消" - 'https://i.gkd.li/i/19580951', // text="退款详情" - 'https://i.gkd.li/i/19952277', // text="Submit" - 'https://i.gkd.li/i/20946730', // text="设置" - 'https://i.gkd.li/i/20949002', // vid!~="(?is).*video.*" - 'https://i.gkd.li/i/22634992', // text*="登录" + name: '快速查询', + excludeMatches: OPEN_AD_EXCLUDE_MATCHES, + // anyMatches 从可快速查询的 text/vid 锚点开始,再追加旧规则的尺寸与文本校验。 + anyMatches: [ + `[text^="跳"]${OPEN_AD_TEXT_SUFFIX}`, + `[text*="skip"]${OPEN_AD_TEXT_SUFFIX}`, + `[text*="Skip"]${OPEN_AD_TEXT_SUFFIX}`, + `[text*="SKIP"]${OPEN_AD_TEXT_SUFFIX}`, + `${OPEN_AD_FAST_SKIP_VIDS}${OPEN_AD_SKIP_VID_SUFFIX}`, + `${OPEN_AD_FAST_COUNT_DOWN_VIDS}${OPEN_AD_COUNT_DOWN_VID_SUFFIX}`, ], + excludeSnapshotUrls: OPEN_AD_EXCLUDE_SNAPSHOT_URLS, }, { key: 1, @@ -115,6 +146,15 @@ export default defineGkdGlobalGroups([ 'https://i.gkd.li/i/21617612', ], }, + { + key: 3, + name: '兜底查询', + // 延迟执行宽泛正则兜底,让前面的 fastQuery 规则先响应常见开屏按钮。 + matchDelay: 1000, + excludeMatches: OPEN_AD_EXCLUDE_MATCHES, + matches: OPEN_AD_FALLBACK_MATCHES, + excludeSnapshotUrls: OPEN_AD_EXCLUDE_SNAPSHOT_URLS, + }, ], apps: diabledAppIds.map((id) => ({ id, enable: false })), }, From 4bf01c45e0ef373a92fd3b8c086679e022661f2b Mon Sep 17 00:00:00 2001 From: aoguai <1340219674@qq.com> Date: Sun, 3 May 2026 15:35:21 +0800 Subject: [PATCH 12/12] =?UTF-8?q?refactor:=20=E4=BC=98=E5=8C=96=E5=85=A8?= =?UTF-8?q?=E5=B1=80=E8=A7=84=E5=88=99=E5=B9=B6=E5=90=8C=E6=AD=A5=E7=A7=BB?= =?UTF-8?q?=E9=99=A4=E5=BA=94=E7=94=A8=E5=86=97=E4=BD=99=E8=A7=84=E5=88=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 改进 `globalGroups` 中开屏广告、更新提示及否定操作的文本与 vid 匹配逻辑,提升识别精度。 - 新增腾讯广告、快手 SDK、字节 SDK、京东广告及青少年模式的全局识别规则,增强通用性。 - 移除 `com.xyhui.ts` 中已被全局规则覆盖的冗余广告规则,简化应用配置并降低维护成本。 --- src/apps/com.xyhui.ts | 86 ----------------------- src/globalGroups.ts | 159 ++++++++++++++++++++++++++++++------------ 2 files changed, 115 insertions(+), 130 deletions(-) diff --git a/src/apps/com.xyhui.ts b/src/apps/com.xyhui.ts index 1ef48305c..079095dda 100644 --- a/src/apps/com.xyhui.ts +++ b/src/apps/com.xyhui.ts @@ -10,40 +10,6 @@ export default defineGkdApp({ desc: '关闭各类全屏弹窗广告', enable: false, rules: [ - { - key: 1, - name: '腾讯广告', - fastQuery: true, - activityIds: [ - 'com.xyhui.start.PUMainActivity', - 'com.xyhui.start.LoadingActivity', - '.lut.act.LutMainActivity', - ], - matches: - '@ImageView[childCount=0][text=null][desc=null][id=null][visibleToUser=true][width<90 && height<90] < FrameLayout[childCount=1][text=null][desc=null][id=null] <2 FrameLayout[childCount=5] + FrameLayout[childCount=2] > [text^="立即" || text$="详情" || text^="了解" || text="去逛逛" || text="去微信看看" || text$="应用" || text="进入小程序" || text="领取优惠" || text="跳转微信"]', - snapshotUrls: [ - 'https://i.gkd.li/i/14472097', - 'https://i.gkd.li/i/13695488', - 'https://i.gkd.li/i/23325238', - ], - }, - { - key: 2, - name: '快手广告', - fastQuery: true, - activityIds: [ - 'com.xyhui.start.PUMainActivity', - 'com.xyhui.start.LoadingActivity', - ], - matches: - 'ImageView < @ViewGroup[clickable=true] < * <2 * +n * >(1,3) [text="广告"]', - exampleUrls: 'https://e.gkd.li/1d51a37a-0444-4850-983c-3646b494204a', - snapshotUrls: [ - 'https://i.gkd.li/i/16837806', - 'https://i.gkd.li/i/13259196', - 'https://i.gkd.li/i/13259198', - ], - }, { key: 3, name: '字节广告', @@ -53,14 +19,6 @@ export default defineGkdApp({ matches: '@View[clickable=true] < FrameLayout +4 * >2 [text="反馈"]', snapshotUrls: 'https://i.gkd.li/i/13259183', }, - { - key: 4, - name: '美数广告', - fastQuery: true, - activityIds: 'com.meishu.sdk.activity.SdkInterstitialActivity', - matches: '[id="com.xyhui:id/ms_activity_sdk_interstitial_cacel"]', - snapshotUrls: 'https://i.gkd.li/i/13458692', - }, { key: 5, activityIds: @@ -68,33 +26,6 @@ export default defineGkdApp({ matches: '[text="反馈"] + @View[visibleToUser=true] > Image', snapshotUrls: 'https://i.gkd.li/i/14560546', }, - { - key: 6, - fastQuery: true, - activityIds: [ - 'com.xyhui.start.PUMainActivity', - 'com.xyhui.start.LoadingActivity', - '.lut.act.LutMainActivity', - ], - matches: - '@ImageView[childCount=0][text=null][desc=null][id=null][visibleToUser=true][width<90 && height<90] < FrameLayout[childCount=1][text=null][desc=null][id=null][parent.childCount>3] (2,3) [text^="立即" || text$="详情" || text^="了解" || text="去微信看看" || text$="应用" || text="进入小程序" || text="领取优惠" || text="跳转微信"]', - snapshotUrls: [ - 'https://i.gkd.li/i/14472098', - 'https://i.gkd.li/i/14766902', - 'https://i.gkd.li/i/23146070', - 'https://i.gkd.li/i/23304106', - 'https://i.gkd.li/i/24488993', - ], - }, - { - key: 7, - fastQuery: true, - activityIds: '.lut.act.LutMainActivity', - matches: - 'ImageView[childCount=0][text=null] < @ViewGroup[childCount=1][clickable=true][visibleToUser=true] < ViewGroup +n ViewGroup[childCount=2] > [text="广告"]', - exampleUrls: 'https://e.gkd.li/240494b6-026f-49f7-a77d-986e70077218', - snapshotUrls: 'https://i.gkd.li/i/18245369', - }, { key: 8, activityIds: @@ -137,15 +68,6 @@ export default defineGkdApp({ '@ImageView[width<140 && height<140] - * > [text^="请允许"][text$="安装应用"]', snapshotUrls: 'https://i.gkd.li/i/23125594', }, - { - key: 12, - name: '京东广告', - fastQuery: true, - activityIds: '.lut.act.LutMainActivity', - matches: - '@ImageView[childCount=0][text=null][visibleToUser=true] < FrameLayout[childCount=1] <2 FrameLayout[childCount=2] <2 FrameLayout[childCount=2] <2 FrameLayout[childCount=2] - FrameLayout > [text^="扭动或点击"]', - snapshotUrls: 'https://i.gkd.li/i/23325124', - }, { key: 13, fastQuery: true, @@ -155,14 +77,6 @@ export default defineGkdApp({ '@ImageView[width<100 && height<100] <<4 * + * >4 [text="反馈"]', snapshotUrls: 'https://i.gkd.li/i/23567050', }, - { - key: 14, - fastQuery: true, - activityIds: '.lut.act.LutMainActivity', - matches: - '@ImageView[childCount=0][text=null][desc=null][id=null][visibleToUser=true][width<90 && height<90] < FrameLayout[childCount=1][text=null][desc=null][id=null] - FrameLayout[childCount>2] >3 [text^="立即" || text$="应用" || text="了解更多" || text="查看详情"]', - snapshotUrls: 'https://i.gkd.li/i/23937136', - }, ], }, ], diff --git a/src/globalGroups.ts b/src/globalGroups.ts index e1c174e27..f3f17d8dc 100644 --- a/src/globalGroups.ts +++ b/src/globalGroups.ts @@ -40,8 +40,8 @@ const COMMON_PREFIX = // 再复用旧的宽泛规则覆盖 desc、正则 vid 等无法快速查询的场景。 const OPEN_AD_TIME_EXCLUDES = '[!(text~="([01]?[0-9]|2[0-3])[::][0-5][0-9]")][!(desc~="([01]?[0-9]|2[0-3])[::][0-5][0-9]")]'; -const OPEN_AD_TEXT_SUFFIX = `${COMMON_PREFIX}[text.length<=6][(text~="(?is)跳[\\\\s]*过[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||text~="(?is)跳[\\\\s]*過[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||text~="(?is).*skip.*")]${OPEN_AD_TIME_EXCLUDES}`; -const OPEN_AD_SKIP_VID_SUFFIX = `${COMMON_PREFIX}[vid~="(?is).*skip.*"]${OPEN_AD_TIME_EXCLUDES}`; +const OPEN_AD_TEXT_SUFFIX = `${COMMON_PREFIX}[text.length<10][((text*="跳过"||text*="跳 过"||text*="跳過"||text*="跳 過"||text~="(?is).*skip.*")&&text!*="视频"&&text!*="片头"&&text!*="片尾")]${OPEN_AD_TIME_EXCLUDES}`; +const OPEN_AD_SKIP_VID_SUFFIX = `${COMMON_PREFIX}[vid~="(?is).*skip.*"][vid!~="(?is).*video.*"][vid!~="(?is).*head.*"][vid!~="(?is).*tail.*"][!(text="帮助")][!(text="取消")][!(text*="退出")]${OPEN_AD_TIME_EXCLUDES}`; const OPEN_AD_COUNT_DOWN_VID_SUFFIX = `${COMMON_PREFIX}[(vid~="(?is).*count.*"&&vid~="(?is).*down.*"&&!(vid~="(?is).*load.*")&&!(vid~="(?is).*hour.*")&&!(vid~="(?is).*minute.*")&&!(vid~="(?is).*timing.*")&&!(vid~="(?is).*add.*")&&!(vid~="(?is).*ead.*"))]${OPEN_AD_TIME_EXCLUDES}`; // 这里必须使用 vid 精确匹配作为选择器首个条件,才能命中文档要求的 fastQuery 格式。 const OPEN_AD_FAST_SKIP_VIDS = @@ -49,9 +49,9 @@ const OPEN_AD_FAST_SKIP_VIDS = const OPEN_AD_FAST_COUNT_DOWN_VIDS = '[vid="count_down"||vid="count_down_view"||vid="countDown"||vid="countDownView"||vid="gdt_count_down_view"||vid="GdtCountDownView"||vid="ui_count_down"]'; // 兜底规则保持旧主规则的匹配表达式,避免只优化快速路径导致 desc/宽泛 vid 场景回归。 -const OPEN_AD_FALLBACK_MATCHES = `${COMMON_PREFIX}[(text.length<=6&&(text~="(?is)跳[\\\\s]*过[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||text~="(?is)跳[\\\\s]*過[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||text~="(?is).*skip.*"))||id~="(?is).*tt_splash_skip_btn"||vid~="(?is).*skip.*"||(vid~="(?is).*count.*"&&vid~="(?is).*down.*"&&!(vid~="(?is).*load.*")&&!(vid~="(?is).*hour.*")&&!(vid~="(?is).*minute.*")&&!(vid~="(?is).*timing.*")&&!(vid~="(?is).*add.*")&&!(vid~="(?is).*ead.*"))||desc~="(?is)跳[\\\\s]*过[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||desc~="(?is)跳[\\\\s]*過[\\\\s]*[(\\\\(]?\\\\d{0,2}[)\\\\)]?.*"||desc~="(?is).*skip.*"]${OPEN_AD_TIME_EXCLUDES}`; +const OPEN_AD_FALLBACK_MATCHES = `${COMMON_PREFIX}[((text.length<10&&(text*="跳过"||text*="跳 过"||text*="跳過"||text*="跳 過"||text~="(?is).*skip.*")&&text!*="视频"&&text!*="片头"&&text!*="片尾")||id~="(?is).*tt_splash_skip_btn"||(vid~="(?is).*skip.*"&&vid!~="(?is).*video.*"&&vid!~="(?is).*head.*"&&vid!~="(?is).*tail.*"&&!(text="帮助")&&!(text="取消")&&!(text*="退出"))||(vid~="(?is).*count.*"&&vid~="(?is).*down.*"&&!(vid~="(?is).*load.*")&&!(vid~="(?is).*hour.*")&&!(vid~="(?is).*minute.*")&&!(vid~="(?is).*timing.*")&&!(vid~="(?is).*add.*")&&!(vid~="(?is).*ead.*"))||(desc.length<10&&(desc*="跳过"||desc*="跳過"||desc~="(?is).*skip.*")))]${OPEN_AD_TIME_EXCLUDES}`; const OPEN_AD_TEXT_EXCLUDE_MATCH = - '([text*="搜索" || text="历史记录" || text$="在搜"][text.length>3 && text.length<7][visibleToUser=true]) || ([text="设置" || text="退款详情" || text="Submit" || text*="阅读并同意" || text$="登录"][visibleToUser=true])'; + '([text*="搜索" || text="历史记录" || text$="在搜"][text.length>3 && text.length<7][visibleToUser=true]) || ([text="设置" || text$="设置" || text="退款详情" || text="Submit" || text*="阅读并同意" || text$="登录" || text="书签" || text="NEXT"][visibleToUser=true]) || ([text$="选好了" || text^="下一步" || text^="完成" || text*="跳过片"][text.length<10][visibleToUser=true]) || ([text^="选择"][text*="偏好" || text*="兴趣" || text*="喜好"][text.length<10][visibleToUser=true])'; // 快速规则和兜底规则共用旧排除条件,保证优化前后的误触保护一致。 const OPEN_AD_EXCLUDE_MATCHES = [ OPEN_AD_TEXT_EXCLUDE_MATCH, @@ -69,14 +69,22 @@ const OPEN_AD_EXCLUDE_SNAPSHOT_URLS = [ 'https://i.gkd.li/i/22634992', // text*="登录" ]; -const NEGATION_PART_RULE_TEXT = `${COMMON_PREFIX}[(((text^="不"||text^="现在不要")&&text$="谢谢")||text$="不感兴趣"||text="与我无关"||text="关闭此广告"||text="关闭该广告"||text="關閉此廣告"||text="没兴趣"||text="否"||text="关闭"||text~="跳[\\\\s]+过"||text~="跳[\\\\s]+過"||text="关闭按钮"||text="我没空"||text="不开启"||text="暂时不用"||text="暂时不要"||text="我已知晓"||text="不用了"||text="本次忽略"||text="考虑一下"||text="考慮一下"||text="先不了"||text="不允许"||text^="不了"||text^="不再"||(text^="稍后"&&text!="稍后再看")||text^="忽略"||text^="暂不"||text^="放弃"||text^="放棄"||text^="取消"||text$="再说"||text$="拒绝"||text$="再想想"||text$="知道了"||text$="稍后提醒我"||text$="稍後提醒我"||((text^="不"||text^="現在不要")&&text$="謝謝")||text="關閉"||text="關閉按鈕"||text="我已知曉"||text="不開啟"||text$="再說"||text$="拒絕"||text^="暫不"||text~="(?is)close.*"||text~="(?is)not now.*"||text~="(?is)Ignore.*"||text~="(?is)cancel.*"||text~="(?is).*later"||text~="(?is).*refuse"||text~="(?is).*i see")&&(text!*="取消全部")&&(text!*="取消订单")&&text.length<=7]`; -const NEGATION_PART_RULE_DESC = `${COMMON_PREFIX}[(((desc^="不"||desc^="现在不要")&&desc$="谢谢")||desc$="不感兴趣"||desc="与我无关"||desc="关闭此广告"||desc="关闭该广告"||desc="關閉此廣告"||desc="没兴趣"||desc="否"||desc="关闭"||desc~="跳[\\\\s]+过"||desc~="跳[\\\\s]+過"||desc="关闭按钮"||desc="我没空"||desc="不开启"||desc="暂时不用"||desc="暂时不要"||desc="我已知晓"||desc="不用了"||desc="本次忽略"||desc="考虑一下"||desc="考慮一下"||desc="先不了"||desc="不允许"||desc^="不了"||desc^="不再"||(desc^="稍后"&&desc!="稍后再看")||desc^="忽略"||desc^="暂不"||desc^="放弃"||desc^="放棄"||desc^="取消"||desc$="再说"||desc$="拒绝"||desc$="再想想"||desc$="知道了"||desc$="稍后提醒我"||desc$="稍後提醒我"||((desc^="不"||desc^="現在不要")&&desc$="謝謝")||desc="關閉"||desc="關閉按鈕"||desc="我已知曉"||desc="不開啟"||desc$="再說"||desc$="拒絕"||desc^="暫不"||desc~="(?is)close.*"||desc~="(?is)not now.*"||desc~="(?is)Ignore.*"||desc~="(?is)cancel.*"||desc~="(?is).*later"||desc~="(?is).*refuse"||desc~="(?is).*i see")&&(desc!*="取消全部")&&(desc!*="取消订单")&&desc.length<=7]`; -const NEGATION_PART_RULE_BUTTON = `${COMMON_PREFIX}[(vid~="(?is).*dismiss.*"||vid~="(?is).*iv.*"||vid~="(?is).*guide.*"||vid~="(?is).*alert"||vid~="(?is).*notific.*"||vid~="(?is).*dialog.*"||vid~="(?is).*btn.*"||vid~="(?is).*ad.*"||vid~="(?is).*ab.*"||vid~="(?is).*update.*")&&(vid~="(?is).*close.*"||vid~="(?is).*delete.*"||vid~="(?is).*cancel.*"||vid~="(?is).*cancle.*"||vid~="(?is).*exit.*")||vid~="(?is)close.*"||vid~="(?is)ab.*"||vid~="(?is)closeIv.*"||vid~="(?is)ivDelete.*"||vid~="(?is)deleteIv.*"||vid~="(?is)iv_close_bt.*"||vid~="(?is).*_close"||text=""||desc=""||text="×"||desc="×"||text="✕"||desc="✕"||text="퀺"||desc="퀺"||text=""||desc=""||text=""||desc=""||text=""||desc=""]`; +const NEGATION_PART_RULE_TEXT = `${COMMON_PREFIX}[(((text^="不"||text^="现在不要")&&text$="谢谢")||text$="不感兴趣"||text="与我无关"||text="关闭此广告"||text="关闭该广告"||text="關閉此廣告"||text="没兴趣"||text="否"||text="关闭"||text~="跳[\\\\s]+过"||text~="跳[\\\\s]+過"||text="关闭按钮"||text="我没空"||text="不开启"||text="暂时不用"||text="暂时不要"||text="我已知晓"||text="不用了"||text="本次忽略"||text="考虑一下"||text="考慮一下"||text="先不了"||text="不允许"||text^="不了"||text^="不再"||(text^="稍后"&&text!="稍后再看")||text^="忽略"||text^="暂不"||text^="放弃"||text^="放棄"||text^="取消"||text^="关闭"||text$="再说"||text$="拒绝"||text$="再想想"||text*="再看看"||text$="不要"||text$="知道了"||text$="稍后提醒我"||text$="稍後提醒我"||((text^="不"||text^="現在不要")&&text$="謝謝")||text="關閉"||text="關閉按鈕"||text="我已知曉"||text="不開啟"||text$="再說"||text$="拒絕"||text^="暫不"||text~="(?is)close.*"||text~="(?is)not now.*"||text~="(?is)Ignore.*"||text~="(?is)cancel.*"||text~="(?is).*later"||text~="(?is).*refuse"||text~="(?is).*i see")&&(text!*="取消全部")&&(text!*="取消订单")&&text.length<=7]`; +const NEGATION_PART_RULE_DESC = `${COMMON_PREFIX}[(((desc^="不"||desc^="现在不要")&&desc$="谢谢")||desc$="不感兴趣"||desc="与我无关"||desc="关闭此广告"||desc="关闭该广告"||desc="關閉此廣告"||desc="没兴趣"||desc="否"||desc="关闭"||desc~="跳[\\\\s]+过"||desc~="跳[\\\\s]+過"||desc="关闭按钮"||desc="我没空"||desc="不开启"||desc="暂时不用"||desc="暂时不要"||desc="我已知晓"||desc="不用了"||desc="本次忽略"||desc="考虑一下"||desc="考慮一下"||desc="先不了"||desc="不允许"||desc^="不了"||desc^="不再"||(desc^="稍后"&&desc!="稍后再看")||desc^="忽略"||desc^="暂不"||desc^="放弃"||desc^="放棄"||desc^="取消"||desc^="关闭"||desc$="再说"||desc$="拒绝"||desc$="再想想"||desc*="再看看"||desc$="不要"||desc$="知道了"||desc$="稍后提醒我"||desc$="稍後提醒我"||((desc^="不"||desc^="現在不要")&&desc$="謝謝")||desc="關閉"||desc="關閉按鈕"||desc="我已知曉"||desc="不開啟"||desc$="再說"||desc$="拒絕"||desc^="暫不"||desc~="(?is)close.*"||desc~="(?is)not now.*"||desc~="(?is)Ignore.*"||desc~="(?is)cancel.*"||desc~="(?is).*later"||desc~="(?is).*refuse"||desc~="(?is).*i see")&&(desc!*="取消全部")&&(desc!*="取消订单")&&desc.length<=7]`; +const NEGATION_PART_RULE_BUTTON = `${COMMON_PREFIX}[(vid~="(?is).*dismiss.*"||vid~="(?is).*iv.*"||vid~="(?is).*guide.*"||vid~="(?is).*alert"||vid~="(?is).*notific.*"||vid~="(?is).*dialog.*"||vid~="(?is).*btn.*"||vid~="(?is).*ad.*"||vid~="(?is).*ab.*"||vid~="(?is).*update.*")&&(vid~="(?is).*close.*"||vid~="(?is).*delete.*"||vid~="(?is).*cancel.*"||vid~="(?is).*cancle.*"||vid~="(?is).*exit.*")||vid~="(?is)close.*"||vid~="(?is)ab.*"||vid~="(?is)closeIv.*"||vid~="(?is)ivDelete.*"||vid~="(?is)deleteIv.*"||vid~="(?is)iv_close_bt.*"||vid~="(?is).*_close"||vid="iv_cancel"||vid="ivCancel"||vid="tvCancel"||vid="cancel"||vid="Cancel"||vid="iv_negative"||vid="update_close_icon"||text=""||desc=""||text="×"||desc="×"||text="✕"||desc="✕"||text="퀺"||desc="퀺"||text=""||desc=""||text=""||desc=""||text=""||desc=""]`; const PA_commonTextPatterns = '[text^="广告"||text$="广告"||text^="廣告"||text$="廣告"||text$="限时福利"||text^="热门活动"||text$="热门活动"||text$="限時福利"||text^="限时福利"||text^="限時福利"||((text~="(?is).*AD"||text~="ad")&&((!(text~="(?is).*load.*"))&&(!(text~="(?is).*read.*"))&&(!(text~="(?is).*add.*"))&&!(text~="(?is).*ead.*")))||(text*="申请"||text*="开启"||text*="啟用"||text="開啟"||text*="打开"||text*="获取"||text*="订阅"||text*="接收"||text~="(?is).*Turn on.*")&&(text*="个性化"||text*="推荐"||text*="感兴趣"||text*="個性化"||text*="推薦"||text*="感興趣"||text*="感興趣")]'; const PA_commonDescPatterns = '[desc^="广告"||desc$="广告"||desc^="廣告"||desc$="廣告"||desc$="限时福利"||desc^="热门活动"||desc$="热门活动"||desc$="限時福利"||desc^="限时福利"||desc^="限時福利"||((desc~="(?is).*AD"||desc~="ad")&&((!(desc~="(?is).*load.*"))&&(!(desc~="(?is).*read.*"))&&(!(desc~="(?is).*add.*"))&&!(desc~="(?is).*ead.*")))||(desc*="申请"||desc*="开启"||desc*="啟用"||desc="開啟"||desc*="打开"||desc*="获取"||desc*="订阅"||desc*="接收"||desc~="(?is).*Turn on.*")&&(desc*="个性化"||desc*="推荐"||desc*="感兴趣"||desc*="個性化"||desc*="推薦"||desc*="感興趣"||desc*="感興趣")]'; +const TENCENT_AD_ACTION_TEXT = + '[text^="立即" || text$="详情" || text^="了解" || text="去逛逛" || text="去微信看看" || text$="应用" || text="进入小程序" || text="领取优惠" || text="跳转微信"]'; +const CARD_AD_ACTION_TEXT = + '[text="下载应用" || text="立即下载" || text="查看详情" || text="领取优惠" || text="进入小程序" || text="了解更多"][visibleToUser=true]'; +const UPDATE_PROMPT_TEXT_EXCLUDE_MATCH = + '([text*="全部"][text*="更新" || text*="忽略"][text.length<7][visibleToUser=true]) || ([text^="继续" || text^="仍然" || text*="权限"][text.length<6][visibleToUser=true]) || ([text*="来源"][visibleToUser=true]) || ([text="检查更新" || text="检测更新"][visibleToUser=true])'; +const UPDATE_PROMPT_DESC_EXCLUDE_MATCH = + '([desc*="全部"][desc*="更新" || desc*="忽略"][desc.length<7][visibleToUser=true]) || ([desc^="继续" || desc^="仍然" || desc*="权限"][desc.length<6][visibleToUser=true]) || ([desc*="来源"][visibleToUser=true]) || ([desc="检查更新" || desc="检测更新"][visibleToUser=true])'; export default defineGkdGlobalGroups([ { @@ -102,6 +110,10 @@ export default defineGkdGlobalGroups([ // anyMatches 从可快速查询的 text/vid 锚点开始,再追加旧规则的尺寸与文本校验。 anyMatches: [ `[text^="跳"]${OPEN_AD_TEXT_SUFFIX}`, + `[text*="跳过"]${OPEN_AD_TEXT_SUFFIX}`, + `[text*="跳 过"]${OPEN_AD_TEXT_SUFFIX}`, + `[text*="跳過"]${OPEN_AD_TEXT_SUFFIX}`, + `[text*="跳 過"]${OPEN_AD_TEXT_SUFFIX}`, `[text*="skip"]${OPEN_AD_TEXT_SUFFIX}`, `[text*="Skip"]${OPEN_AD_TEXT_SUFFIX}`, `[text*="SKIP"]${OPEN_AD_TEXT_SUFFIX}`, @@ -120,7 +132,7 @@ export default defineGkdGlobalGroups([ ], action: 'clickCenter', anyMatches: [ - '@View[text=null][clickable=true][childCount=0][visibleToUser=true][width<200&&height<200] +(1,2) TextView[index=parent.childCount.minus(1)][childCount=0] 2][text=null][desc=null] >(n+6) [text*="第三方应用" || text*="扭动手机" || text*="点击或上滑" || text*="省钱好物"][visibleToUser=true]', + '@View[text=null][clickable=true][childCount=0][visibleToUser=true][width<200&&height<200] +(1,2) TextView[index=parent.childCount.minus(1)][childCount=0] 2][text=null][desc=null] >(n+6) [text*="第三方应用" || text*="扭动手机" || text*="点击或上滑" || text*="省钱好物" || text*="扭一扭"][visibleToUser=true]', 'FrameLayout > FrameLayout[childCount>2][text=null][desc=null] > @View[text=null][clickable=true][childCount=0][visibleToUser=true][width<200&&height<200] +(1,2) TextView[index=parent.childCount.minus(1)][childCount=0][visibleToUser=true]', ], snapshotUrls: [ @@ -253,6 +265,52 @@ export default defineGkdGlobalGroups([ 'https://i.gkd.li/import/13784406', ], }, + { + key: 8, + name: '快手SDK-类型5', + fastQuery: true, + matches: [ + '[text="广告"]', + '@ImageView[clickable=true] - [text="|"] - [text$="s"]', + ], + snapshotUrls: ['https://i.gkd.li/i/13625303'], + }, + { + key: 9, + name: '腾讯广告-补充', + fastQuery: true, + anyMatches: [ + `@ImageView[childCount=0][text=null][desc=null][id=null][visibleToUser=true][width<90 && height<90] < FrameLayout[childCount=1][text=null][desc=null][id=null][parent.childCount>3] (2,3) ${TENCENT_AD_ACTION_TEXT}`, + `@ImageView[childCount=0][text=null][desc=null][id=null][visibleToUser=true][width<90 && height<90] < FrameLayout[childCount=1][text=null][desc=null][id=null] <2 FrameLayout[childCount=5] + FrameLayout[childCount=2] > ${TENCENT_AD_ACTION_TEXT}`, + '@ImageView[childCount=0][text=null][desc=null][id=null][visibleToUser=true][width<90 && height<90] < FrameLayout[childCount=1][text=null][desc=null][id=null] <(2,3) FrameLayout[childCount=4] +(1,2) FrameLayout[childCount=2] >2 [text^="立即" || text="去逛逛"]', + '@ImageView[childCount=0][text=null][desc=null][id=null][visibleToUser=true][width<90 && height<90] < FrameLayout[childCount=1][text=null][desc=null][id=null] - FrameLayout[childCount>2] >3 [text^="立即" || text$="应用" || text="了解更多" || text="查看详情"]', + ], + snapshotUrls: ['https://i.gkd.li/i/24488993'], + }, + { + key: 10, + name: '京东广告', + fastQuery: true, + anyMatches: [ + '@ImageView[childCount=0][text=null][visibleToUser=true] < FrameLayout[childCount=1] <2 FrameLayout[childCount=2] <2 FrameLayout[childCount=2] <2 FrameLayout[childCount=2] - FrameLayout > [text^="扭动或点击"]', + '@ImageView[childCount=0][text=null][visibleToUser=true] < FrameLayout[childCount=1] <3 FrameLayout[childCount=3] < FrameLayout[childCount=2] +5 FrameLayout[childCount=4] > [text^="扭动或点击"]', + ], + snapshotUrls: [ + 'https://i.gkd.li/i/17689928', + 'https://i.gkd.li/i/13328126', + ], + }, + { + key: 11, + name: '字节SDK-反馈', + anyMatches: [ + '@Image[childCount=0][text=""][width<60 && height<60] < View[childCount=1] + View +n View > View[childCount=1] > TextView[text$="广告"]', + '@Image[childCount=0][text=""][width<60 && height<60] < View[childCount=1] + View > [text="反馈"]', + '[text="反馈"] +(1,2) View[childCount=1] > @Image[childCount=0][text=""][width<60 && height<60]', + '[text="反馈"] - View[childCount=1] > @Image[childCount=0][text=""][width<60 && height<60]', + ], + snapshotUrls: ['https://i.gkd.li/i/13632639'], + }, ], apps: diabledAppIds.map((id) => ({ id, enable: false })), }, @@ -319,6 +377,29 @@ export default defineGkdGlobalGroups([ key: 12, matches: `${COMMON_PREFIX}${PA_commonDescPatterns} < * >n ${NEGATION_PART_RULE_BUTTON}`, }, + { + key: 13, + name: '卡片广告-类型1', + fastQuery: true, + matches: `@ImageView[childCount=0][visibleToUser=true] < FrameLayout[childCount=1] - LinearLayout[childCount=2] > ${CARD_AD_ACTION_TEXT}`, + snapshotUrls: [ + 'https://i.gkd.li/i/14469848', + 'https://i.gkd.li/i/13999284', + 'https://i.gkd.li/i/13521680', + 'https://i.gkd.li/i/13488870', + ], + }, + { + key: 14, + name: '卡片广告-类型2', + fastQuery: true, + matches: + '@View[clickable=true][childCount=0][visibleToUser=true] < FrameLayout[desc^="dislike"] + FrameLayout >2 [text="广告"]', + snapshotUrls: [ + 'https://i.gkd.li/i/13233916', + 'https://i.gkd.li/i/12640374', + ], + }, ], // 将 Set 转换为数组,并设置 enable 为 false apps: diabledAppIds.map((id) => ({ id, enable: false })), @@ -339,61 +420,37 @@ export default defineGkdGlobalGroups([ rules: [ { key: 0, - excludeMatches: [ - '[text="全部更新"]', - '[text="全部忽略"]', - '[text="更新全部"]', - '[text="忽略全部"]', - '[text="检查更新"]', - ], + excludeMatches: [UPDATE_PROMPT_TEXT_EXCLUDE_MATCH], matches: [ - `${COMMON_PREFIX}[((text*="内测"||text*="测试版"||text*="新版"||text*="更新"||text*="升级"||text*="体验"||text*="內測"||text*="測試版"||text*="升級"||text*="體驗"||text~="(?is).*Update.*"||text~="(?is).*Upgrade.*"||text~="(?is).*Experience.*")&&text!*="自动"&&text!*="自動"&&(text!*="成功"&&text!*="失败"&&text!*="失敗"&&(text!*="已"||text*="已知")&&text!*="卸载")&&text.length>2)]`, - `${COMMON_PREFIX}[((((text*="立即"||text*="马上"||text*="并"||text*="现在"||text*="立刻"||text*="极速"||text*="抢先")&&(text*="更新"||text*="下载"||text*="下載"||text*="安装"||text*="升级"||text*="查看"||text*="体验"||text*="设置"))||text="更新"||text="下载"||text="去下载"||text="安装"||text="升级"||text="确定"||text="好,升级"||text="设置"||text="下載並安裝"||text="下载并安装")&&text.length<6)||((text~="(?is).*(更新.*?)(\\\\(|()\\\\d+(\\\\.\\\\d+)?(K|M|G|KB|MB|GB)(\\\\)|))")&&text.length<15)]`, + `${COMMON_PREFIX}[((text*="内测"||text*="测试版"||text*="新版"||text*="更新"||text*="升级"||text*="体验"||text*="內測"||text*="測試版"||text*="升級"||text*="體驗"||text~="(?is).*Update.*"||text~="(?is).*Upgrade.*"||text~="(?is).*Experience.*")&&text!*="自动"&&text!*="自動"&&text!*="检查更新"&&text!*="检测更新"&&(text!*="成功"&&text!*="失败"&&text!*="失敗"&&(text!*="已"||text*="已知")&&text!*="卸载")&&text.length>2)]`, + `${COMMON_PREFIX}[((((text*="立即"||text*="马上"||text*="并"||text*="现在"||text*="立刻"||text*="极速"||text*="抢先")&&(text*="更新"||text*="下载"||text*="下載"||text*="安装"||text*="升级"||text*="查看"||text*="体验"||text*="设置"))||text="更新"||text="下载"||text="去下载"||text="安装"||text="升级"||text="确定"||text="确认"||text="查看"||text="体验"||text="好,升级"||text="设置"||text="下載並安裝"||text="下载并安装")&&text.length<6)||((text~="(?is).*(更新.*?)(\\\\(|()\\\\d+(\\\\.\\\\d+)?(K|M|G|KB|MB|GB)(\\\\)|))")&&text.length<15)]`, `${NEGATION_PART_RULE_TEXT}`, ], }, { key: 1, - excludeMatches: [ - '[desc="全部更新"]', - '[desc="全部忽略"]', - '[desc="更新全部"]', - '[desc="忽略全部"]', - '[desc="检查更新"]', - ], + excludeMatches: [UPDATE_PROMPT_DESC_EXCLUDE_MATCH], matches: [ - `${COMMON_PREFIX}[((desc*="内测"||desc*="测试版"||desc*="新版"||desc*="更新"||desc*="升级"||desc*="体验"||desc*="內測"||desc*="測試版"||desc*="升級"||desc*="體驗"||desc~="(?is).*Update.*"||desc~="(?is).*Upgrade.*"||desc~="(?is).*Experience.*")&&desc!*="自动"&&desc!*="自動"&&(desc!*="成功"&&desc!*="失败"&&desc!*="失敗"&&(desc!*="已"||desc*="已知")&&desc!*="卸载")&&desc.length>2)]`, - `${COMMON_PREFIX}[((((desc*="立即"||desc*="马上"||desc*="并"||desc*="现在"||desc*="立刻"||desc*="极速"||desc*="抢先")&&(desc*="更新"||desc*="下载"||desc*="下載"||desc*="安装"||desc*="升级"||desc*="查看"||desc*="体验"||desc*="设置"))||desc="更新"||desc="下载"||desc="去下载"||desc="安装"||desc="升级"||desc="确定"||desc="好,升级"||desc="设置"||desc="下載並安裝"||desc="下载并安装")&&desc.length<6)||((desc~="(?is).*(更新.*?)(\\\\(|()\\\\d+(\\\\.\\\\d+)?(K|M|G|KB|MB|GB)(\\\\)|))")&&desc.length<15)]`, + `${COMMON_PREFIX}[((desc*="内测"||desc*="测试版"||desc*="新版"||desc*="更新"||desc*="升级"||desc*="体验"||desc*="內測"||desc*="測試版"||desc*="升級"||desc*="體驗"||desc~="(?is).*Update.*"||desc~="(?is).*Upgrade.*"||desc~="(?is).*Experience.*")&&desc!*="自动"&&desc!*="自動"&&desc!*="检查更新"&&desc!*="检测更新"&&(desc!*="成功"&&desc!*="失败"&&desc!*="失敗"&&(desc!*="已"||desc*="已知")&&desc!*="卸载")&&desc.length>2)]`, + `${COMMON_PREFIX}[((((desc*="立即"||desc*="马上"||desc*="并"||desc*="现在"||desc*="立刻"||desc*="极速"||desc*="抢先")&&(desc*="更新"||desc*="下载"||desc*="下載"||desc*="安装"||desc*="升级"||desc*="查看"||desc*="体验"||desc*="设置"))||desc="更新"||desc="下载"||desc="去下载"||desc="安装"||desc="升级"||desc="确定"||desc="确认"||desc="查看"||desc="体验"||desc="好,升级"||desc="设置"||desc="下載並安裝"||desc="下载并安装")&&desc.length<6)||((desc~="(?is).*(更新.*?)(\\\\(|()\\\\d+(\\\\.\\\\d+)?(K|M|G|KB|MB|GB)(\\\\)|))")&&desc.length<15)]`, `${NEGATION_PART_RULE_DESC}`, ], }, { key: 2, - excludeMatches: [ - '[text="全部更新"]', - '[text="全部忽略"]', - '[text="更新全部"]', - '[text="忽略全部"]', - '[text="检查更新"]', - ], + excludeMatches: [UPDATE_PROMPT_TEXT_EXCLUDE_MATCH], matches: [ - `${COMMON_PREFIX}[((text*="内测"||text*="测试版"||text*="新版"||text*="更新"||text*="升级"||text*="体验"||text*="內測"||text*="測試版"||text*="升級"||text*="體驗"||text~="(?is).*Update.*"||text~="(?is).*Upgrade.*"||text~="(?is).*Experience.*")&&text!*="自动"&&text!*="自動"&&(text!*="成功"&&text!*="失败"&&text!*="失敗"&&(text!*="已"||text*="已知")&&text!*="卸载")&&text.length>2)]`, - `${COMMON_PREFIX}[((((text*="立即"||text*="马上"||text*="并"||text*="现在"||text*="立刻"||text*="极速"||text*="抢先")&&(text*="更新"||text*="下载"||text*="下載"||text*="安装"||text*="升级"||text*="查看"||text*="体验"||text*="设置"))||text="更新"||text="下载"||text="去下载"||text="安装"||text="升级"||text="确定"||text="好,升级"||text="设置"||text="下載並安裝"||text="下载并安装")&&text.length<6)||((text~="(?is).*(更新.*?)(\\\\(|()\\\\d+(\\\\.\\\\d+)?(K|M|G|KB|MB|GB)(\\\\)|))")&&text.length<15)]`, + `${COMMON_PREFIX}[((text*="内测"||text*="测试版"||text*="新版"||text*="更新"||text*="升级"||text*="体验"||text*="內測"||text*="測試版"||text*="升級"||text*="體驗"||text~="(?is).*Update.*"||text~="(?is).*Upgrade.*"||text~="(?is).*Experience.*")&&text!*="自动"&&text!*="自動"&&text!*="检查更新"&&text!*="检测更新"&&(text!*="成功"&&text!*="失败"&&text!*="失敗"&&(text!*="已"||text*="已知")&&text!*="卸载")&&text.length>2)]`, + `${COMMON_PREFIX}[((((text*="立即"||text*="马上"||text*="并"||text*="现在"||text*="立刻"||text*="极速"||text*="抢先")&&(text*="更新"||text*="下载"||text*="下載"||text*="安装"||text*="升级"||text*="查看"||text*="体验"||text*="设置"))||text="更新"||text="下载"||text="去下载"||text="安装"||text="升级"||text="确定"||text="确认"||text="查看"||text="体验"||text="好,升级"||text="设置"||text="下載並安裝"||text="下载并安装")&&text.length<6)||((text~="(?is).*(更新.*?)(\\\\(|()\\\\d+(\\\\.\\\\d+)?(K|M|G|KB|MB|GB)(\\\\)|))")&&text.length<15)]`, `${NEGATION_PART_RULE_BUTTON}`, ], }, { key: 3, - excludeMatches: [ - '[desc="全部更新"]', - '[desc="全部忽略"]', - '[desc="更新全部"]', - '[desc="忽略全部"]', - '[desc="检查更新"]', - ], + excludeMatches: [UPDATE_PROMPT_DESC_EXCLUDE_MATCH], matches: [ - `${COMMON_PREFIX}[((desc*="内测"||desc*="测试版"||desc*="新版"||desc*="更新"||desc*="升级"||desc*="体验"||desc*="內測"||desc*="測試版"||desc*="升級"||desc*="體驗"||desc~="(?is).*Update.*"||desc~="(?is).*Upgrade.*"||desc~="(?is).*Experience.*")&&desc!*="自动"&&desc!*="自動"&&(desc!*="成功"&&desc!*="失败"&&desc!*="失敗"&&(desc!*="已"||desc*="已知")&&desc!*="卸载")&&desc.length>2)]`, - `${COMMON_PREFIX}[((((desc*="立即"||desc*="马上"||desc*="并"||desc*="现在"||desc*="立刻"||desc*="极速"||desc*="抢先")&&(desc*="更新"||desc*="下载"||desc*="下載"||desc*="安装"||desc*="升级"||desc*="查看"||desc*="体验"||desc*="设置"))||desc="更新"||desc="下载"||desc="去下载"||desc="安装"||desc="升级"||desc="确定"||desc="好,升级"||desc="设置"||desc="下載並安裝"||desc="下载并安装")&&desc.length<6)||((desc~="(?is).*(更新.*?)(\\\\(|()\\\\d+(\\\\.\\\\d+)?(K|M|G|KB|MB|GB)(\\\\)|))")&&desc.length<15)]`, + `${COMMON_PREFIX}[((desc*="内测"||desc*="测试版"||desc*="新版"||desc*="更新"||desc*="升级"||desc*="体验"||desc*="內測"||desc*="測試版"||desc*="升級"||desc*="體驗"||desc~="(?is).*Update.*"||desc~="(?is).*Upgrade.*"||desc~="(?is).*Experience.*")&&desc!*="自动"&&desc!*="自動"&&desc!*="检查更新"&&desc!*="检测更新"&&(desc!*="成功"&&desc!*="失败"&&desc!*="失敗"&&(desc!*="已"||desc*="已知")&&desc!*="卸载")&&desc.length>2)]`, + `${COMMON_PREFIX}[((((desc*="立即"||desc*="马上"||desc*="并"||desc*="现在"||desc*="立刻"||desc*="极速"||desc*="抢先")&&(desc*="更新"||desc*="下载"||desc*="下載"||desc*="安装"||desc*="升级"||desc*="查看"||desc*="体验"||desc*="设置"))||desc="更新"||desc="下载"||desc="去下载"||desc="安装"||desc="升级"||desc="确定"||desc="确认"||desc="查看"||desc="体验"||desc="好,升级"||desc="设置"||desc="下載並安裝"||desc="下载并安装")&&desc.length<6)||((desc~="(?is).*(更新.*?)(\\\\(|()\\\\d+(\\\\.\\\\d+)?(K|M|G|KB|MB|GB)(\\\\)|))")&&desc.length<15)]`, `${NEGATION_PART_RULE_BUTTON}`, ], }, @@ -548,6 +605,20 @@ export default defineGkdGlobalGroups([ `${NEGATION_PART_RULE_BUTTON}`, ], }, + { + key: 4, + matches: [ + `${COMMON_PREFIX}[(text*="未成年"||text*="儿童"||text*="青少年"||text*="守护")&&text*="模式"&&text.length<15]`, + `${COMMON_PREFIX}[(text*="知道了"||text*="我已知晓"||text*="已满"||text*="不再提醒")&&text.length<8]`, + ], + }, + { + key: 5, + matches: [ + `${COMMON_PREFIX}[(desc*="未成年"||desc*="儿童"||desc*="青少年"||desc*="守护")&&desc*="模式"&&desc.length<15]`, + `${COMMON_PREFIX}[(desc*="知道了"||desc*="我已知晓"||desc*="已满"||desc*="不再提醒")&&desc.length<8]`, + ], + }, ], apps: diabledAppIds.map((id) => ({ id, enable: false })), },