欢迎光临 - 我的站长站,本站所有资源仅供学习与参考,禁止用于商业用途或从事违法行为!

js教程

淘宝618活动自动完成任务autojs脚本代码

js教程 我的站长站 2022-06-02 共205人阅读
const VERSION = '2022618-16'
 
if (!auto.service) {
    toast('无障碍服务未启动!退出!')
    exit()
}
 
let showVersion = function () {
    console.log('当前版本:' + VERSION)
    console.log('Hello, World!')
    toast('当前版本:' + VERSION)
}
 
// alert('请把手机放稳,不要摇晃!', '不然有时候会跳出合伙赢喵币,导致任务阻塞')
 
function getSetting() {
    let indices = []
    autoOpen && indices.push(0)
    autoMute && indices.push(1)
 
    let settings = dialogs.multiChoice('任务设置', ['自动打开淘宝进入活动。多开或任务列表无法自动打开时取消勾选(注意,分身运行淘宝大概率导致任务收益变为100)', '自动调整媒体音量为0。以免直播任务发出声音,首次选择需要修改系统设置权限'], indices)
 
    if (settings.length == 0) {
        toast('取消选择,任务停止')
        exit()
    }
 
    if (settings.indexOf(0) != -1) {
        storage.put('autoOpen', true)
        autoOpen = true
    } else {
        storage.put('autoOpen', false)
        autoOpen = false
    }
    if (settings.indexOf(1) != -1) {
        storage.put('autoMute', true)
        autoMute = true
    } else {
        storage.put('autoMute', false)
        autoMute = false
    }
}
 
let storage = storages.create("tb_task");
let autoOpen = storage.get('autoOpen', true)
let autoMute = storage.get('autoMute', true)
getSetting()
 
if (autoMute) {
    try {
        device.setMusicVolume(0)
        toast('成功设置媒体音量为0')
    } catch (err) {
        alert('首先需要开启权限,请开启后再次运行脚本')
        exit()
    }
}
 
console.show()
showVersion()
console.log('开始完成喵糖任务...')
console.log('按音量下键停止')
 
device.keepScreenDim(60 * 60 * 1000)
 
function registerKey() {
    try {
        events.observeKey()
    } catch(err) {
        console.log('监听音量键停止失败,应该是无障碍权限出错,请关闭软件后台任务重新运行。')
        console.log('如果还是不行可以重启手机尝试。')
        quit()
    }
    events.onKeyDown('volume_down', function (event) {
        console.log('喵币任务脚本停止了')
        console.log('请手动切换回主页面')
        device.cancelKeepingAwake()
        exit()
    })
}
threads.start(registerKey)
 
