使用AutoJs实现微信抢红包的代码


Posted in Javascript onDecember 31, 2020

需要准备的工具有:AutoJs,VSCode,一部手机

1. 首先使用AutoJs的布局设置查找红包的Id

使用AutoJs实现微信抢红包的代码  

使用AutoJs实现微信抢红包的代码

可以看出来红包的id为“aag

关于这个红包的id请以自己看到的为准

因为我在上午写的时候这里的id还是“an3”,到下午的时候就变成“aag”了

然后在VSCode里编写代码

var redEnvelopes = id("aag").find();

返回一个id为aag的redEnvelopes集合

此处注意find和findOne的区别 find:返回所有id为aag的集合

findOne:返回一个id为aag的对象

 既然他是一个集合,现在只需要找到最新的那个红包然后点击就可以了

var redEnvelopes_x = redEnvelopes[redEnvelopes.length - 1].bounds().centerX();
var redEnvelopes_y = redEnvelopes[redEnvelopes.length - 1].bounds().centerY();

此处的代码是获取最新的红包在屏幕上的(X,Y)的坐标

不直接使用click是因为我太菜了

找不到id().findOne().click();又或者id().findOne().children().click();等等这种·····

这样标准的句子点击,原因就是这么简单

有了红包的坐标后就可以直接使用

click(redEnvelopes_x,redEnvelopes_y);

直接点击坐标来打开红包

2. 接着继续布局分析

使用AutoJs实现微信抢红包的代码

红包“开”的id为“den”,以此类推打开红包后返回聊天界面的id为dm

var open = id("den");
if(open.exists()){
  open.findOne().click();
  sleep(2000);
  toast("返回");
  id("dm").findOne().click();
}else{
  toast("红包已领取或过期")
  sleep(1000)
  id("dm").findOne().click();
}

此时已经可以实现自动领取最新红包的动作。

但是

问题也就显现出来了,你会发现他会一直点最新的那一个红包,不管他在屏幕的什么地方,就算已经领取完了他也会一直点,没完没了。

解决思路:

使用一个打开红包和未打开红包的不同来辨别红包是否需要打开。

使用AutoJs实现微信抢红包的代码使用AutoJs实现微信抢红包的代码

.非常轻松的发现可以通过背景颜色来分辨

requestScreenCapture(false);
var img = captureScreen();
var color = images.pixel(img, X, Y);
var point = findColor(img, "#000000", {
  region: [X, Y, 50, 50],
  threshold: 4
});

通过阅读官方文档可以发现有一个专门来辨别颜色的方法

现在只需要知道未领取红包的颜色就可以了。

使用企鹅的截图很方便可以获取鼠标当前的颜色

未领取红包的颜色是(249,165,71) 随便找一个网站把这个RGB值转换成16进制可以得到#F9A547

此时代码为

requestScreenCapture(false);
var img = captureScreen();
var color = images.pixel(img, redEnvelopes_x , redEnvelopes_y );
var point = findColor(img, "#F9A547", {
  region: [redEnvelopes_x , redEnvelopes_y , 50, 50],
  threshold: 4
});

已经可以实现只点击未领取红包,还有一个问题

那就是当前页面没有红包的话红包集合的长度为0,不做处理的话肯定会出问题。

所以要在每次获取集合做后判断一下就可以解决了。

完整代码分享

requestScreenCapture(false);
var redEnvelopes = id("aag");
var redEnvelopes_x = 0;
var redEnvelopes_y = 0;
 
while(true){
  if(redEnvelopes.exists()){
    redEnvelopes_point = id("aag").find();
    if(rb_point.length > 0){
      redEnvelopes_x = rb_point[redEnvelopes_point.length - 1].bounds().centerX();
      redEnvelopes_y = rb_point[redEnvelopes_point.length - 1].bounds().centerY();
      var img = captureScreen();
      var color = images.pixel(img, redEnvelopes_x, redEnvelopes_y);
      var point = findColor(img, "#FA9D3B", {
        region: [redEnvelopes_x, redEnvelopes_y, 50, 50],
        threshold: 4
      });
      if(point){
        toast("发现新红包!");
        click(redEnvelopes_x, redEnvelopes_y);
        sleep(1000);
        openBox();
        sleep(1000);
      }
    }else{
      //当前界面没有红包 不作任何处理
    }
  }
}
 
