V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
lisongeee
V2EX  ›  分享创造

GKD - 基于 无障碍 + 高级选择器 + 订阅规则 的自定义屏幕点击 APP

  lisongeee ·
lisonge · 2023-09-02 21:41:02 +08:00 · 12091 次点击
这是一个创建于 476 天前的主题,其中的信息可能已经有所发展或是发生改变。

gkd

基于 无障碍 + 高级选择器 + 订阅规则 的自定义屏幕点击 APP

https://github.com/gkd-kit/gkd 撅得好用的给个 star 吧

安装

功能

根据 高级选择器 + 订阅规则, 它可以实现

  • 点击跳过任意开屏广告/点击关闭应用内部任意弹窗广告, 如关闭百度贴吧帖子广告卡片/知乎回答底部推荐广告卡片
  • 一些快捷操作, 如微信电脑登录自动同意/微信扫描登录自动同意/微信抢红包
image image image image
image image image image

效果

image 关闭微信朋友圈广告 image 关闭酷安字节 SDK 广告 image 关闭贴吧开屏广告及内部广告
第 1 条附言  ·  2023-09-04 14:18:19 +08:00

如何编写订阅/贡献订阅 -> CONTRIBUTING.md

80 条回复    2024-06-26 17:31:49 +08:00
justforvx
    1
justforvx  
   2023-09-02 22:00:26 +08:00
这个是实现李跳跳功能的开源软件?简单说一下优点吧
lisongeee
    2
lisongeee  
OP
   2023-09-02 22:21:18 +08:00
@bnoblech

这个和李跳跳不一样,李跳跳是本地规则,GKD 是 订阅规则

最不一样的是 GKD 提供了一个强大的选择器引擎以及对应的快照审查工具能实时连接应用内置的 HTTP Server

https://github.com/gkd-kit/selector

https://github.com/gkd-kit/subscription

https://github.com/gkd-kit/inspect

GKD 的选择器规则能把界面上的无障碍节点串连起来,大大提高了泛用性

网页审查工具能实时测试选择器选中的目标节点,大大提高规则开发效率
lisongeee
    3
lisongeee  
OP
   2023-09-02 22:31:45 +08:00
比如某些可关闭广告的按钮没有 id/text/desc 或者不唯一并且位置也不固定,这时 李跳跳 是无法关闭的

但是 GKD 的选择器能把这个节点周围的节点也作为判断逻辑,类似 CSS 的 A > B

如果了解过 CSS ,那么对这个选择器会有一点熟悉,比如截图示例里的关闭微信广告的规则是

