admin管理员组

文章数量:1559090

说明

本文提供的代码仅供参考。不建议用于生产环境。
可能有些地方在最新版本的auto.js上面需要做修改,才能运行。

auto.js简介

auto.js是利用安卓系统的“辅助功能”实现类似于按键精灵一样,可以通过代码模拟一系列界面动作的辅助工作。
与“按键精灵”不同的是,它的模拟动作并不是简单的使用在界面定坐标点来实现,而是类似与win一般,找窗口句柄来实现的。

auto.js使用javascript作为脚本语言,目前使用rhino 1.7.7.2作为脚本引擎,支持es5与部分es6特性。

推荐教程

auto.js pro安卓全分辨率免root引流脚本开发视频教程(hd超清1080p)

开发文档

auto.js pro开发文档
文档尚在完善中,可能有文档描述和代码实际行为有出入的情况。

为什么要使用auto.js pro开发脚本,有什么特点?

吸引我使用auto.js pro的原因有很多。最主要的几个原因是:

  • auto.js pro能开发免root的安卓脚本
  • auto.js pro基于节点操作,能开发全分辨率的脚本,自动适配各种安卓机型
  • auto.js pro丰富的ui组件,能自定义各种样式的安卓界面
  • auto.js pro使用的javascript的语法比较优雅,代码可读性强
  • auto.js pro的命令库非常的丰富,接口比较多
  • auto.js pro脚本文件体积比较小。1000行的代码,打包后的apk文件只有3-5m,还没有广告

示例代码

// qq验证码极为简单,
// 可用循环 过验证码 
// 省钱省力 经测试 比联众打码网页返码都快
//        大佬看看就好o(∩_∩)o哈哈~
//此代码由飞云脚本圈整理提供(www.feiyunjs)
var 账号错误计数 = 0
var 卡在主界面计数 = 0
滑块验证码()
function 滑块验证码() {
    for (var i = 1; i < 99; i  ) {
        //登录账号//登录账号//登录账号
        
        launchapp("qq");
        if (text("允许").findone(5000)) {
            text("允许").findone(5000).click()
            sleep(500)
            text("允许").findone(5000).click()
        }
        classname("android.widget.button").text("登录").waitfor();
        if (classname("android.widget.button").text("登录").findone(5000)) {
            classname("android.widget.button").text("登录").findone(5000).click()
            log("开始分割账号")
            toast("开始分割账号")
        }
        file = open("/sdcard/脚本/腾讯账号.txt", "r")
        //读取一行并打印
        var 内容 = file.readline();
        log(内容)
        toast(内容)
        file.close();
        var 登陆分割后的数据 = 内容.split("----");
        log(登陆分割后的数据);
        var 账号 = 登陆分割后的数据[0];
        log(账号);
        var 密码 = 登陆分割后的数据[1];
        log(密码)
        settext([0], 账号)//把“你好”输入到下标为1的输入框里
        settext([1], 密码)//把“你好”输入到下标为1的输入框里
        classname("android.widget.imageview").desc("登 录").findone(5000).click()
        
        toastlog(read_delete());//删除账号
        for (var ii = 1; ii < 99; ii  ) {
            //判断账号状况
            for (var iii = 1; iii < 99; iii  ) {
                //滑块
                //如果觉得效率低可以选择打码平台,或者自己去买本地滑块库
                
                if (classname("android.view.view").text("拖动下方滑块完成拼图").findone(5000)) {
                    swipe(232, 1040, 817, 1038, 1500)//滑块点自己取
                    sleep(2500)
                    if (classname("android.view.view").text("拖动下方滑块完成拼图").findone(3000)) {
                        click(995, 1157)//滑块不成功刷新滑块/不同分辨率自己取
                        sleep(1000)
                    }
                } else {
                    toast("滑动完成")
                    log("滑动完成")
                    
                    break;
                }
            }
            if (classname("android.widget.textview").text("消息").findone(2000)){
              log("登录成功")
              toast("登录成功")
              break;
            }else if(classname("android.widget.textview").text("绑定手机号码").findone(2000)) {
                log("登录成功")
                toast("登录成功")   
                break;
            }
            //判断是否登录成功
            if (classname("android.widget.textview").text("登录失败").findone(5000)) {
                账号错误计数  
                log("密码错误,重新登录")
                toast("密码错误,重新登录")
                click("确定")
                sleep(500)
                log("登录失败"   账号错误计数   "次")
                toast("登录失败"   账号错误计数   "次")
                sleep(2000)
                if (账号错误计数 >= 3) {
                    log("重复登录没有成功,换号")
                    toast("重复登录没有成功,换号")
                    toastlog(read_delete());
                    账号错误计数 = 0;
                    break;
                }
                classname("android.widget.imageview").desc("登 录").findone(5000).click()
            } else if (text("去安全中心").findone(3000)) {
                log("冻结,重新登录")
                toast("冻结,重新登录")
                text("取消").findone(5000).click()
                toastlog(read_delete())
                break;
            } else if (classname("android.widget.button").text("用户注册").findone()) {
                卡在主界面计数  
                log("卡在主界面重新登录")
                toast("卡在主界面重新登录")
                if (卡在主界面计数 >= 3) {
                    log("重复登录没有成功,换号")
                    toast("重复登录没有成功,换号")
                    toastlog(read_delete());
                    卡在主界面计数 = 0;
                    break;
                }
             
                classname("android.widget.imageview").desc("登 录").findone(5000).click()
                sleep(5000)
            
            }
        }
        //登录成功
        if(classname("android.widget.textview").text("绑定手机号码").findone(2000)) {
            log("登录成功")
            toast("登录成功")   
            break;
        }else if(classname("android.widget.textview").text("消息").findone(2000)){
            log("登录成功")
            toast("登录成功")   
            break;
        }
        
    }
}
function read_delete() {
    //删除第一行
    var path = "/sdcard/脚本/腾讯账号.txt";//txt文本路径
    var reg = /^\s |s $/g; //匹配无效空白行
    var txt = files.read(path).replace(reg, "").split("\n");
    let ret_text = txt[0];
    log(ret_text.length);
    if (txt != "") {
        txt.splice(0, 1);
        files.write(path, txt.join("\n"));
        if (ret_text.length > 0) {
            return ret_text.trim();
        }
    } else {
        return "没有号了"
    }
    file.close();
}

本文标签: