前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >双11来了 收猫币麻烦? 使用autojs实现个自动脚本解放双手

双11来了 收猫币麻烦? 使用autojs实现个自动脚本解放双手

作者头像
杭州前端工程师
发布2020-10-28 11:39:54
1.3K0
发布2020-10-28 11:39:54
举报
文章被收录于专栏:前端大白专栏前端大白专栏

前言:

双11来了,我也是一个剁手党,当然要想办法能省点钱算一点,双11的活动是攒喵币,和往年一样,点击各种商家页面来获取,这个过程是一个重复的过程,往年我都是手动点完的,但是今年真不想再继续做这些重复的事了,于是就有了下面这个自动脚本.

技术调研:

在网上也搜索了好多的方式方法,最终还是使用了autojs这个脚本工具,正所谓物理外挂最为致命,这个也有点类似物理外佳了.

实现效果:

还有自动浏览店铺的功能,由于太大就没上传完整的效果图了

实现代码:

这次双11,在淘宝与支付宝中都有活动,所以写了两个项目,不过代码逻辑大体都差不多,主要是点击到活动页面=>等待15秒 => 返回上一层页面... 然后循环

代码贴上:

代码语言:javascript
复制
var baseWidth = 1080,baseHeight = 2400;
var height = device.height;
var width = device.width;

setScreenMetrics(baseWidth,baseHeight);

threads.start(function(){
  events.observeKey();
  events.on("key_down", function(keyCode, events){
    if(keyCode == keys.volume_up){
      toastLog('停止脚本使用')
      exit();
    }
  });
});
var canCapture = requestScreenCapture();
if(!canCapture){
  toast('请授权截图!')
  exit()
}

launchApp('手机淘宝')
sleep(3000);

click(800,1218);

sleep(6000);

let catImg = images.read('/sdcard/catImg.jpg');
if(catImg === null){
  catImg = images.load('https://pic1.zhimg.com/80/v2-8a9af44ba48b553fbbdafd96475ad47c_1440w.jpeg'); // 图片不能为png格式的 无法加载到
  catImg.saveTo('/sdcard/catImg.jpg');
}

// let screenCaptureImg2 = images.grayscale(screenCaptureImg)
// images.save(screenCaptureImg2,'/sdcard/screenCaptureImg2.jpg')
sleep(2000);

// 如果有11月11日见弹出框 则关闭
var eleven = text('好的,11月11日见').findOnce();
if(eleven){
  click('好的,11月11日见');
  sleep(2000)
}

click(942,1973); // 点击  赚喵币


sleep(1500)
while(true){
  var goText = text('去浏览').findOnce();
  if(goText){
    click(goText.bounds().centerX(),goText.bounds().centerY());
    sleep(5000)
    swipe(baseWidth/3,baseHeight - 200,baseWidth/2,200,2000);
    sleep(13000);
    back();
    sleep(2000);
    click('领取奖励');
    sleep(1000)
  }else{
    var goSearch = text('去搜索').findOnce();
    if(goSearch){
      click(goSearch.bounds().centerX(),goSearch.bounds().centerY());
      sleep(5000)
      swipe(baseWidth/3,baseHeight - 200,baseWidth/2,200,2000);
      sleep(13000);
      back();
      sleep(2000);
      click('领取奖励');
      sleep(1000);
      
    }else{
      // 需要更多的变量
      var array = ['逛一逛"潮酷新品"(0/2)','逛一逛"潮酷新品"(1/2)','逛一逛"潮流趋势"(0/2)','逛一逛"潮流趋势"(1/2)','逛一逛"时尚配饰"(0/2)','逛一逛"时尚配饰"(1/2)','逛一逛"家居百货"(0/2)','逛一逛"家居百货"(1/2)'];
      var goTo = null;
      for(var i = 0;i<array.length;i++){
        var a = text(array[i]).findOnce();
        if(a){
          goTo = a;
          break;
        }
      }
      if(goTo){
        click(goTo.bounds().centerX(),goTo.bounds().centerY());
        sleep(2000)
        swipe(baseWidth/3,baseHeight - 200,baseWidth/2,200,2000);
        sleep(15500);
        back();
        sleep(2000);
        click('领取奖励');
        sleep(1000);
      }else{
        break
      }
    }
  }
}
toastLog('结束!');
click(974,650); // 点击右上角关闭
exit();




function readImg(name,url){
  let catImg = images.read('/sdcard/'+name);
  if(catImg === null){
    catImg = images.load(url); // 图片不能为png格式的 无法加载到
    catImg.saveTo('/sdcard/'+name);
  };
  return catImg
}

这段代码是用于淘宝收取喵币的,前后仅花了2小时不到,这一块内容还是比较简单的,主要之前写过类似的代码,有些经验了.

遇到的问题:

1.点击文字,由于不确定一些字体是图片还是纯文本,所以在调试的时候,都是凭感觉去试

2.活动的文本较多,有些地方情况无法用找图片的方式来定位要点击的位置,但是文字内容又不确定,所以只能把可能的文本内容情况给加上,比如这一块 var array = ['逛一逛"潮酷新品"(0/2)','逛一逛"潮酷新品"(1/2)','逛一逛"潮流趋势"(0/2)','逛一逛"潮流趋势"(1/2)','逛一逛"时尚配饰"(0/2)','逛一逛"时尚配饰"(1/2)','逛一逛"家居百货"(0/2)','逛一逛"家居百货"(1/2)']; 现在是把我可能遇到的情况都加上了,如果后面支付宝有增删改查的话,也需要跟着改一下逻辑...

3.手机兼容,由于自己只有一个手机,只能使用自己的手机来测试,虽然官网有说可以通过方法setScreenMetrics(baseWidth,baseHeight)来保持比例,但是自己没试过 也许还是不行呢.

4.还有各类的点击可能性,并没有完成覆盖,有些去完成的任务只能通过手点来获取喵币.

5.autojs是好早之前的框架,现在已经不维护了,有一些es6的语法是不支持的,比如const,let,尽量不用到新语法来写业务逻辑.

6.各种sleep 需要等待app内容加载完成,如果页面有不确定因素也是需要延长下一步的执行逻辑的.

总结:

小东西有大用处,在接下来的几天时间能够帮助我节省好多的时间,让自己感觉高大上一些,多探究一些小玩意,对自己以后的职业生涯也有帮助..

原文链接: https://www.xiaye0.com/?p=78

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档