diff --git a/src/apps/com.autonavi.minimap.ts b/src/apps/com.autonavi.minimap.ts index 1f9cff75b..e72582e2f 100644 --- a/src/apps/com.autonavi.minimap.ts +++ b/src/apps/com.autonavi.minimap.ts @@ -64,14 +64,14 @@ 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'], }, { key: 3, fastQuery: true, matches: - '@ViewGroup[clickable=true] > View[visibleToUser=true][text^="关闭"] < View[text^="关闭"][visibleToUser=true] < ViewGroup[clickable=true] > @ImageView[childCount=0] < @ViewGroup[clickable=true] > ImageView[childCount=0] < View[text^="高德购票" && text$="优惠"] < View[text^="高德购票" && text$="优惠"] < [visibleToUser=true][text="关闭"] < [text="关闭"][visibleToUser=true] <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] [text="近期不再提醒我"]', + '[text="添加会员小组件"] < View +3 View[childCount=2] > @[text="近期不再提醒我"][clickable=true]', snapshotUrls: 'https://i.gkd.li/i/16427922', }, { @@ -273,7 +274,7 @@ export default defineGkdApp({ activityIds: 'com.alipay.mobile.nebulax.xriver.activity.XRiverActivity', matches: - '@[text*="跳过"] + [visibleToUser=true][text^="账单分期还"] <3 @[childCount=0][text="同意"] <3 @[text="同意"][childCount=0] <3] <<(2,4) ViewGroup (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] < [desc="关闭"]', - snapshotUrls: 'https://i.gkd.li/i/14138572', - }, - { - key: 3, - fastQuery: true, activityIds: [ 'com.qzone.reborn.feedpro.activity.QzoneFriendFeedProActivity', '.guild.base.QPublicFragmentActivityForMainWebActivity', @@ -185,28 +171,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', + }, ], }, { diff --git a/src/apps/com.xyhui.ts b/src/apps/com.xyhui.ts index 2667d9356..079095dda 100644 --- a/src/apps/com.xyhui.ts +++ b/src/apps/com.xyhui.ts @@ -10,57 +10,15 @@ 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: '字节广告', 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', }, - { - 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/apps/com.zhaopin.social.ts b/src/apps/com.zhaopin.social.ts index cd10a82f2..ae654e723 100644 --- a/src/apps/com.zhaopin.social.ts +++ b/src/apps/com.zhaopin.social.ts @@ -8,6 +8,7 @@ export default defineGkdApp({ key: 2, name: '局部广告-我的页面卡片广告', desc: '关闭我的页面中的卡片式广告', + fastQuery: true, activityIds: 'com.zhaopin.social.homepage.ZSC_MainTabActivity', rules: '[id="com.zhaopin.social:id/rl_banner_close"][visibleToUser=true][clickable=true]', diff --git a/src/apps/com.zhihu.android.ts b/src/apps/com.zhihu.android.ts index b172b2c89..0a73a3af0 100644 --- a/src/apps/com.zhihu.android.ts +++ b/src/apps/com.zhihu.android.ts @@ -209,7 +209,7 @@ export default defineGkdApp({ 'com.zhihu.android.mix.activity.ContentMixProfileActivity', fastQuery: true, matches: - 'View[childCount=3] > @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] < 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], diff --git a/src/globalGroups.ts b/src/globalGroups.ts index c760f86e8..f3f17d8dc 100644 --- a/src/globalGroups.ts +++ b/src/globalGroups.ts @@ -36,14 +36,55 @@ 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]'; -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=""]`; +// 开屏广告拆成“快速锚点 + 原规则兜底”:优先使用可 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<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 = + '[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<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="退款详情" || 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, + '[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$="再說"||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([ { @@ -55,28 +96,31 @@ export default defineGkdGlobalGroups([ matchRoot: true, 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*="跳过"]${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}`, + `${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, @@ -88,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: [ @@ -114,6 +158,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 })), }, @@ -124,23 +177,27 @@ export default defineGkdGlobalGroups([ enable: false, order: FULLSCREEN_AD, matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, rules: [ { 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'], }, { @@ -208,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 })), }, @@ -218,6 +321,7 @@ export default defineGkdGlobalGroups([ enable: false, order: PARTIAL_AD, matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, rules: [ @@ -273,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 })), @@ -286,67 +413,44 @@ export default defineGkdGlobalGroups([ disableIfAppGroupMatch: '更新提示', actionMaximum: 2, matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, actionMaximumKey: 0, 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}`, ], }, @@ -368,6 +472,7 @@ export default defineGkdGlobalGroups([ disableIfAppGroupMatch: '评价提示', actionMaximum: 2, matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, actionMaximumKey: 0, @@ -415,6 +520,7 @@ export default defineGkdGlobalGroups([ order: NOTIFICATION_PROMPT, disableIfAppGroupMatch: '通知提示', matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, rules: [ @@ -462,6 +568,7 @@ export default defineGkdGlobalGroups([ disableIfAppGroupMatch: '青少年模式', actionMaximum: 2, matchTime: 10000, + forcedTime: 10000, resetMatch: 'app', actionCdKey: 0, actionMaximumKey: 0, @@ -498,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 })), }, @@ -506,9 +627,10 @@ export default defineGkdGlobalGroups([ name: '权限提示', desc: '! 该规则会自动拒绝 APP 包括但不限于蓝牙、剪切板、通讯录、悬浮窗权限申请弹窗提示,如果有影响请关闭', enable: false, - order: YOUTH_MODE, + order: PERMISSION_PROMPT, disableIfAppGroupMatch: '权限提示', matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, rules: [ @@ -555,6 +677,7 @@ export default defineGkdGlobalGroups([ order: LOCATION_PROMPT, disableIfAppGroupMatch: '定位提示', matchTime: 10000, + forcedTime: 10000, resetMatch: 'activity', actionCdKey: 0, rules: [