auto.js自动化处理插件 - 葡萄浏览器多账号签到

作者:matrix 发布时间:2020-02-11 分类:零零星星

这些天在家研究autojs操作,完全可以用它来模拟手动点击滑动app的各种操作,这个自动化是真的香~
ios端的Jsbox没这么友好,毕竟系统完全不同,也有很多限制。

https://hyb1996.github.io/AutoJs-Docs

目前要使用多个账号登录,然后进行点击签到,看广告的需求。

环境:mi8 Android9 AutoJs[4.1.1] 葡萄浏览器com.qwh.grapebrowser

AutoJs在应用市场都被下架了,留个下载的渠道:

https://github.com/SuperMonster002/Hello_Sockpuppet/raw/master/%5Bauto.js%5D%5B4.1.1_alpha2%5D%5Barm-v7%5D(b69a4e23).apk

https://static.hhtjim.com/wp-content/uploads/2020/02/auto.js4_.1.1_alpha2arm-v7b69a4e23.apk_.zip?sign=377919b098ce3ad425a74a2edbdc1af8&t=6766ed3f

鼓捣了几天,差不多完工。测试的app是葡萄浏览器com.qwh.grapebrowser,最终效果是运行后自动切换账号来签到。
第一次编写的确是各种懵逼,为啥子不动了,日志在哪里怎么看,每次都手动复制代码到手机好麻烦。。。

开发环境vscode

vscode插件来开发很方便。如果没有开发调试环境,我每次都要微信发送代码的消息,toast,再上app清空粘贴运行,累死。给hyb1996好评,相当不容易。

  1. command + shift + p运行Start Server命令来开启远程环境。

  2. auto.js APP设置里打开连接电脑,填入电脑端内网ip。当然手机和电脑是要一个内网环境

图片5130-auto.js插件 - 葡萄浏览器多账号签到

  1. 运行Run命令就可以在app端运行插件脚本。注意默认模式需要打开在Auso.js界面中启动。

开发

文档:

https://hyb1996.github.io/AutoJs-Docs/

要操作的控件基本信息都需要用 autojs app的悬浮窗设置里面找到分析

"auto"
console.show();//开启log窗口

//等待打开app
launchApp('葡萄浏览器');
waitForPackage("com.qwh.grapebrowser");

const LOGIN_ACTIVITY = 'com.qwh.grapebrowser.mvp.base.login.LoginActivity';
const MAIN_ACTIVITY = 'com.qwh.grapebrowser.mvp.navigation.NavigationActivity';
const SETTING_ACTIVITY = 'com.qwh.grapebrowser.ui.main.activity.mineview.SystemSettingActivity';
const BASEDIALOG = 'com.qwh.base.BaseDialog';

var  iv_cancel = id("iv_cancel"); //粘贴板搜索窗口的取消按钮
var ad = id('skip_view');//跳过广告按钮
var my = id("ll_mine");//我的按钮
var sign = id("iv_sign");//签到图标
var sign_in = id("iv_sign_in");//签到按钮
var profile_photo = id("iv_pic").className("android.widget.ImageView").clickable(true);//头像
var exit_btn = id('ll_exit');//退出登录的按钮. 不可点击 只能获取坐标来操作
var exit_ac = id('tv_dialog_message_confirm'); //同意执行退出
var login_btn = id('tv_login');//登录按钮 

var accounts = {
    "131***1110": "123123"
};

cance_list = [ad , iv_cancel];

//监听弹窗事件(异常界面处理)
threads.start(function(){
    while(true){
        sleep(100);
        for (i in cance_list){
            //toast(cance_list[i]);
            if(cance_list[i].exists()){
                cance_list[i].click();
            }
        }

    };
});

//监听音量下键
threads.start(function(){
  isKeyDown();
})

//id("iv_pic").className("android.widget.ImageView").clickable(true)  .findOne().click();


//根据控件布局点击
function click_btn_func (widget_list,time ){
  if(widget_list instanceof Array){
    for(var i in widget_list){
      var widget = widget_list[i];
      if(widget.exists()){
        if(time){
          while(!widget.findOne(time).click());
        }else{
          while(!widget.findOne().click());
        }

        // if(widget_list[i].clickable()){//可点击判断  测试没有用。
        //   toast('aaaa');
        // }
      }
    }
  }else{
    if(time){
      while(!widget_list.findOne(time).click());
    }else{
      while(!widget_list.findOne().click());
    }
  }
}