function openBox(){
  var open = id("den");
  if(open.exists()){ 
    open.findOne().click();
    sleep(2000);
    toast("返回");
    id("dm").findOne().click();
  }else{
    toast("红包已领取或过期")
    sleep(1000)
    id("dm").findOne().click();
  }
}

到此这篇关于使用AutoJs实现微信抢红包的代码的文章就介绍到这了,更多相关AutoJs实现微信抢红包内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
关于实现代码语法标亮 dp.SyntaxHighlighter
Feb 02 Javascript
js网页侧边随页面滚动广告效果实现
Apr 14 Javascript
jquery通过closest选择器修改上级元素的方法
Mar 17 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
Jul 12 Javascript
Bootstrap table表格简单操作
Feb 07 Javascript
微信小程序实战之轮播图(3)
Apr 17 Javascript
JavaWeb表单及时验证功能在输入后立即验证(含用户类型,性别,爱好...的验证)
Jun 09 Javascript
ES6解构赋值的功能与用途实例分析
Oct 31 Javascript
使用js实现一个简单的滚动条过程解析
Sep 10 Javascript
javascript头像上传代码实例
Sep 28 Javascript
js观察者模式的弹幕案例
Nov 23 Javascript
JS前端canvas交互实现拖拽旋转及缩放示例
Aug 05 Javascript
Vue中inheritAttrs的使用实例详解
Dec 31 #Vue.js
element 动态合并表格的步骤
Dec 31 #Javascript
vue导入.md文件的步骤(markdown转HTML)
Dec 31 #Vue.js
Selenium执行JavaScript脚本的方法示例
Dec 31 #Javascript
javascript实现随机抽奖功能
Dec 30 #Javascript
JS+JQuery实现无缝连接轮播图
Dec 30 #jQuery
微信小程序弹窗禁止页面滚动的实现代码
Dec 30 #Javascript
You might like
浅析HTTP消息头网页缓存控制以及header常用指令介绍
2013/06/28 PHP
基于PHP的简单采集数据入库程序
2014/07/30 PHP
PHP面向对象程序设计高级特性详解(接口,继承,抽象类,析构,克隆等)
2016/12/02 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
javascript 正则表达式相关应介绍
2012/11/27 Javascript
Jquery动态替换div内容及动态展示的方法
2015/01/23 Javascript
AngularJS实现元素显示和隐藏的几个案例
2015/12/09 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
Bootstrap被封装的弹层
2016/07/20 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
VueJs组件prop验证简单介绍
2017/09/12 Javascript
基于zepto.js实现登录界面
2017/10/09 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
2018/07/11 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
vue封装swiper代码实例解析
2019/10/08 Javascript
python制作企业邮箱的爆破脚本
2016/10/05 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
Django模板之基本的 for 循环 和 List内容的显示方式
2020/03/31 Python
HTML5中实现拖放效果无须借助javascript
2012/12/26 HTML / CSS
Clos19英国:高档香槟、葡萄酒和烈酒在线购物平台
2020/07/10 全球购物
2014年党员创先争优承诺书
2014/05/29 职场文书
企业宣传标语
2014/06/09 职场文书
医学专业大学生求职信
2014/07/12 职场文书
自愿解除劳动合同协议书
2014/09/11 职场文书
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
党员干部民主生活会议批评与自我批评材料
2014/09/20 职场文书
一次性工伤赔偿协议书范本
2014/11/25 职场文书
总经理岗位职责
2015/02/04 职场文书
入党转正申请报告
2015/05/15 职场文书
2015年社区居委会工作总结
2015/05/18 职场文书
教你利用python实现企业微信发送消息
2021/05/23 Python
详解nginx location指令
2022/01/18 Servers
css3应用示例:新增的选择器
2022/03/16 HTML / CSS
flex布局中使用flex-wrap实现换行的项目实践
2022/06/21 HTML / CSS
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技