同城头条  >  技术分享  >  抖音自动上号源码分享
抖音自动上号源码分享
2023年06月16日 17:32   浏览:451   来源:seoIT技术

今天分享一个抖音自动上号的源码,如果号太多手动接码太麻烦,有了自动上号就可以一键上号。感兴趣的朋友可以运行打包

ui.layout(

    <vertical padding="16">

        <text textSize="10sp" textColor="black" text="" />

        {/* <input id="cardNo" text="" /> */}

        <text textSize="16sp" textColor="black" text="请输入号" />

        <input id="phoneNo" text="" />

        <text textSize="16sp" textColor="black" text="请输入接码地址" />

        <input id="codeUrl" text="" />

        <text textSize="16sp" textColor="black" text="请输入密码" />

        <input id="password" text="" />

 

        <button id="ok" text="确定" />

 

        <text marginTop="50px" text="日志" />

        <com.stardust.autojs.core.console.ConsoleView id="console" h="*" />

    </vertical>

);

 

ui.console.setConsole(runtime.console);

// 设置控制台字体颜色

let c = new android.util.SparseArray();

let Log = android.util.Log;

c.put(Log.VERBOSE, new java.lang.Integer(colors.parseColor("#dfc0c0c0")));

c.put(Log.DEBUG, new java.lang.Integer(colors.parseColor("#cc000000")));

c.put(Log.INFO, new java.lang.Integer(colors.parseColor("#ff64dd17")));

c.put(Log.WARN, new java.lang.Integer(colors.parseColor("#ff2962ff")));

c.put(Log.ERROR, new java.lang.Integer(colors.parseColor("#ffd50000")));

c.put(Log.ASSERT, new java.lang.Integer(colors.parseColor("#ffff534e")));

ui.console.setColors(c);

 

 

var localStorage = storages.create("autoLoginDy");

loadCache();

 

function saveCache() {

    var cacheData = {

        phoneNo: phoneNo,

        codeUrl: codeUrl,

        password: password,

        cardNo: cardNo,

    }

    log("save cache")

    log(cacheData)

    localStorage.put("cacheData", cacheData);

}

function loadCache() {

    var defaultCacheData = {

        phoneNo: "",

        codeUrl: "",

        password:  "plm123456",

        cardNo: "",

    }

    var cacheData = localStorage.get("cacheData", defaultCacheData);

    log("load cache")

    log(cacheData)

    initData(cacheData);

}

function initData(cacheData) {

    phoneNo = cacheData.phoneNo;

    codeUrl = cacheData.codeUrl;

    password = cacheData.password;

    cardNo = cacheData.cardNo;

 

 

    ui.phoneNo.setText(phoneNo);

    ui.codeUrl.setText(codeUrl);

    ui.password.setText(password);

    //ui.cardNo.setText(cardNo);

}

 

 

 

// 监听心跳失败事件

pjysdk.event.on("heartbeat_failed", function(hret) {

    toast(hret.message);  // 失败提示信息

    exit();  // 退出脚本

})

 

 

 

//监听音量上键按下

events.onKeyDown("volume_up", function(event){

    toast("停止脚本");

    // exit();

    home();

    pjysdk.CardLogout();

    engines.stopAll();

});

//监听菜单键按下

events.onKeyDown("volume_down", function(event){

    toast("停止脚本");

    // exit();

    home();

    pjysdk.CardLogout();

    engines.stopAll();

});

 

 

 

//指定确定按钮点击时要执行的动作

ui.ok.click(function () {

    // localStorage.put("url",ui.url.getText().toString());

    // saveCache();

    threads.start(function () {

       

 

        sleep(1000)

 

 

        toastLog("开始")

        start_shanghao();

        return ;

 

        cardNo = ui.cardNo.getText().toString();

        pjysdk.SetCard(cardNo);

        let ret =pjysdk.CardUnbindDeviceByPassword("7chtxz")

        let login_ret = pjysdk.CardLogin();

 

        if (login_ret.code == 0) {

            // 登录成功,后面写你的业务代码

            toastLog("开始")

            start_shanghao();

    

        } else {

            // 登录失败提示

            toast(login_ret.message);

        }

 

      

    });

 

});

 