//根据坐标点击控件
function click_coord_func(widget_list){
  if(widget_list instanceof Array){
    for(var i in widget_list){
      let widget = widget_list[i];
      if(widget.exists()){
        widget = widget.findOne();
          //获取其中心位置并点击
        while( !click(widget.bounds().centerX(), widget.bounds().centerY()) );
      }
    }
  }else{
    let widget = widget_list.findOne();
          //获取其中心位置并点击
    while( !click(widget.bounds().centerX(), widget.bounds().centerY()) );
  }
}

// 我的界面中判断是否登录
function is_login_of_my_activity(){
    return !!profile_photo.exists();
}

function logout(){
  console.log('function: logout')

  //已经进入我的界面
    // waitForActivity(MAIN_ACTIVITY);//入口主界面 activity
  if(is_login_of_my_activity()){//如果已登录,则点击退出
    console.log('发现有登录账号')
    //切记等待界面响应
    click_btn_func([profile_photo]);
    waitForActivity(SETTING_ACTIVITY);//等待界面响应
    click_coord_func([exit_btn]);
    waitForActivity(BASEDIALOG);
    console.log('返回到登录界面');
    click_btn_func([exit_ac]);
  }else{//已经是退出了 进入登录界面
    console.log('发现已经退出');
      //我的界面点击登录按钮操作
  // if(id('tv_btn').exists()){
  //   .findOne().click();
  // }
  console.log('查找「登录/注册」按钮 进入登录界面')
  click_btn_func( id('tv_btn'),4000);
  }
}

function login(phone,pwd){
  //已进入登录界面
    waitForActivity(LOGIN_ACTIVITY);
    setText(0,phone);
    setText(1,pwd);
  click_btn_func([login_btn]);
  console.log('登录完成')
}

//检测是否点击了音量下键的方法
function isKeyDown(){
  //按键时不会弹出音量框
  events.setKeyInterceptionEnabled("volume_down",true);
  //监听按键
  events.observeKey();
  events.on("key_down",function(volume_down,event){
      toast("正在关闭此脚本");
      //退出脚本
      sleep(500);
      engines.stopAll();
      //直接返回桌面
      home();
  });
}

//每秒执行检测操作 超时退出
function await_callback(callback,timeout_second){
  let _n = 0;
  while(true){
    if(_n > timeout_second){// 最长等待n秒检测
      console.log('await_callback最长等待超时 break')
      break;
    }
    if(callback()){//执行回调 返回true
      return true;//返回true标记给外部
      // break;
    }
    sleep(1000);//步长 1秒
    _n++;
  }
  return false
}

console.log('查找关闭按钮');
await_callback(function(){
    if(className("android.widget.ImageView").depth(5).bounds(55,130,137,212).exists()){
        className("android.widget.ImageView").findOne().click();
        console.log('完成 关闭广告按钮');
        return true
    }
    return false
},3);

  //确定图片 领取报销额度
  console.log('等待界面 准备领取');
  // waitForActivity('com.qwh.grapebrowser.dialog.s');//等待领取报销额度的页面
  var pull_down = await_callback(function(){
    if(className("android.widget.FrameLayout").exists()){
      console.log('点击确定FrameLayout 领取');
      click_coord_func(className("android.widget.FrameLayout"));
      return true;
        }
        return false;
  },30);

console.log('done');

说明:
上面成品修改下账户密码可以直接运行。
需要注意的是代码中很多时候卡住不动都需要判断控件或者按钮是否存在,否者findOne()会一致做轮询。
用log输出,查看运行状态
有些控件无法触发click()方法,需要查看其clickable属性是否为true,意即为是否可点击
不能正常按照控件布局点击的话只能用坐标进行点击操作

安卓是真的香,以后想拥有一台一加😂

参考:

https://hyb1996.github.io/AutoJs-Docs

https://github.com/SuperMonster003/auto.js_Projects/tree/Ant_Forest

https://www.jianshu.com/p/d2ad3ce9cf87

https://thbelief.coding.me/2019/04/02/Auto-js-Script%E5%BC%80%E5%8F%91-%E4%BA%8C/

https://www.autojs.org/

https://www.autojs.org/topic/1651/%E5%BD%93%E6%8E%A7%E4%BB%B6-clickable-false-%E6%97%B6-%E6%80%8E%E4%B9%88%E8%BF%9B%E8%A1%8C%E7%82%B9%E5%87%BB%E6%88%96%E8%80%85%E8%A7%A6%E6%91%B8

PEACE~

直接下载google play应用-APK Downloader

作者:matrix 发布时间:2013-11-08 分类:兼容并蓄

想要从 google Play 直接下载到 APK 文件的确是很麻烦的事情。

有了APK Downloader,那就可以直接下载应用。

地址

