使用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 相关文章推荐
javascrip客户端验证文件大小及文件类型并重置上传
Jan 12 Javascript
javascript 中__proto__和prototype详解
Nov 25 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
Jul 02 Javascript
Bootstrap Chart组件使用教程
Apr 28 Javascript
ES6新特性八:async函数用法实例详解
Apr 21 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
Jul 11 Javascript
Vue Router history模式的配置方法及其原理
May 30 Javascript
js实现类似iphone的网页滑屏解锁功能示例【附源码下载】
Jun 10 Javascript
vue从一个页面跳转到另一个页面并携带参数的解决方法
Aug 12 Javascript
微信小程序实现上传多个文件 超过10个
Mar 30 Javascript
vue-cli4.x创建企业级项目的方法步骤
Jun 18 Javascript
基于JavaScript实现年月日三级联动
Jun 22 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
提取HTML标签
2006/10/09 PHP
php实现文件下载更能介绍
2012/11/23 PHP
Zend的MVC机制使用分析(二)
2013/05/02 PHP
PHP 字符串长度判断效率更高的方法
2014/03/02 PHP
php计算两个整数的最大公约数常用算法小结
2015/03/05 PHP
PHP模拟asp.net的StringBuilder类实现方法
2015/08/08 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
PHP设计模式之迭代器模式Iterator实例分析【对象行为型】
2020/04/26 PHP
如何使用json在前后台进行数据传输实例介绍
2013/04/11 Javascript
Node.js和PHP根据ip获取地理位置的方法
2014/03/14 Javascript
jQuery向后台传入json格式数据的方法
2015/02/13 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
快速获取/设置iframe内对象元素的几种js实现方法
2016/05/20 Javascript
JS获取一个未知DIV高度的方法
2016/08/09 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
基于casperjs和resemble.js实现一个像素对比服务详解
2018/01/10 Javascript
React Navigation 使用中遇到的问题小结
2018/05/08 Javascript
jQuery实现的页面详情展开收起功能示例
2018/06/11 jQuery
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
javascrit中undefined和null的区别详解
2019/04/07 Javascript
JavaScript实现省市区三级联动
2020/02/13 Javascript
js+css实现扇形导航效果
2020/08/18 Javascript
js闭包和垃圾回收机制示例详解
2021/03/01 Javascript
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
python文件的md5加密方法
2016/04/06 Python
python 数据清洗之数据合并、转换、过滤、排序
2017/02/12 Python
使用Python进行AES加密和解密的示例代码
2018/02/02 Python
python图形用户接口实例详解
2019/12/16 Python
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
大学生的应聘自我评价
2013/12/13 职场文书
兰兰过桥教学反思
2014/02/08 职场文书
十七岁的单车观后感
2015/06/12 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
浅谈Nginx 中的两种限流方式
2021/03/31 Servers
JavaScript ES6的函数拓展
2022/01/18 Javascript