使用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 相关文章推荐
用JS判断IE版本的代码 超管用!
Aug 09 Javascript
jquery解决图片路径不存在执行替换路径
Feb 06 Javascript
javascript实现简单的Map示例介绍
Dec 23 Javascript
jquery的ajax异步请求接收返回json数据实例
Jun 16 Javascript
Javascript中的关键字和保留字整理
Oct 16 Javascript
详谈commonjs模块与es6模块的区别
Oct 18 Javascript
详解Chai.js断言库API中文文档
Jan 31 Javascript
浅谈node.js 命令行工具(cli)
May 10 Javascript
Vue循环组件加validate多表单验证的实例
Sep 18 Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
May 06 Javascript
javascript实现获取中文汉字拼音首字母
May 19 Javascript
Vue如何循环提取对象数组中的值
Nov 18 Vue.js
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
无数据库的详细域名查询程序PHP版(2)
2006/10/09 PHP
php读取文件内容的三种可行方法示例介绍
2014/02/08 PHP
微信支付开发教程(一)微信支付URL配置
2014/05/28 PHP
php简单实现多维数组排序的方法
2016/09/30 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
解决php extension 加载顺序问题
2019/08/16 PHP
Laravel框架下载,安装及路由操作图文详解
2019/12/04 PHP
javascript 打印内容方法小结
2009/11/04 Javascript
Javascript算符的优先级介绍
2013/03/20 Javascript
JavaScript使用DeviceOne开发实战(四)仿优酷视频应用
2015/12/02 Javascript
快速学习AngularJs HTTP响应拦截器
2015/12/31 Javascript
Node.js实用代码段之正确拼接Buffer
2016/03/17 Javascript
Angularjs中controller的三种写法分享
2016/09/21 Javascript
第一次接触神奇的前端框架vue.js
2016/12/01 Javascript
js实现复选框的全选和取消全选效果
2017/01/03 Javascript
jquery dataTable 后台加载数据并分页实例代码
2017/06/07 jQuery
JavaScript中防止微信浏览器被整体拖动的方法
2017/08/25 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
Nodejs实现WebSocket代码实例
2020/05/19 NodeJs
python抓取网页时字符集转换问题处理方案分享
2014/06/19 Python
Python处理JSON数据并生成条形图
2016/08/05 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
Python修改文件往指定行插入内容的实例
2019/01/30 Python
python时间与Unix时间戳相互转换方法详解
2020/02/13 Python
python闭包与引用以及需要注意的陷阱
2020/09/18 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
详解H5 活动页之移动端 REM 布局适配方法
2017/12/07 HTML / CSS
canvas简单连线动画的实现代码
2020/02/04 HTML / CSS
Nike香港官网:Nike HK
2019/03/23 全球购物
Shell如何接收变量输入
2016/08/06 面试题
婚礼司仪主持词
2014/03/14 职场文书
诉讼授权委托书
2014/10/15 职场文书
小学语文教师研修感悟
2015/11/18 职场文书