function start_shanghao() {

 

 

    log("请确保开启无障碍服务哦~")

 

    auto.waitFor()

 

      //启用按键监听

      events.observeKey();

 

    // setScreenMetrics(1080, 2340);

    //  requestScreenCapture(false);

 

 

    phoneNo = ui.phoneNo.getText().toString();

    codeUrl = ui.codeUrl.getText().toString();

    password = ui.password.getText().toString();

 

    saveCache()

 

    app.launchApp("抖音极速版")

 

 

    loginjisu();

 

    changePass();

 

    app.launchApp("抖音短视频")

    // sleep(5000);

 

    logindy();

 

 

    toastLog("登陆成功")

 

}

 

 

 

function logindy() {

 

    toastLog("开始登陆抖音")

    for (var i = 0; i < 5; i++) {

        if(text("我").exists()){

            break;

        }

        sleep(1000);

    }

 

    

    myWaitFor(text("同意"), 2);

    if (clickUiBounds(text("同意"))) {

        sleep(1000)

    }

    click(500, 500)

 

    for (var i = 0; i < 10; i++) {

        if (!text("输入手机号码").exists()) {

            toastLog("返回到首页操作")

            if (text("我").exists()) {

                clickUiBounds(text("我"))

                sleep(1000);

                break;

            }

            click(device.width - 150, device.height - 50);

            sleep(100)

            back();

            sleep(1000);

            clickUiBounds(text("以后再说"))

        } else {

            break;

        }

    }

 

 

 

 

    clickUiBounds(text("我"))

    myWaitFor(text("密码登录"), 5);

    clickUiBounds(text("密码登录"))

 

 

    myWaitFor(text("输入手机号码"), 5);

    click(130, 380);

    sleep(2000);

    toastLog("选择国家")

    var a = text("搜索国家和地区").findOne();

    var bound = a.bounds();

    text("搜索国家和地区").setText("美国");

    sleep(500)

    click(device.width - 50, bound.centerY())

    sleep(500);

    clickUiBounds(text("+1"));

    sleep(1000);

 

    toastLog("输入手机号码和密码")

    setText(0, phoneNo);

    setText(1, password);

    sleep(1000);

    if(!clickUiBounds(id("cmc"))){

        click(130,690);

    }

    sleep(1000);

    click(device.width / 2, 800)

 

 

    sleep(5000);

    if(text("+1").exists()){

        if(!clickUiBounds(id("cmc"))){

            click(130,690);

        }

        sleep(1000);

        click(device.width / 2, 800)

    }

 

 

 

}

 

function changePass() {

 

    toastLog("开始修改密码")

    back();

    sleep(1000);

    back();

    for (var i = 0; i < 10; i++) {

        if (text("我").exists()) {

            break;

        }

        sleep(1000);

        back();

    }

    clickUiBounds(text("我"));

    myWaitFor(text("获赞"));

    sleep(1000)

    // click(650,100);

    swipe(device.width - 100, 450, 100, 450, 500);

    sleep(1000)

 

    myWaitFor(text("设置"));

    clickUiBounds(text("设置"));

    sleep(1000)

 

    toastLog("等待账号与安全出现。。。")

    myWaitFor(text("帐号与安全"));

    toastLog("等待2222")

    clickUiBounds(text("帐号与安全"));

    sleep(1000)

    myWaitFor(text("抖音密码"));

    clickUiBounds(text("抖音密码"));

    sleep(1000)

 

 

    myWaitFor(text("设置新的登录密码"));

    setText(password);

    sleep(1000)

    // toastLog(id("w7").exists())

    // clickUiBounds(id("w7"))

    click(380, 850)

 

    for (var i = 0; i < 50; i++) {

        var code = getCode("密码");

        if (code && code != lastCode) {

            lastCode = code;

            setText(code);

            sleep(1000);

            // clickUiBounds(id("w7"))

            click(360, 860)

            sleep(3000);

            break;

        }

        sleep(3000);

    }

 

}

 

 