// 全局try catch,应对无法显示报错
try {
 
    // 自定义去取消亮屏的退出方法
    function quit() {
        device.cancelKeepingAwake()
        exit()
    }
 
    // 自定义一个findTimeout,find_f是原本的查询器 text('sss').find()
    function findTimeout(findF, timeout) {
        let c = 0
        while (c < timeout / 50) {
            let result = findF.find()
            if (result.nonEmpty()) return result
            sleep(50)
            c++
        }
        return null
    }
 
    // 自定义一个findTextDescMatchesTimeout
    function findTextDescMatchesTimeout(reg, timeout) {
        let c = 0
        while (c < timeout / 50) {
            let result = textMatches(reg).findOnce() || descMatches(reg).findOnce()
            if (result) return result
            sleep(50)
            c++
        }
        return null
    }
 
    // 查找任务按钮
    function findTask() {
        var jumpButtonFind = textMatches(/去浏览|去搜索|去完成|去签到|逛一逛|去逛逛|去观看|去参赛/) // 找进入任务的按钮,10秒
        var jumpButtons = findTimeout(jumpButtonFind, 10000)
 
        if (!jumpButtons) {
            return null
        }
 
        for (var i = 0; i < jumpButtons.length; i++) {
            var taskName, content
            try {
                taskName = jumpButtons[i].parent().child(0).child(0).text()
                content = jumpButtons[i].parent().child(0).child(1).child(0).text()
            } catch (err) {
                console.log(err)
                continue
            }
            if (taskName) {
                if (taskName.match(/签到领/)) {
                    console.log('进行签到任务')
                    sleep(1000)
                    jumpButtons[i].click()
                    sleep(8000)
                    return findTask()
                }
                if (!(taskName.match(/淘金币|提醒|话费|斗地主|消消乐|流浪猫|开88|扔喵糖|占领|邀请|登录|组队|参与|施肥|浇水|特价版|小鸡|消除|穿搭|森林|点淘|人生|我的淘宝|庄园/) || content.match(/小互动/))) {
                    return [taskName, jumpButtons[i]]
                }
            }
        }
        return null
    }
 
    function liulan() {
        // if (textMatches(/.*浏览.*/).findOne(10000)) { // 等待浏览出现
        //     let v = className('android.support.v7.widget.RecyclerView').findOnce() // 滑动
        //     if (v) {
        //         sleep(1000)
        //         v.scrollForward()
        //     }
        // }
 
        // textMatches(/.*浏览得奖励.*/).findOne(15000) // 等待开始
        sleep(5000)
        let finish_c = 0
        while (finish_c < 50) { // 0.5 * 50 = 25 秒,防止死循环
            let finish_reg = /.*任务已完成.*|.*失败.*|.*上限.*|.*开小差.*|.*喵币已发放.*/
            if (textMatches(finish_reg).exists() || descMatches(finish_reg).exists()) { // 等待已完成出现,有可能失败
                break
            }
            if (textMatches(/.*休息会呗.*/).exists()) {
                alert('触发淘宝验证', '请手动验证后返回淘宝首页,重新执行任务')
                console.log('异常退出。')
                quit()
            }
            if (textContains('互动奖励').exists() ||
                descContains('互动奖励').exists()) {
                console.log('跳过互动任务')
                break
            }
            sleep(500)
            finish_c++
        }
 
        if (finish_c > 49) {
            console.log('未检测到任务完成标识。返回。')
            // console.log('如果你认为这是一个bug请截图反馈。')
            // console.log('一般情况下,二次运行脚本即可。')
            // console.log('请手动切换回主页面')
            // device.cancelKeepingAwake()
            // quit()
            back()
            sleep(1000)
            // TODO: 返回检测
            if (!textContains('当前进度').findOne(5000)) {
                console.log('似乎没有返回,二次尝试')
                back()
            }
            return
        }
 
        console.log('任务完成,返回')
 
        back()
        sleep(1000)
        if (!textContains('当前进度').findOne(5000)) {
            if (currentActivity() == 'com.taobao.tao.TBMainActivity') {
                console.log('返回到了主页,尝试重新进入任务')
                id('com.taobao.taobao:id/rv_main_container').findOnce().child(3).child(0).click()
            } else {
                console.log('似乎没有返回,二次尝试')
                back()
            }
        }
    }
 
    // 打开淘宝活动页面
    console.log('正在打开淘宝...')
    var url = 'pages.tmall.com/wow/z/hdwk/20220618/gamehome?disableNav=YES'
 
    app.startActivity({
        action: "VIEW",
        data: "taobao://" + url
    })
    sleep(2000)
 
    console.log('等待页面加载...')
 
    try {
        textMatches(/领喵币/).findOne(20000)
        console.log('准备打开任务列表')
        sleep(2000)
        let c = findTextDescMatchesTimeout(/领喵币/, 1000)
        if (c) {
            console.log('使用默认方法尝试打开任务列表')
            c.click()
        } else {
            throw '无法找到任务列表入口'
        }
        if (!textContains('当前进度').findOne(8000)) {
            console.log('默认方式打开失败,二次尝试')
            console.log('首先检测弹窗')
            for (let i = 0; i < 2 && text('关闭').findOne(2000); i++) { // 关闭弹窗
                console.log('检测到弹窗,关闭')
                click('关闭')
                sleep(2000)
            }
            console.log('出现未能自动关闭的弹窗请手动关闭')
            sleep(2000)
            // let right = c.bounds().right
            // let left = c.bounds().left
            // let top = c.bounds().top
            // let bottom = c.bounds().bottom
            // click(random(right,left), random(top, bottom))
            click(c.bounds().centerX(), c.bounds().centerY())
            console.log('已点击,等待任务列表出现')
            if (!textContains('当前进度').findOne(8000)) {
                throw '无法打开任务列表'
            }
        }
        console.log('准备搜索任务')
        sleep(2000)
    } catch (err) {
        console.log(err)
        console.log('无法进入任务列表,如果你认为这是bug,请截图反馈')
        quit()
    }
 
    while (true) {
        console.log('寻找任务入口...')
        var jumpButton = findTask()
 
        if (jumpButton == null) {
            // 没有任务之后领取奖励
            var awardButtonFind = textMatches(/立即领取/)
            var awardButtons = findTimeout(awardButtonFind, 10000)
 
            if (awardButtons) {
                for (var i = 0; i < awardButtons.length; i++) {
                    console.log('领取累计任务奖励')
                    awardButtons[i].click()
                    console.log('等待5秒再次领取...')
                    sleep(5000)
                }
            }
 
            console.log('没找到合适的任务。也许任务已经全部做完了。退出。互动任务不会自动完成。')
            console.log('请手动切换回主页面')
            alert('任务已完成', '别忘了在脚本主页领取618红包!互动任务需要手动完成。')
            quit()
        }
 
        if (jumpButton[0].match('去浏览店铺领能量')) {
            console.log('进行浏览店铺任务')
            jumpButton[1].click()
            while (!textContains('任务完成').exists()) {
                console.log('进入店铺浏览')
                text('逛店最多').findOne(15000).parent().click()
                liulan()
                sleep(2000)
            }
            back()
        } else if (jumpButton[0].match(/.*玩游戏.*|.*浏览餐饮卡券.*|.*加油赛.*|.*赚星星.*/)) {
            console.log('进行' + jumpButton[0] + '任务,10秒后返回')
            jumpButton[1].click()
            sleep(10000)
            back()
        } else if (jumpButton[0].match(/领现金/)) {
            console.log('进行' + jumpButton[0] + '任务')
            jumpButton[1].click()
            let into = text('打开链接').findOne(10000)
            if (!into) {
                console.log('无法找到进入领现金的按钮!')
                quit()
            }
            into.click()
            liulan()
        } else {
            console.log('进行' + jumpButton[0] + '任务')
            jumpButton[1].click()
            liulan()
        }
 
        console.log('等待页面刷新...')
        sleep(2000)
    }
} catch (err) {
    device.cancelKeepingAwake()
    if (err.toString() != 'JavaException: com.stardust.autojs.runtime.exception.ScriptInterruptedException: null') {
        console.error(err)
    }
    showVersion()
}


