基于Auto.js的猫眼抢票助手

部署和运行

  1. 安装Auto.js:从Auto.js的GitHub页面下载并安装。
  2. 创建脚本:在Auto.js中创建新脚本,将下述代码粘贴进去并保存。
  3. 运行脚本:在Auto.js中运行脚本,确保猫眼APP在前台运行。

c30614e766e94c018d5455391aedf949.png

Auto.js官网: https://pro.autojs.org

Auto.js官方文档: https://pro.autojs.org/docs

Auto.js官方博客: https://blog.autojs.org

脚本代码

console.setTitle("猫眼抢票助手", "#ff00ff00", 25);
console.log("准备开始抢票...");
var interval = 100; // 设置刷新频率(毫秒)
openConsole();

// 设置开抢时间
var UIStartTime = '05-28 12:38'; // 必填
var list = []; // 可以添加需要抢的日期列表
var pp = ''; // 设置金额,不设置则随机抢

main();

// 主函数
function main() {
    if (UIStartTime != "") {
        // 获取系统本地时间
        var strStartTime = UIStartTime;

        // 设置开抢时间
        var year = new Date().getFullYear();
        var month = parseInt(strStartTime.slice(strStartTime.indexOf("-") - 2, strStartTime.indexOf("-"))) - 1; // 月份减1
        var day = parseInt(strStartTime.slice(strStartTime.indexOf(" ") - 2, strStartTime.indexOf(" ")));
        var hour = parseInt(strStartTime.slice(strStartTime.indexOf(":") - 2, strStartTime.indexOf(":")));
        var minute = parseInt(strStartTime.slice(strStartTime.indexOf(":") + 1, strStartTime.indexOf(":") + 3));
        var second = 0;
        var msecond = 0;
        var startTimestamp = new Date(year, month, day, hour, minute, second, msecond).getTime();
        print("获取到开抢时间: " + strStartTime);
        startTimestamp = startTimestamp - 40; // 减去 40ms 的网络延迟
        var damaiTimestamp;
        var startTime = convertToTime(startTimestamp);
        print("开始时间:\n", startTime);
        print("等待开抢...");
        var i = 0;

        // 循环等待,直到到达开抢时间
        while (true) {
            damaiTimestamp = getDamaiTimestamp();

            if (damaiTimestamp >= startTimestamp) {
                print("到点了,自动开始。");
                break;
            }

            var mm = startTimestamp - damaiTimestamp;
            var ss = mm / 1000;
            if (ss > 100) {
                print("剩余:" + (ss) + "秒");
            } else {
                print("剩余:" + (mm) + "毫秒");
            }

            // 定期清屏
            if (i % 200 == 0) {
                print("清屏");
                console.clear();
            }

            i++;
            sleep(interval); // 设置刷新频率
        }

        // 开抢
        while (true) {
            var but1 = className("android.view.View").text("立即预订").exists();
            var but2 = className("android.view.View").text("立即购票").exists();
            var but3 = className("android.view.View").text("特惠购票").exists();
            var but4 = className("android.view.View").text("特惠预订").exists();
            var but5 = className("android.view.View").text("缺货登记").exists(); // 添加抢回流票的按钮
            var result = but1 || but2 || but3 || but4 || but5;

            if (result) {
                if (but1) {
                    className("android.view.View").text("立即预订").findOne().click();
                } else if (but2) {
                    className("android.view.View").text("立即购票").findOne().click();
                } else if (but3) {
                    className("android.view.View").text("特惠购票").findOne().click();
                } else if (but4) {
                    className("android.view.View").text("特惠预订").findOne().click();
                } else if (but5) {
                    className("android.view.View").text("缺货登记").findOne().click(); // 抢回流票
                }
                print("点击了立即购票相关按钮");
                break;
            } else {
                // 如果没有按钮可点击,继续刷新页面以抢回流票
                swipeRefresh(); // 调用页面刷新函数
            }
        }

        print("点击立即订票按钮");
    }
}

// 获取大麦网时间戳(可以根据实际需求调整)
function getDamaiTimestamp() {
    return new Date().getTime();
}

// 将时间戳转换为时间字符串
function convertToTime(timestamp) {
    var date = new Date(timestamp);
    var hours = date.getHours();
    var minutes = date.getMinutes();
    var seconds = date.getSeconds();
    return hours + ":" + minutes + ":" + seconds;
}

// 停止一段时间(毫秒)
function sleep(millis) {
    var start = new Date().getTime();
    while (new Date().getTime() - start < millis) {}
}

// 刷新页面函数(实现方式可能需要根据具体APP调整)
function swipeRefresh() {
    // 模拟下拉刷新动作
    swipe(device.width / 2, device.height / 2, device.width / 2, device.height, 500);
    sleep(1000); // 刷新等待时间
}

注意事项

  • 测试脚本:在实际抢票之前,使用脚本进行多次测试,确保脚本可以稳定运行。
  • 安全性:自动化操作可能被APP检测到并进行限制或封号处理,使用时要谨慎。
  • 改进脚本:根据测试结果不断改进脚本,处理各种可能的异常情况,提高抢票成功率。
  • 最最最重要:确保脚本仅用于个人学习和测试,不要用于非法用途。

 

 

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值