```txt
{
key: 0,
name: '关闭朋友圈广告',
desc: '朋友圈信息流广告,点击关闭按钮,确认关闭',
activityIds: 'com.tencent.mm.plugin.sns.ui.SnsTimeLineUI',
exampleUrls: [
`https://github.com/gkd-kit/subscription/assets/38517192/c9ae4bba-a748-4755-b5e4-c7ad3d489a79`,
],
rules: [
'TextView[text*=`广告`] + TextView[text=`关闭该广告`]',
'ImageView - TextView[text=`广告`][id!=null][index=0]',
],
},
```
lisongeee
    4
lisongeee  
OP
   2023-09-02 22:34:38 +08:00
比如百度贴吧评论区中间的广告的规则是,我确信 李跳跳 是做不到这种规则的

```txt
{
key: 4,
name: '帖子评论区内部广告卡片',
activityIds: 'com.baidu.tieba.frs.FrsActivity',
rules:
'ImageView < @FrameLayout < LinearLayout < RelativeLayout <n LinearLayout < RelativeLayout + LinearLayout[id=`com.baidu.tieba:id/obfuscated`] TextView[text=`广告`]',
},
```
bzcrl
    5
bzcrl  
   2023-09-02 22:49:41 +08:00
哇 强力支持!
llbbzh
    6
llbbzh  
   2023-09-02 22:51:25 +08:00 via Android
有意思,感觉可以用用
tangkeke20
    7
tangkeke20  
   2023-09-02 22:53:03 +08:00 via Android   ❤️ 1
李跳跳:杀了我一个,还有后来人!!!
CXPLAY
    8
CXPLAY  
   2023-09-02 22:55:50 +08:00 via Android
强, 支持一下.
shenzt1968
    9
shenzt1968  
   2023-09-02 23:00:27 +08:00
安卓 tv 能用吗?
iwlei
    10
iwlei  
   2023-09-02 23:05:05 +08:00
支持自定义吗?我还用李跳跳帮我点地铁二维码
floatkayau
    11
floatkayau  
   2023-09-02 23:08:42 +08:00   ❤️ 1
开发者能抗住腾讯的铁拳吗?
lisongeee
    12
lisongeee  
OP
   2023-09-02 23:08:56 +08:00   ❤️ 2
这个 APP 是我两年前开始磨磨蹭蹭边玩遍写的,核心部分是 那个 GKD 节点高级选择器,是用 kotlin multiplatform 写的

kotlin 可以编译到 js ,这使得网页审查工具也能执行选择器,这个对规则书写效率提高是很大的

界面 UI 使用体验可能不太好,因为我的审美比较辣鸡,请见谅,但是规则执行部分是没问题
2218675712
    13
2218675712  
   2023-09-02 23:11:29 +08:00
能通过 shizuku 激活吗,某些手机上无障碍服务不稳定,经常自动关闭
lisongeee
    14
lisongeee  
OP
   2023-09-02 23:11:44 +08:00
@iwlei

什么自定义规则都能行,只要有快照,这个选择器引擎能玩出花来,地铁二维码 这种寸寸小 case

这个规则还能实现自动接受微信转账,自动微信抢红包,但是我以前不小心把写的规则删除了,我后续补一下
Jirajine
    15
Jirajine  
   2023-09-02 23:13:00 +08:00 via Android
特权应用最好不要直接联网
lisongeee
    16
lisongeee  
OP
   2023-09-02 23:14:05 +08:00
@2218675712

shizuku 目前只支持 获取 activityId ,通过 shizuku 获取 无障碍服务是可以实现的,但是我手机的 shizuku 老是自动关闭

因此就没怎么实现,后续会支持的,但是我的无障碍很稳啊,从来没有关闭过
lisongeee
    17
lisongeee  
OP
   2023-09-02 23:14:44 +08:00
@Jirajine

不联网怎么更新订阅获取新规则组啊,而且这个是开源的,你完全可以自己构建
2218675712
    18
2218675712  
   2023-09-02 23:15:12 +08:00
@lisongeee 感谢,已 star
xiaolushuo123
    19
xiaolushuo123  
   2023-09-02 23:15:32 +08:00
支持下,tv 上可以使用吗
lisongeee
    20
lisongeee  
OP
   2023-09-02 23:17:08 +08:00
@xiaolushuo123

> 支持下,tv 上可以使用吗

抱歉我没有 tv ,但是如果 tv 上如果能开启无障碍服务,我猜测可以
Jirajine
    21
Jirajine  
   2023-09-02 23:24:56 +08:00 via Android
@lisongeee #17 规则更新需要非常频繁吗?如果实时性要求没那么高,可以内置到 apk 里定期 release ,或者让用户从文件/剪切板导入。
倒不是开源的问题,而是最小化权限原则。里跳跳被很多人信任也是因为静态规则。使用下来感觉这些规则并不需要一直频繁更新,第三方应用的变更并不多,所以未必需要引入在线订阅这种适用于非常动态的场景。
lisongeee
    22
lisongeee  
OP
   2023-09-02 23:32:48 +08:00
@Jirajine

应用启动第一次更新后可以在设置里配置暂停更新的
lisongeee
    23
lisongeee  
OP
   2023-09-02 23:37:40 +08:00
@Jirajine

如果不放心你直接把网络权限禁用了就行,应用能设置暂停更新,每个订阅每个 APP 每个规则组也能单独设置禁用的

但是如果不联网,应用有 bug 如何更新呢,这种 app 又不能上架,也不能像 李跳跳一样 微信公众号里分发

另外 APP 自带的默认的订阅是来自 https://github.com/gkd-kit/subscription 这个订阅也是开源维护的
lisongeee
    24
lisongeee  
OP
   2023-09-02 23:39:02 +08:00
@Jirajine #21

> 规则更新需要非常频繁吗?

目前是,目前订阅是 https://github.com/gkd-kit/subscription 虽然我自己够用,但是对大多数人来说,有点少
a90120411
    25
a90120411  
   2023-09-02 23:45:01 +08:00
比李跳跳自由度高了许多,支持~
aQuQ
    26
aQuQ  
   2023-09-02 23:59:41 +08:00
进阶一点的玩法是禁用组件/host op 有考虑这个方向吗?目前貌似没看到这类好用的开源软件。
akira
    27
akira  
   2023-09-03 00:01:16 +08:00
已 star 。
小程序里面的东西他能点么
lisongeee
    28
lisongeee  
OP
   2023-09-03 00:05:24 +08:00
@akira #27

> 小程序里面的东西他能点么

不知道,小程序如果内部提供无障碍就可以点击,比如知乎是套的 h5 ,webview 内部就是可以点击的,我一会试试
lisongeee
    29
lisongeee  
OP
   2023-09-03 00:07:03 +08:00
@aQuQ #25

> 进阶一点的玩法是禁用组件/host op 有考虑这个方向吗?

非常抱歉哈,这个暂不考虑,这个应用核心在于 GKD 高级选择器

说到禁用组件,miui 系统的开屏广告倒是可以使用 adb 命令禁用
lisongeee
    30
lisongeee  
OP
   2023-09-03 00:16:42 +08:00
@akira #27

> 小程序里面的东西他能点么

可以的,这个是饿了么小程序的快照 https://gkd-kit.gitee.io/import/12504305

但是有个缺点,无法通过 activityId 来区分小程序,所有小程序的 activityId 都是 https://gkd-kit.gitee.io/import/12504305
neochen13
    31
neochen13  
   2023-09-03 00:26:05 +08:00 via Android
试用了一下,太棒了,楼主巨巨好强,就是不知道项目能活多久,唉
lisongeee
    32
lisongeee  
OP
   2023-09-03 00:28:22 +08:00
@neochen13 #21

哈哈,感谢,我是开源的啊,应该能活很久

而且我还有选择器教程和订阅规则教程没写呢,后面大家一起维护 APP 和规则嘛
8E9aYW8oj31rnbOK
    33
8E9aYW8oj31rnbOK  
   2023-09-03 00:57:39 +08:00
我也遇到这个问题,无障碍服务经常在自动关闭
dankai
    34
dankai  
   2023-09-03 01:51:47 +08:00
牛啊
88268459
    35
88268459  
   2023-09-03 02:52:48 +08:00 via iPhone
赞,已收藏
osss
    36
osss  
   2023-09-03 06:58:10 +08:00
怎么添加编辑自己的规则,起点的开屏广告跳不了
LuvF
    37
LuvF  
   2023-09-03 07:03:32 +08:00 via Android
下载支持
skull
    38
skull  
   2023-09-03 08:39:27 +08:00 via Android
一个实时读取屏幕信息的软件,就不应该有联网功能
MossFox
    39
MossFox  
   2023-09-03 09:12:21 +08:00   ❤️ 2
这个程序的规则可以说是有必要动态更新的,除非你愿意在各大牛皮癣客户端疯狂热更新界面广告布局的同时自己去手动一次次更新规则。所以,不需要去过多地质疑为何需要联网权限。

当然,重视隐私安全的意识是人人都应该有的。这种使用场景下会需要社区根据源程序来留意一下权限会不会被滥用,我相信原作者是不会乱来的,只是如果有一些别有用心的 fork 构建出的其他渠道传播的安装包,可能就不大好说了。

……啊,不过希望开发者留意一下像是“自动抢红包”之类的这种功能点直接放在纸面上来介绍软件是否合适,因为感觉上这类辅助软件如果直接宣传有这种(外挂性质的)功能,似乎有那么一点不安全。即使不拿来盈利也不代表没有风险。
theprimone
    40
theprimone  
   2023-09-03 12:14:55 +08:00   ❤️ 1
有点东西,不过还在用李跳跳,看完帖子或许可以考虑出一个离线版的 APP ,然后做一个规则发布的网页就好了,有需要用户可以手动复制后导入。
chotow
    41
chotow  
   2023-09-03 12:24:18 +08:00
给这个创意点赞;另外,建议使用 GitHub Action 自动构建 app ,避免人工 Release ,增加可信度。
lisongeee
    42
lisongeee  
OP
   2023-09-03 13:04:23 +08:00
@chotow

GitHub Action 是有的,正在弄
Jirajine
    43
Jirajine  
   2023-09-03 14:46:22 +08:00 via Android   ❤️ 2
@lisongeee
不是不信任你,而是攻击面的问题,开发一个特权程序的同时要考虑防止程序被 exploit 。
因为不能上架,官方发布地址和订阅地址会被墙或干扰,在多小白用户中会通过群组/网盘等渠道传播。
这样有人 host 一个第三方的规则订阅源,然后可以偷偷添加如社交媒体自动关注点赞转发等操作。而让用户手动导入本身也会鼓励用户 review 他要导入的内容。同理如果不直接联网,第三方渠道传播的恶意打包版本也更容易让用户警觉。
另外介于里跳跳的前车之鉴,应该从最开始就考虑规避风险的问题。建议把规则仓库下掉,另开一个“community”账户维护规则,两个仓库相互声明没有关联,所有操作用户负责之类的。
Jirajine
    44
Jirajine  
   2023-09-03 14:47:41 +08:00 via Android
@lisongeee
关于上架,可以上架 Google play fdroid 等海外商店,但还是那个问题,因为墙和干扰的缘故,大部分小白用户还是要依赖网盘群组等非官方渠道传播。
ofovvv
    45
ofovvv  
   2023-09-03 14:58:34 +08:00
这个不错啊
littleTomorrow1
    46
littleTomorrow1  
   2023-09-03 16:06:55 +08:00
楼主花了多长时间做的,如果是新闻出来后才做的,那行动力太强了吧!🐮🍺
lisongeee
    47
lisongeee  
OP
   2023-09-03 16:24:22 +08:00
@Jirajine

你说的很有道理,一旦开源,滥用是不可避免

照你这样说只能做成闭源+不联网+用户手动粘贴导入的形式了,因为别人完全可以 fork 版本加隐藏订阅后分发,这时候 APP 就已经有恶意规则了

但是 APP 从 2 年前我设计的时候就需要网络,不然审查工具 https://github.com/gkd-kit/inspect 无法连接调试

而且现在已经开源了,我顶多去上架一下 Google play fdroid

> 官方发布地址和订阅地址会被墙或干扰

这个目前是不会的,这个 APP 及其订阅的会被上传到 https://www.npmjs.com/package/@gkd-kit/app ,然后通过 https://npmmirror.com/ 去检测订阅更新和 APP 更新
fkzz
    48
fkzz  
   2023-09-03 16:25:55 +08:00
好东西,建议还是增加离线手动导入规则功能。
Jirajine
    49
Jirajine  
   2023-09-03 17:06:22 +08:00 via Android
@lisongeee #47 恶意版本的分发倒是和开源闭源关系不大,主要是考虑到直接联网更 vulnerable 。一是小白订阅到恶意规则,二是如果不联网那么添加网络权限的恶意版本会更易辨别。
如果被墙和干扰的问题能解决,那倒是好很多。不过考虑到以后可能要规避风险,规则订阅只能以 unofficial 的方式提供,添加一些诸如 diff view 等便于用户 review 规则的功能还是有必要的。
lisongeee
    50
lisongeee  
OP
   2023-09-03 17:23:30 +08:00
@Jirajine

> 添加一些诸如 diff view 等便于用户 review 规则的功能还是有必要的

谢谢,很好的提议

另外也可以添加一个标识表示 [官方订阅] / [第三方源] 这个可以直接从 https 链接来标识

比如现在的订阅是 https://registry.npmmirror.com/@gkd-kit/subscription/latest/files

这个订阅里每个对象都是有 key 标识的,一开始就为 diff 考虑了
ppgame
    51
ppgame  
   2023-09-03 21:29:10 +08:00 via Android
比如如何添加规则 或者修改规则啊 默认的喜马拉雅无法屏蔽开屏广告
Joomaen
    52
Joomaen  
   2023-09-03 21:29:25 +08:00 via Android
star 了,还有点击记录。比跳跳好用,支持
lisongeee
    53
lisongeee  
OP
   2023-09-03 21:43:42 +08:00
@ppgame #51

> 比如如何添加规则 或者修改规则啊 默认的喜马拉雅无法屏蔽开屏广告

https://github.com/gkd-kit/subscription
vokins
    54
vokins  
   2023-09-03 22:00:23 +08:00
感谢分享!
oneisall8955
    55
oneisall8955  
   2023-09-03 23:27:50 +08:00 via Android
网易云音乐 开屏无效
lisongeee
    56
lisongeee  
OP
   2023-09-03 23:31:59 +08:00
@oneisall8955 #55

> 网易云音乐 开屏无效

谢谢反馈,可以到 https://github.com/gkd-kit/subscription/blob/main/CONTRIBUTING.md 打快照给我调试或者直接提 pr
oneisall8955
    57
oneisall8955  
   2023-09-04 00:27:27 +08:00 via Android
@lisongeee 应该是我手机问题,重启 app ,重新授权又行了😂
neochen13
    58
neochen13  
   2023-09-04 04:25:31 +08:00
老哥好,微博跳过突然就不生效了,但是贴吧跳过还有效……
lisongeee
    59
lisongeee  
OP
   2023-09-04 09:51:53 +08:00
@neochen13

谢谢反馈,可以到 https://github.com/gkd-kit/subscription/blob/main/CONTRIBUTING.md 打快照给我调试或者直接提 pr
Thiece
    60
Thiece  
   2023-09-04 10:33:26 +08:00
这个帖子的回复楼层,十分贴切的展示的国内开源环境的恶劣。
开源项目,代码和订阅地址都开源了,对代码不放心可以自己 Code review ,对编译不放心可以自己编译;
觉得订阅源不好可以自己部署一个订阅源。
shunia
    61
shunia  
   2023-09-04 10:49:06 +08:00
@Thiece #60 不是明明讨论的越来越正能量怎么到你这儿就变成“国内...恶劣”了,真是什么人看什么内容,我都服了。妈呀你这种人真的应润尽润吧你。

下边的回复一个比一个有价值啊,提供订阅源的解决方案,提供一些产品的想法。本来我看他纯粹是一个李跳跳的替代感觉替换的必要性挺低的,最多给个 star 支持一下,或者当个备用。看完回复列表我的感受是产品不错,开发者也很不错,替换的意愿都提升了不少。

结果拉到最后看到你这么个回复,真的有点无语。
ZR91b424aaQ98Y9o
    62
ZR91b424aaQ98Y9o  
   2023-09-04 10:58:50 +08:00
支持支持
Thiece
    63
Thiece  
   2023-09-05 05:56:51 +08:00
@shunia
你说得对,恶劣这个词现在来看确实用的不妥,但我不明白这和应润尽润之间有什么逻辑关联;
另外关于你认为的有价值的回复,这一点我持保留意见,也不是面向产品与开发者的。
Litccc
    64
Litccc  
   2023-09-05 08:15:33 +08:00 via Android
酷安的开屏广告突然不能跳过了,但是卡片广告没问题
lisongeee
    65
lisongeee  
OP
   2023-09-05 09:46:30 +08:00
@Litccc

你好,不能跳过的话,可以按照 https://github.com/gkd-kit/subscription/blob/main/CONTRIBUTING.md 打一个快照给我更新规则
Leung818
    66
Leung818  
   2023-09-05 15:50:35 +08:00
已 star 并下载支持
2218675712
    67
2218675712  
   2023-09-05 18:42:38 +08:00 via Android
miui 有个问题,晚上自动关闭无障碍,第二天醒来,无障碍就自动关闭了
zjiwgod
    68
zjiwgod  
   2023-10-07 02:29:59 +08:00 via Android
点击速度和李跳跳比如何
X21541
    69
X21541  
   2023-10-23 11:17:22 +08:00
为啥装了以后,有些 app 会自动乱跳出一些回复窗口,比如百度贴吧。
MrCharlesWu
    70
MrCharlesWu  
   2023-10-24 11:21:48 +08:00
@lisongeee 楼主,感谢分享,这个软件用了段时间挺好用,只是在 MIUI14 上经常自动被关闭无障碍权限,软件是最新版,有空的话请帮忙看看是什么原因呢
mbooyn
    71
mbooyn  
   2023-11-01 17:32:40 +08:00
真不错,学了一下,也能自己加本地规则了,好使啊,速度也非常快
hilljian
    72
hilljian  
   2023-11-09 10:49:19 +08:00
请问本地规则怎么加的?有教程吗?
a6821630
    73
a6821630  
   2023-11-27 10:38:44 +08:00
苹果怎么使用呢? 下载什么 APP ? 或者 openwrt 怎么使用呢?
BaseException
    74
BaseException  
   2023-12-06 13:32:01 +08:00
@a6821630 #73 openwrt 当然没法用。苹果也没有这个 app ,苹果能用 quanx
baixian
    75
baixian  
   2023-12-20 11:56:49 +08:00
安信证券可以添加一下规则吗?
skyphone001
    76
skyphone001  
   2023-12-20 18:18:04 +08:00
火了,这周 GitHub 1000 个星,牛逼啊
TechOrange
    77
TechOrange  
   2023-12-21 16:37:05 +08:00
很不错,整个框架结构很清晰,开放的 DIY ,接下来可能需要应对某些厂商的恶意举报。由于有联网功能,未备案 app 可能被河蟹,扣上 zp 的帽子...
zj
    78
zj  
   320 天前 via iPhone
突然发现,2024 年 2 月初,作者停止维护规则了…
s842646
    79
s842646  
   308 天前 via Android
没有什么基础想自己编写规则,能给点建议学哪些知识吗?
wuyusite
    80
wuyusite  
   179 天前
升级到 1.8.0-beta.2 后感觉更加好用了,特别是配合 Shizuku 一起使用。
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2805 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 11:47 · PVG 19:47 · LAX 03:47 · JFK 06:47
Developed with CodeLauncher
♥ Do have faith in what you're doing.