function loginjisu() {

    toastLog("好的。。。")

    myWaitForTwo(text("我知道了"), text("好的"));

    sleep(1000)

    if (text("我知道了").exists()) {

        clickUiBounds(text("我知道了"));

    }

    if (text("好的").exists()) {

        clickUiBounds(text("好的"));

    }

    // 

 

    toastLog("点击好的")

 

    toastLog("等待38金币")

    myWaitForTwo(text("38.00"), text("我"), 5);

    sleep(1000)

    if (text("38.00").exists()) {

 

        // var a = text("38.00").findOne();

        // var bounds = a.bounds();

        // click(bounds.centerX(), bounds.centerY() + 300);

 

        click(300,800)

    }

 

    toastLog("如果在首页")

    if (text("我").exists()) {

        clickUiBounds(text("我"))

 

    }

 

 

    myWaitFor(text("请输入手机号"), 5);

 

    for (var i = 0; i < 10; i++) {

        if (!text("请输入手机号").exists()) {

            if (text("38.00").exists()) {

                // var a = text("38.00").findOne();

                // var bounds = a.bounds();

                // click(bounds.centerX(), bounds.centerY() + 300);

                click(300,800)

            }

            toastLog("如果没有38金币,则返回到首页操作")

            if (text("我").exists()) {

                clickUiBounds(text("我"))

                sleep(1000);

                break;

            }

            click(device.width - 150, device.height - 50);

            sleep(100)

            back();

            sleep(1000);

        } else {

            break;

        }

    }

 

    if (text("请输入手机号").exists()) {

        var a = text("请输入手机号").findOne();

        var bounds = a.bounds();

        click(100, bounds.centerY());

        sleep(1000);

    }

    if(text("密码登录").exists()){

        clickUiBounds(100,400)

        sleep(1000);

    }

    for (var i = 0; i < 100; i++) {

        swipe(device.width / 2, device.height - 100, device.width / 2, 300, 200);

        sleep(100);

        if (text("美国").exists()) {

            sleep(100);

            clickUiBounds(text("美国"));

            break;

        }

    }

    sleep(500);

    text("请输入手机号").setText(phoneNo);

 

    clickUiBounds(text("获取短信验证码"));

 

    var dianjiyanzhengma = text("点击选中两个相同形状的物体");

    myWaitForTwo(dianjiyanzhengma, desc("刷新"), 3);//desc =  刷新

    for (var i = 0; i < 1000; i++) {

        toastLog("等待输入验证....")

        if (!dianjiyanzhengma.exists() && text("请输入验证码").exists()) {

            break;

        }

        sleep(2000);

    }

 

 

 

    for (var i = 0; i < 50; i++) {

        var code = getCode("登录");

        if (code && code != lastCode) {

            lastCode = code;

            text("请输入验证码").setText(code);

            sleep(100);

            var a = text("我已阅读并同意 用户协议 和 隐私政策").findOne();

            var bounds = a.bounds();

            click(bounds.centerX() - 50, bounds.centerY());

            sleep(1000);

            clickUiBounds(text("登录"))

            break;

        }

        sleep(3000);

    }

 

    toastLog("登录成功!!!");

}

 

 

 

function getCode(containsStr) {

    log(codeUrl)

    var r = "";

    try {

        r = http.get(codeUrl);

    }

    catch (err) {

        toastLog(err);

        return "";

    }

    var str = r.body.string();

    toastLog(str);

 

    if (str.indexOf(containsStr) >= 0) {

        var result = str.substring(str.indexOf("验证码") + 3);

        toastLog(result);

        return result;

    }

 

 

    return "";

}

 

 

/**

 *  不能点击的控件,通过坐标点击

 * @param {*} uiSelector

 */

function clickUiBounds(ui) {

    if (ui.exists()) {

        var a = ui.findOne();

        if (a) {

            var b = a.bounds();

            if (b) {

                click(b.centerX(), b.centerY());

                return true;

            }

        }

 

    }

    return false;

}

 

function clickUi(ui) {

    if (ui.exists()) {

        ui.findOne().click() //推送弹框

        return true;

    }

    return false;

}

 

function getRandom(min, max) {

    return Math.floor(Math.random() * (max - min + 1)) + min;

}

 

 

 

function exitApp() {

    for (var i = 0; i < 5; i++) {

        back()

        sleep(200)

    }

}

 

function checkAppOpened(pname) {

    if (!packageName(pname).exists()) {

        app.launchPackage(pname);

        sleep(5000);

    }

}

 

function myWaitFor(ui, times) {

    times = times | 10

    for (var i = 0; i < times; i++) {

        if (ui.exists()) {

            sleep(200);

            return true;

        }

        sleep(1000);

    }

    return false;

}

 

function myWaitForTwo(ui, ui2, times) {

    if (!times) {

        times = 10

    }

    for (var i = 0; i < times; i++) {

        if (ui.exists() || ui2.exists()) {

            sleep(200);

            return true;

        }

        sleep(1000);

    }

    return false;

}

 

 

function commonWatchVideo(times) {

    times = times | 15;

    for (var i = 0; i < times; i++) {

        log("观看视频" + i)

        sleep(2000);

    }

    back()

    sleep(1000)

}

 

 

