注意:
小白萌新不需要看这份进阶指南,使用默认设置已经可以跳过绝大部分广告了。
反馈:
公众号: 大小姐李跳跳。🥑
李跳跳是什么?
一款用来跳过开屏广告
和弹窗
的安卓应用。
李跳跳的原理?
利用安卓系统的无障碍
权限,帮助用户自动点击
广告上的跳过按钮
。
自定义规则
1. 开屏广告规则:{"keywords":["xxx"]}
、{"keywords_append":["xxx"]}
李跳跳默认规则已经可以跳过绝大部分开屏广告了,但李跳跳也不是万能的。当我们遇到无法跳过的开屏广告时,可以使用这条规则:{"keywords":["xxx"]}
。其中xxx
可以是跳过按钮
的文案,比如{"keywords":["关闭广告"]}
;也可以是跳过按钮的id
或bounds
,比如:{"keywords":["tv_close_button"]}
、{"keywords":["900,160,1170,250"]}
。
参数 keywords 和 keywords_append 的区别: | |
---|---|
keywords | 会覆盖默认规则。 |
keywords_append | 在默认规则的基础上,追加规则。 |
2. 弹窗规则:{"popup_rules":[{"id":"xxx","action":"xxx"}]}
我们也可以使用李跳跳来关闭应用内的弹窗
,比如下图所示的抖音更新弹窗
,就可以用{"popup_rules":[{"id":"检测到更新","action":"以后再"}]}
规则进行关闭。这条规则的意思是:当检测到「检测到更新」这几个文字的时候,就自动点击「以后再」这个按钮。
细心的你会怀疑上面的规则是不是写错了,为什么参数action
的值不是以后再说
而是以后再
?其实我是故意为之,目的是为了引出以下知识点:规则里面的文字默认情况下是模糊匹配的
。比如改成以后
、以后再说
、再说
,甚至后再
都是可行的。
规则里面的文字默认是模糊匹配
的,自然也支持首尾匹配
和全匹配
,只需在文字前面加上特定的符号就行。参照下面的举例张三
,比如+检测到
的意思是匹配以检测到
开头的文字;比如-用户体验
的意思是匹配以用户体验
结尾的文字;比如=以后再说
的意思是匹配和以后再说
完全相等的文字。其中符号&
是用来连接任意个条件的,你可以把它理解为且
。
举例张三:
{"popup_rules":[{"id":"+检测到&-用户体验","action":"=以后再说"}]}
有时候我们会遇到一些弹窗,它们的关闭按钮不是文字,而是一个叉号
❎ ,比如下图所示的美团弹窗
,此时我们又该如何写规则呢?
分两种情况:
如果这个弹窗可以
通过手机的返回键
关闭,我们可以这样写规则{"popup_rules":[{"id":"=天天神券","action":"GLOBAL_ACTION_BACK"}]}
。其中的GLOBAL_ACTION_BACK
是固定不变的。
如果这个弹窗不可以
通过手机的返回键
关闭,我们需要知道叉号的id
或bounds
才行。假设这个弹窗的叉号的id
是tv_close_button
,我们可以这样写规则{"popup_rules":[{"id":"=天天神券","action":"tv_close_button"}]}
。
但很多时候叉号(弹窗的关闭按钮
) 不一定会有id
,不过也没关系,因为它一定会有bounds
。假设叉号的bounds
是500,900,620,1020
,我们可以这样写规则{"popup_rules":[{"id":"=天天神券","action":"500,900,620,1020"}]}
。
3. 设置强制点击:{"click_way_popup":1}
4. 设置搜索次数:{"search_times_popup":5}
5. 设置延迟点击:{"delay":200}
- 开屏广告延迟点击:
{"delay":200}
- 弹窗延迟点击:
{"delay_popup":200}
温馨提示:
单位毫秒,1秒等于1000毫秒。
6. 设置点击次数:{"popup_rules":[{"id":"xxx","action":"xxx",times:2}]}
有些规则是不用点击的,此时我们可以把点击次数times
设置为0
;有时候我们会遇到两个不一样的弹窗,但它们可以用同一条规则来关闭,此时你可以选择输入两条一模一样的规则,或者输入一条规则但把它的点击次数times
设为2
;
7. 联合规则:{"unite_popup_rules":true}
我们上面举的例子,关闭抖音更新弹窗
和关闭美团天天神券弹窗
,这两个任务都是瞬间任务
,用一条规则表示就行。
但有些任务是持续任务
,它们的耗时是不确定的,至少需要两条规则表示才行。比如有一个按钮需要倒计时100秒后才能点击
,此时我们可以这样写规则:
- 把这个过程的
中间态
用一条规则表示:{"id":"还剩&秒","action":"还剩&秒",times:0}
- 把我们需要点击的按钮用一条规则表示:
{"id":"弹窗","action":"关闭按钮"}
- 设置参数
unite_popup_rules
的值为true
。
所以如果想点击一个100秒后才能点击的按钮
,完整规则应该是:{"popup_rules":[{"id":"还剩&秒","action":"还剩&秒",times:0},{"id":"弹窗","action":"关闭按钮"}],"unite_popup_rules":true}
温馨提示:
利用联合规则我们可以完成很多🌱耗时不确定的任务🌱,比如应用自动安装、微信自动查看多张原图等。
课后作业:
参考公众号分享的
MIUI一键安装规则,实现应用自动安装。
8. 根据CheckBox的状态点击控件
CheckBox
控件有两种状态,一种是选中状态
,另一种是未选中状态
。假设某个CheckBox
控件的bounds
是100,200,300,400
,如果我们要点击它的其中一种状态,可以在bounds
的后面追加数字0
或1
来表示,比如:
- 已选中状态:
100,200,300,400,1
- 未选中状态:
100,200,300,400,0
课后作业:
根据本节知识,实现QQ自动勾选原图。
什么是控件的id
和bounds
?
我们把APP
界面上的元素,比如按钮、图标、输入框这些统称为控件。比如取消按钮
它就是一个文本控件,它的文字就是取消
。我们写规则时可以根据取消
这两个字来定位这个按钮。但有些按钮它是没有文字的,比如上面美团弹窗的叉号按钮
。此时我们需要用到控件的id
或bounds
来定位这些没有文字的按钮。
但什么是控件的id
和bounds
呢?控件的id
就是控件的身份证
(普通用户可以简单这样理解
);控件的bounds
就是控件的大小和位置
信息。
温馨提示:
一个控件是有可能没有id的,但一定会有bounds。
如何获取控件的id
或bounds
?
我们可以通过特定的工具来获取到控件的相关信息,我为大家找到了一个叫autojs
的开源APP,可以到这里下载,密码:1233。
autojs教程:利用 autojs 获取控件信息。
常见问题
1. 我的规则正确,但无法关闭对应弹窗怎么办?
首先,判断你的任务是瞬间任务
还是持续任务
?如果是瞬间任务,
在确保你的规则是正确的前提下,可以试试以下两个方案:
- 如果有跳过提示,设置强制点击就行:
{"popup_rules":[], "click_way_popup":1}
- 如果没跳过提示,延长搜索次数就行:
{"popup_rules":[], "search_times_popup":5}
温馨提示:
搜索次数 search_times_popup 越小越省电,最好是个位数。
如果是持续任务,
可以参考上面的联合规则章节。
2. 出现误点怎么办?
首先,先删除自己的自定义规则,看看是否是自己的规则造成误点。
其次,在少数情况下,李跳跳的默认规则也会出现误点
(错误地点击了其它地方
),最简单的解决方案就是在李跳跳里面找到目标APP
,把它加入白名单
。
其次,你也可以用参数keywords
来覆盖默认的规则,也就是说你自己告诉李跳跳应该点击哪里,比如:{"keywords":["500,900,620,1020"]}
。
3. 不知道某个弹窗属于哪个APP怎么办?
通过autojs
软件获取这个弹窗任意控件的控件信息
,复制控件信息里面的包名
(packageName
) 信息,通过包名
在李跳跳里面搜索对应APP
就行。