程序员过年必备 -- Auto.js微信自动抢红包
打开微信就不用管了:
- 自动打开未读消息
- 自动滑动屏幕检测红包
- 自动跳过无效红包
基于Auto JS,apk版本4.01:
- 大多数动作均基于控件
- 极个别点击基于动态抓取的坐标
- 这就意味着不限机型或屏幕尺寸
使用说明:
- 安装auto.js apk
- 导入js脚本
- 在auto js设置中开启悬浮窗,因为懒得写控制逻辑了,直接用悬浮窗控制程序开始或结束
- 打开微信
逻辑思路和关联到的控件信息:
i. 检查是否有红包?循环上滑3次屏幕
ii. 点击红包消息
LinearLayout(clickable=true && depth=13 && id=atb)
iii. 检测红包是否可领?有无[开]
iv. 开红包【开】
Button(desc='开' && id=dan && depth=9)
v. 取得金额
TextView(depth=13 && id=d62 && text=【金额】)
vi. 返回聊天界面
LinearLayout(depth=7 && id=m0 && clickable=true)
vii. 返回微信首页
LinearLayout(depth=9 && id=lr && clickable=true)
主要代码逻辑 - 检测新红包/无效红包
Hints:
1. 如果一个控件本身无法通过click()点击,那么我们可以利用bounds()函数获取其坐标,再利用坐标点击。例如:
var b = desc("打开侧拉菜单").findOne().bounds();
click(b.centerX(), b.centerY()); //如果使用root权限,则用 Tap(b.centerX(), b.centerY());
2. 小心使用find(),findOne()等,注意仔细看原文档,否则会莫名其妙找不到控件或被阻塞
//please avoid to use findOne() as it will jam until get one UIObject
// we could use findOne(500) or findOnce() to instead if need
//搜索新红包并点开领取
function searchNewRedpacket(){
var rp_msg_list = className("android.widget.TextView").id('auk').find();
log("调试信息3" + rp_msg_list);
if(rp_msg_list.length != 0){
log("检测到的红包个数: " + rp_msg_list.length);
for(var i = 0; i < rp_msg_list.length; i++){
var rp_auk = rp_msg_list[i];
var rp_auk_parent = rp_auk.parent();
if(rp_auk_parent.childCount() == 1){
log("### 发现新红包");
var rpB = rp_auk_parent.bounds();
click(rpB.left, rpB.top, rpB.right, rpB.bottom);
log("成功打开红包消息");
openNewRedPacket();
sleep(1000);
}else if(i == (rp_msg_list.length - 1)){
log("当前页面已检测完");
break;
}else{
log("无效红包, 跳过");
}
}
}else if(rp_msg_list.empty()){
log("未检测到红包消息" + rp_msg_list.length);
}else{
return;
}
}
主要代码逻辑 -- 开红包
//领取点开的红包
function openNewRedPacket(){
var draw = desc("开").findOne(500);
log("调试信息2");
if(draw != null){
log("#### 点开新红包");
draw.click();
log("#### Gain a LUCKY succesfully!!!");
sleep(1000);
//领完返回聊天主页
back();
}else{
log("过期之类无效红包");
}
back();
log("返回成功");
}
今天忙的有点晕,就写这些了,需要完整代码的留言,改天抽空上传操作视频和源码到git。
PS: 写这个前后大概花了4晚上(2小时/晚),起因是老婆说他们公司老板经常发大红包她总是抢不到。。。
今晚估计可以让老婆加鸡腿了^_^
程序员过年必备 -- Auto.js微信自动抢红包的更多相关文章
- 10款Mac上程序员装机必备的开发工具推荐和下载
10款Mac上程序员装机必备的开发工具推荐和下载 使用Mac的用户主要有两大类:设计师和程序员,为各位程序员童鞋推荐10个Mac上非常棒的开发工具和辅助工具,分享软件专题[10款Mac上程序员装机必备 ...
- 一步一步实现iOS微信自动抢红包
微信红包 前言:最近笔者在研究iOS逆向工程,顺便拿微信来练手,在非越狱手机上实现了微信自动抢红包的功能. 此教程所需要的工具/文件 yololib class-dump dumpdecrypte ...
- Python/Java程序员面试必备常用问题解析与答案
转自AI算法联盟,理解python技术问题,以及一些常见的java面试中经常遇到的问题,这些面试问题分为四类: 是什么(what) 如何做(how) 说区别/谈优势(difference) 实践操作( ...
- Java程序员面试必备:Volatile全方位解析
前言 volatile是Java程序员必备的基础,也是面试官非常喜欢问的一个话题,本文跟大家一起开启vlatile学习之旅,如果有不正确的地方,也麻烦大家指出哈,一起相互学习~ 1.volatile的 ...
- 程序员面试必备经典CTCI,谷歌面试官经典作品!
1.1 判断一个字符串中的字符是否唯一 1.2 字符串翻转 1.3 去除字符串中重复字符 1.8 利用已知函数判断字符串是否为另一字符串的子串 2.1 从链表中移除重复结点 2.2 实现一个算法从一个 ...
- 资深程序员推荐必备书籍 《C语言程序设计》
当下,IT行业发展日趋迅猛,产值成倍增长,高薪的诱惑更是驱使许多人想要进入IT行业发展.为了使大家更全面理解C语言程序设计,由千锋教研院高教产品研发部编著.清华大学出版社倾情出版的<C语言程序设 ...
- 微信自动抢红包android实现
AccessibilityService-微信自动抢红包 2018年02月01日 16:09:06 阅读数:1757 在领导发红包的时候,看到有些同事在1s.2s抢到红包,为什么他们能够这么快?一定是 ...
- iOS微信自动抢红包插件(支持后台和锁屏下抢红包)
前言:本文主要讲述使用hook方式实现红包插件,涉及到tweak相关知识,如果你不想了解具体实现细节可直接到我的Github地址参考安装(包含越狱和非越狱两种方法) 转眼间2017即将过去,又到了 ...
- .NET程序员也学Node.js——初识Node.js
清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...
随机推荐
- 字符串匹配算法--暴力匹配(Brute-Force-Match)C语言实现
一.前言 暴力匹配(Brute-Force-Match)是字符串匹配算法里最基础的算法,虽然效率比较低,但胜在方便理解,在小规模数据或对时间无严格要求的情况下可以考虑. 二.代码 #include & ...
- 2019-08-15 纪中NOIP模拟B组
T1 [JZOJ3455] 库特的向量 题目描述 从前在一个美好的校园里,有一只(棵)可爱的弯枝理树.她内敛而羞涩,一副弱气的样子让人一看就想好好疼爱她.仅仅在她身边,就有许多女孩子想和她BH,比如铃 ...
- Cleaning Data in R
目录 R 中清洗数据 常见三种查看数据的函数 Exploring raw data 使用dplyr包里面的glimpse函数查看数据结构 \(提取指定元素 ```{r} # Histogram of ...
- Tensorflow中one_hot() 函数用法
官网默认定义如下: one_hot(indices, depth, on_value=None, off_value=None, axis=None, dtype=None, name=None) 该 ...
- 小匠第二周期打卡笔记-Task05
一.卷积神经网络基础 知识点记录: 神经网络的基础概念主要是:卷积层.池化层,并解释填充.步幅.输入通道和输出通道之含义. 二维卷积层: 常用于处理图像数据,将输入和卷积核做互相关运算,并加上一个标量 ...
- 关于微信小程序
1.设置了tabBar的页面,好像用navigator跳不过去.
- 终极教程【zhong】
just for a better future! 资源教程 aiim 综合类 前端知识体系 前端知识结构 Web前端开发大系概览 We ...
- servlet中doGet()和doPost()的用法
转自:https://blog.csdn.net/qq_38963960/article/details/79468182 1.servlet中doGet()和doPost()的用法 一般来说我们是用 ...
- nginx location匹配及rewrite规则
location匹配规则 1. 实例 server{ location = \ { [配置A] } location / { [配置B] } location = /images/ { [配置C] } ...
- SpringCloud Netflix Hystrix
Hystrix的一些概念 Hystrix是一个容错框架,可以有效停止服务依赖出故障造成的级联故障. 和eureka.ribbon.feign一样,也是Netflix家的开源框架,已被SpringClo ...