相关推荐
  • autojs
  • JS脚本
  • js代码
  • 京东618活动自动挂机完成任务autojs脚本代码

    const VERSION = &#39;2022618-16&#39; if (!auto.service) { toast(&#39;无障碍服务未启动!退出!&#39;) exit()} let showVersion = function () { console.log(&#39;当前版本:&#39; + VERSION) console.log(&#39;Hello, World!&#39;) ...

    js教程 159 2年前
  • 淘宝618活动自动完成任务autojs脚本代码

    const VERSION = &#39;2022618-16&#39; if (!auto.service) { toast(&#39;无障碍服务未启动!退出!&#39;) exit()} let showVersion = function () { console.log(&#39;当前版本:&#39; + VERSION) console.log(&#39;Hello, World!&#39;) ...

    js教程 205 2年前
  • 两天入门autojs脚本开发视频教程
    两天入门autojs脚本开发视频教程

    课程简介本系列课程完全免费,站长亲手打造零基础两天入门autojs脚本开发视频教程。课程包含:python&web&爬虫开发,JavaScript开发,autojs脚本开发,按键精灵脚本开发。autojs教程截图...

    视频教程 78 3年前
  • 京东618活动autojs脚本分享

    京东618活动autojs脚本,参考czj2369大佬的改了一下,我用的autojs4.1.0版本的基本上都能做完。// 判断停留时间var JUDGE_TIME = 0;var appName = "com.jingdong.app.mall";init();/** * 初始化 */function init() { // 子线程监听脚本 threads.s...

    js教程 233 1年前
  • 去除csdn必须登录复制代码限制JS脚本

    前言现在搜索IT相关的内容都是csdn的结果,下载要登录不说,复制代码也要登录,真是有点麻烦,分享一段去除csdn必须登录复制代码限制JS脚本,可以把页面模式变成可编辑即可随便复制了,附上代码javascript:document.body.contentEditable=&#39;true&#39;;docume...

    js教程 141 3年前
  • jQuery3.6.0更新说明

    即使存在JSONP错误也返回JSON在以前的版本中,当JSONP请求返回错误时,返回通常仍是一个可执行脚本。3.6.0版本已经更改了默认行为,以尝试在这种情况下执行脚本。当遇到错误时,正常的脚本仍将被跳过。修正一个值得强调的bug是关于将焦点重定向到焦点处理程...

    js教程 193 3年前
  • 自用的JavaScript过滤XSS攻击方法

    什么是XSS攻击XSS(Cross Site Scripting),跨站脚本攻击,是一种允许攻击者在另外一个用户的浏览器中执行恶意代码脚本的脚本注入式攻击。本来缩小应该是CSS,但为了和层叠样式(Cascading Style Sheet,CSS)有所区分,故称XSS。对于攻击者来说,能够让受害者浏览器...

    js教程 104 3年前
  • jQuery淡入淡出效果语法教程

    实现前端特效的方法很多,最方便的还是css,当然有些特效还是使用JavaScript脚本比较简单,具体的还得看情况而定。jquery作为高度封装的JavaScript,它给我们提供了一些特效实现方式,我们一起来学习下吧。jQuery Fading 方法通过 jQuery,您可以实现元素的淡入...

    js教程 83 4年前
  • 京东盲盒自动做任务JS脚本
    京东盲盒自动做任务JS脚本

    京东盲盒自动做任务JS脚本,推荐使用:360极速浏览器或者QQ浏览器,调成极速模式 大概能抽到200~500左右个京豆,活动时间内每天都可以,输入代码后自动完成任务和抽奖,大概几分钟搞定!教程步骤如下:1、电脑浏...

    js教程 561 4年前
  • js指定时间定时自动执行代码分享

    示例代码用的`setTimeout()`函数,在指定的时间后执行。代码非常的简单,获取当前时间和设定一个指定时间,指定时间减去当前时间就是定时的时间,如果定时器到期时等于0,就代表时间到了,就运行executeAtTime函数的方法。function executeAtTime() { console....

    js教程 96 1年前
  • JS代码解除网页右键限制

    JS解除右键限制方法一javascript:(function () {function R(a) {ona = "on" + a;if (window.addEventListener){window.addEventListener(a, function (e) {for (var n = e.originalTarget; n; n = n.parentNode){n[ona] = null;}}, true);}window[o...

    js教程 202 4年前
  • 淘宝买家秀API+ajax代码

    淘宝买家秀API+ajax代码,用的是这个API,https://api.66mz8.com/api/rand.tbimg.php?format=jsonJSON返回格式,测试依旧可用。$(function(){ $.get('https://api.66mz8.com/api/rand.tbimg.php?format=json',function(data){ document.getElementB...

    js教程 748 4年前
  • JS判断电脑端手机端自动跳转代码

    JS判断电脑端手机端自动跳转代码,这段代码已经封装好了,不需要任何处理,复制引用就可以使用了。相比网上的JS判断终端代码,这点代码是直接判断终端然后判断域名是否带www.wdzzz.com,带就跳转到m.wdzzz.com//是否是移动端function is_mobile() {var regex_...

    js教程 120 4年前
  • JS年月日星期早中午时间代码

    JS年月日星期早中午时间代码,我的站长站自用时间代码,完美简单。var day=""; var month=""; var ampm=""; var ampmhour=""; var myweekday=""; var year=""; var hh;var wh;mydate=new Date(); myweekday=mydate.getDay(); mymonth=mydate.g...

    js教程 92 4年前