http://apps.evozi.com/apk-downloader/

说明:

输入框里填写google paly的应用地址

https://play.google.com/store/apps/details?id=org.leetzone.Android.yatsewidgetfree&hl=zh_CN

回车之后就有直接下载的那绿色按钮了

图片4780-直接下载google play应用-APK Downloader

其他

20151016 P.S. apkpure同样可以

http://apkpure.com/

180322 P.S.
https://www.apkmirror.com
https://www.apklinker.com

190219 P.S.
https://apk-dl.com

参考:
http://www.freegroup.org/2013/11/apk-downloader/

如何直接从 Google Play 各国市场下载 APK 文件?

用虚拟机安装Android

作者:matrix 发布时间:2013-10-06 分类:零零星星

现在已经有很多Android模拟器可用,更简单快捷。


Android-x86

官网:http://www.android-x86.org/

google code:https://code.google.com/p/android-x86/downloads/list

google翻译了一下google code上很友好的提示:

图片4810-用虚拟机安装Android

由于我没有安装vm或者其他虚拟机,android-x86那就只有以后再说。目前最新的版本android-x86-4.3-20130725.iso

如果看官需要安装,建议参考:

http://wenku.baidu.com/view/5c60fd3067ec102de2bd8947.html

 

http://walker-a.com/archives/2160

http://louxi.me/archives/1858

AirDroid2-用浏览器控制安卓设备

作者:matrix 发布时间:2013-07-14 分类:兼容并蓄 零零星星

AirDroid2

AirDroid是一款可以在电脑的浏览器上对手机进行管理的应用,需要wifi网络支持,手机安装启用服务后,在PC的浏览器即可登陆进行管理和操作,可以管理联系人、短信、文件、应用、照片、铃声、音乐、通话记录,还可以快速搜索市场的应用、定位手机等等。

有了AirDroid2,真是太爽了。。。

下载:https://play.google.com/store/apps/details?id=com.sand.airdroid&feature=search_result

网盘备份(v2.1.0版本):http://pan.baidu.com/s/1o6oLGNK

AirDroid2-用浏览器控制安卓设备

界面都是中文的使用起来很方便。

安卓端安装后可以用内网ip登录(还可设置加密链接)、web.airdroid.com或者扫描二维码

界面都是中文的使用起来很方便

界面都是中文的使用起来很方便-用浏览器登录

浏览器登录后便可操作。使用web.airdroid.com登录控制端可以使用更多功能 如:寻找手机、常用联系人。

拨打电话(通话要到设备上操作,付费后可以使用电脑通话)、更改语言、搜索应用并安装都可以在顶部的工具栏上实现。 阅读剩余部分 »

小米1s连拍软件Fast Burst Camera

作者:matrix 发布时间:2013-03-20 分类:兼容并蓄

使用此软件传说最快能达到30张/秒!(估计是mi2吧)

下载: Fast.Burst.Camera.v4.1.5.APK http://yfdisk.com/file/hhtjim/31a363ad/

本人mi1s是在当地电信营业厅买的~简直是个坑啊,捆绑的高消费。“what's up!!!”  :cold:  不说了。

mi1s实测为10张/秒。测试次数较少,具体的帧率还需自测!

应用介绍:

Fast Burst Camera(快速连拍相机)是Android平台上最快的相机应用程序,每秒可以高速拍摄30张照片(低端设备上每秒能够拍摄5-10张照片),不仅仅是最新的iPhone才能办到!

手机端测试截图来自MIoneS

版本信息

MioneS版本信息

来自:【Mi资源组】我用小米1连拍~最快30张/秒!

Mdict词典文件

作者:matrix 发布时间:2013-01-26 分类:兼容并蓄

Mdict

手机上安装了mdict这种外挂型辞典软件相当好用。早在以前就在小明上用过了zdict,只是没这个安卓版Mdict强大。

那时候都遭同学羡慕啊。哈哈。

网上收罗来的MDX词典文件。

 

常用中文词典:http://dl.vmall.com/c0969vmpa2

几个英汉词典:http://dl.vmall.com/c0l1rztt8c
15万词的美式发音库,共376M大小,分4个压缩包,全部下载后解压即可.
压缩包1:http://dl.vmall.com/c0ldqi9w2x
压缩包2:http://dl.vmall.com/c0ve8jdkyo
压缩包3:http://dl.vmall.com/c0ff8eitua
压缩包4:http://dl.vmall.com/c03wmfd000

ED2k上部分资源下载:http://www.ed2000.com/ShowFile.asp?FileID=232113

掌上百科N多 词典:http://pdawiki.5d6d.net/bbs.php