使用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 相关文章推荐
JavaScript 事件入门知识
Apr 13 Javascript
jquery.fastLiveFilter.js实现输入自动过滤的方法
Aug 11 Javascript
分享经典的JavaScript开发技巧
Nov 21 Javascript
Javascript HTML5 Canvas实现的一个画板
Apr 12 Javascript
Boostrap基础教程之JavaScript插件篇
Sep 08 Javascript
js实现将json数组显示前台table中
Jan 10 Javascript
基于hover的用法实例(推荐)
Jul 04 Javascript
用vue构建多页面应用的示例代码
Sep 20 Javascript
WEEX环境搭建与入门详解
Oct 16 Javascript
JavaScript this使用方法图解
Feb 04 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
Mar 05 Javascript
vue2的 router在使用过程中遇到的一些问题
Apr 13 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 Static关键字实用方法
2010/06/04 PHP
php常用的url处理函数总结
2014/11/19 PHP
php实现约瑟夫问题的方法小结
2015/03/23 PHP
修复ShopNC使用QQ 互联时提示100010 错误
2015/11/08 PHP
PHP使用curl制作简易百度搜索
2016/11/03 PHP
PHP xpath()函数讲解
2019/02/11 PHP
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
jquery自动填充勾选框即把勾选框打上true
2014/03/24 Javascript
jQuery控制Div拖拽效果完整实例分析
2015/04/15 Javascript
js数组的五种迭代方法及两种归并方法(推荐)
2016/06/14 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
2017/02/17 Javascript
Vue路由管理器Vue-router的使用方法详解
2020/02/05 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
python使用mysqldb连接数据库操作方法示例详解
2013/12/03 Python
Python中列表和元组的相关语句和方法讲解
2015/08/20 Python
Python学习之用pygal画世界地图实例
2017/12/07 Python
Python3使用pandas模块读写excel操作示例
2018/07/03 Python
IntelliJ IDEA安装运行python插件方法
2018/12/10 Python
python os模块简单应用示例
2019/05/23 Python
python之pexpect实现自动交互的例子
2019/07/25 Python
使用python接受tgam的脑波数据实例
2020/04/09 Python
Python PyQt5模块实现窗口GUI界面代码实例
2020/05/12 Python
pytorch学习教程之自定义数据集
2020/11/10 Python
css3制作动态进度条以及附加jQuery百分比数字显示
2012/12/13 HTML / CSS
CSS3圆角边框和边界图片效果实例
2016/07/01 HTML / CSS
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
中职生自荐信
2013/10/13 职场文书
证券期货行业个人的自我评价
2013/12/26 职场文书
坚定理想信念心得体会
2014/03/11 职场文书
开展党的群众路线教育实践活动剖析材料
2014/10/13 职场文书
运动会闭幕式致辞
2015/07/29 职场文书
社区宣传标语口号
2015/12/26 职场文书
解析redis hash应用场景和常用命令
2021/08/04 Redis
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android
Js类的构建与继承案例详解
2021/09/15 Javascript