function skipOpenAppAd(times) {

    imes = times | 10;

    for (var i = 0; i < times; i++) {

        if (clickUiBounds(text("跳过")) || clickUiBounds(desc("跳过"))) {

            break;

        }

        sleep(1000);

    }

}

 

function captureAndSave(path) {

    if (!path) {

        path = "/sdcard/screenshot.png";

    }

    //请求截图

    // requestScreenCapture(false);

    //截图

    var im = captureScreen();

    // var path = "/sdcard/screenshot.png";

    //保存图片

    im.saveTo(path);

    //把图片加入相册

    media.scanFile(path);

    return im;

}

 

 

function simulateSysCapture(path) {

    if (!path) {

        path = path = "/storage/emulated/0/Pictures/Screenshots/Screenshot_20200113-123456.png";

    }

    if (files.exists(path)) {

        files.removeDir(path)

        media.scanFile(path);

    }

    sleep(1000)

    captureAndSave(path)

}



头条号
seoIT技术
介绍
推荐头条
Keywords" 仪陇网、仪陇生活网、专注仪陇本地信息真实传递_仪陇网d-sj.cn/学法减分好助理答题神器一扫就出答案、学法减分好助理扫一扫知道答案app、学法减分好助理考试题库、学法减分好助理20道题模拟考试、学法减分好助理可以减多少分?、学法减分好助理拍照搜题 秒出答案免费、学法减分好助理拍照搜题、学法减分好助理拍照搜题 秒出答案、学法减分好助理可以申请几次?、学法减分好助理题库最新版、仪陇生活网、仪陇生活网招聘、仪陇招聘驾驶员、仪陇新政有哪些厂还在招工、仪陇人才网、仪陇在线、仪陇新政最新急招聘58同城、仪陇新政哪有做兼职的、仪陇县招聘信息最新招聘仪陇生活网招聘、仪陇招聘网最新招聘信息、仪陇生活网二手房、仪陇生活网最新消息、仪陇生活网门面转让、仪陇生活网住房出租最新消息、仪陇生活网发布了信息如何取消、四川仪陇生活网、仪陇人才招聘信息生活网、仪陇生活网、仪陇生活网招聘、仪陇招聘网最新招聘信息、仪陇生活网最新消息、仪陇生活网门面转让、仪陇生活网二手房、仪陇生活网住房出租最新消息、仪陇生活网最新招聘暑假工、四川仪陇生活网、仪陇手机生活网、仪陇招聘网最新招聘信息、仪陇招聘驾驶员、仪陇县租房信息、仪陇新政招聘网最新招聘、仪陇找工作、仪陇最新招聘、仪陇生活网招聘、仪陇人才网、仪陇招聘信息招聘仪陇招聘信息信息、仪陇招聘c1驾照、仪陇房价、四川仪陇县房价多少钱一平方米、仪陇县房价现在是多少、仪陇房产网、仪陇新政房价多少钱一平米、仪陇新政房价、仪陇房价为什么这么高、仪陇房价多少钱一平方、仪陇房价如何走、仪陇房价为什么这么高2019、仪陇新闻网、仪陇新闻网头条、仪陇新闻最新消息今天、仪陇新闻网今日新闻、仪陇新闻直播、仪陇新闻网丁强、仪陇新闻网直播视频、仪陇新闻视频、仪陇新闻综合频道直播、仪陇广告公司、仪陇广告语、仪陇金山广告、仪陇驾校、仪陇驾校报名费用、仪陇驾校C1多少费用、仪陇驾校88队哪个教练好、仪陇驾校在什么地方、仪陇驾校科目一考试、仪陇驾校学费、仪陇驾校科一早上笫一堂几点、仪陇驾校蒲、仪陇坤安驾校、仪陇工厂招聘、仪陇工厂有拿回家干的活吗?、仪陇新政工厂招聘、仪陇新政招聘信息工厂、仪陇家电维修、仪陇家电回收、仪陇家电清洗、仪陇电脑维修哪家好、仪陇电脑城在哪里、仪陇电脑销售在什么地方、仪陇电脑回收、仪陇电脑培训、仪陇电脑商家、壹家电脑维修、仪陇二手家具市场、仪陇家具城、仪陇家具厂、仪陇家具维修师傅、仪陇家具定制、仪陇家具厂网上程、仪陇家具市场、仪陇家具城在哪里、仪陇二手家具回收、南充仪陇二手家具市场、四川仪陇房产信息网、仪陇马鞍房价、广西桂林房价、仪陇一中录取分数线2021、仪陇翰林锦府、仪陇金城二手房的房价、仪陇房价为什么这么高、仪陇新政租房最新消息、仪陇县金城镇房价下跌、仪陇县招聘信息最新招聘、仪陇房产网、仪陇河西工业区招聘、仪陇门面出租、四川仪陇黑老大周超、仪陇县金城镇二手房最新消息、仪陇新政本地招聘启事、四川仪陇新镇最新招聘、仪陇县找工作生活网、如何自学电脑维修、娄星区关家垴附近电脑维修、恒达行家维修培训怎么样、珠海唐家电脑维修、台式机维修去哪家好、笔记本维修哪家好、仪陇电脑维修哪家好、电脑维修公司哪家好、秀洲区电脑维修哪家好、仪陇新政本地招聘启事、仪陇县金城镇二手房最新消息、仪陇招聘网最新招聘信息、仪陇新政有哪些厂还在招工、仪陇县河西工业区招工、南部人才网、四川仪陇黑老大周超、仪陇新政哪有做兼职的、四川仪陇新镇最新招聘、长津湖电影、长津湖电影时间多长、长津湖电影完整版免费观看、长津湖电影观后感、长津湖电影完整版免费观看HD、长津湖电影完整版免费观看2021、长津湖电影完整版免费观看网站、长津湖电影观后感500字、长津湖电影票多少钱一张、长津湖电影票购买、长津湖成影史历史片票房冠军、长津湖电影完整版免费观看、长津湖3个冰雕连仅2人生还、长津湖战役、长津湖2021免费完整版观看、长津湖票房破30亿、长津湖作文、长津湖观后感、长津湖手抄报、长津湖观后感10篇、刷手机下拉示选上海百首网络、刷手机下拉述约上海百首网络、刷手机下拉安选上海百首网络、刷手机下拉尚选上海百首网络、刷手机下拉安信上海百首网络、苹果手机下拉菜单、华为手机不能下拉、手机下拉功能在哪里设置、手机下拉设置在哪里设置、手机不能下拉通知栏、仪陇天气、仪陇房产网新楼盘、仪陇县楼盘房价最新消息、仪陇县、仪陇天气预报15天、仪陇县房价、仪陇招聘网最新招聘信息、仪陇属于四川哪个市、仪陇县金城镇、仪陇网、仪陇房产网新楼盘、仪陇县招聘网、仪陇网上在逃人员、仪陇网吧多久开业、仪陇网约车平台、仪陇网红地、仪陇网吧、仪陇网吧开门了吗、仪陇网络电视台、仪陇生活网、仪陇生活网招聘、仪陇生活网最新招聘信息、仪陇生活网最新消息、仪陇生活网门面转让、仪陇生活网二手房、仪陇生活网发布了信息如何取消、四川仪陇生活网、仪陇手机生活网、仪陇人才招聘信息生活网、仪陇丁家大院、仪陇森家环保、仪陇县房价、仪陇二手房、仪陇二手房出售信息、仪陇房产查询系统、仪陇房子出售、仪陇房子能不能买、仪陇房子贵、仪陇房子还会拆迁、仪陇房子出租、仪陇首座房子好不好、仪陇房产网新楼盘、仪陇房产网、仪陇房产备案查询、仪陇房产信息网、仪陇房产查询系统、仪陇房产管理局官网、仪陇房产交易网、仪陇房产价格、仪陇房产中介、仪陇房产局、仪陇河西工业区有些什么厂、仪陇县河西工业区招工、仪陇河西工业园2020招聘、仪陇河西电子厂招聘信息、仪陇河西招聘驾驶员、仪陇河西大华宝公学、仪陇河西工业区有哪些制衣厂、仪陇河西工业园、仪陇河西工业区电子厂、仪陇河西工业区灯泡厂、薇仪陇之家、薇仪陇生活网新政房价、仪陇新政房价、仪陇新政二手房出售、仪陇新政楼盘、仪陇在线、仪陇生活网、仪陇生活网是大家了解仪陇的资讯窗口,同时也是仪陇人的网上家园,为大家提供免费查询发布仪陇便民生活信息,是仪陇地区综合信息门户网站!

Copyright ©2021 仪陇家园同城网--版权所有   蜀ICP备2022002889号-1