缙哥哥的博客
与你分享我的点点滴滴生活

支付宝蚂蚁森林自动收能量脚本代码,附视频及文件

就在昨天,缙哥哥的蚂蚁森林总能量达到了一吨(详见《庆祝缙哥哥蚂蚁森林总能量单位升级为吨,好友排行榜第一》),于是乎有人问秘诀是什么?今天缙哥哥就来告诉你,秘诀就是:偷能量!

还记得一年多钱,缙哥哥就有支付宝500+好友,早上7点一遍下来差不多1个小时左右。做着重复的事情,极其耗时间,虽然这是个人人可参与的公益项目,但这让我感到了更加不妥的感觉。所以就想自动收取能量,但是毕竟是在支付宝中,使用蚂蚁森林外挂担心钱是否安全的问题,所以只能使用简单脚本进行操作。

蚂蚁森林自动收能量设备要求

  1. 免ROOT权限(安卓7.0以上)或 ROOT权限
  2. 安卓5.0或更高版本(需要开启无障碍服务)

进阶使用,你还可以配合 Xposed edge pro 定时任务,让他更加自动化,定时定点自动收取,今天只分想下基础部分。

自动收取蚂蚁森林能量的js脚本代码

/**
 * 支付宝蚂蚁森林自动收能量脚本代码
 * https://www.dujin.org/13187.html
 */
auto(); // 自动打开无障碍服务
var config = files.isFile("config.js") ? require("config.js") : {};
if (typeof config !== "object") {
    config = {};
}
var options = Object.assign({
    password: "",
    pattern_size: 3
}, config); // 用户配置合并

// 所有操作都是竖屏
const WIDTH = Math.min(device.width, device.height);
const HEIGHT = Math.max(device.width, device.height);
const IS_ROOT = files.exists("/sbin/su") || files.exists("/system/xbin/su") || files.exists("/system/bin/su");

setScreenMetrics(WIDTH, HEIGHT);
start(options);

/**
 * 开始运行
 * @param options
 */
function start(options) {
    checkModule();

    var Robot = require("Robot.js");
    var robot = new Robot(options.max_retry_times);
    var antForest = new AntForest(robot, options);
    antForest.saveState();
    
    while (!device.isScreenOn()) {
        device.wakeUp();
        sleep(1000); // 等待屏幕亮起
    }
    
    // 连续运行处理
    var taskManager = new TaskManager();
    taskManager.init();
    taskManager.listen();
    taskManager.waitFor();

    // 先打开APP,节省等待时间
    threads.start(function () {
        antForest.openApp();
    });

    if (files.exists("Secure.js")) {
        var Secure = require("Secure.js");
        var secure = new Secure(robot, options.max_retry_times);
        secure.openLock(options.password, options.pattern_size);
        // 拉起到前台界面
        antForest.openApp();
    }

    antForest.launch();
    antForest.work();
    antForest.resumeState();

    // 退出
    exit();
    throw new Error("强制退出");
}

/**
 * 检查必要模块
 */
function checkModule() {
    if (!files.exists("Robot.js")) {
        throw new Error("缺少Robot.js文件,请核对第一条");
    }

    if (!files.exists("Secure.js") && context.getSystemService(context.KEYGUARD_SERVICE).inKeyguardRestrictedInputMode()) {
        throw new Error("缺少Secure.js文件,请核对第一条");
    }
}

function TaskManager() {
    this.task_no = 0;
    this.time_tag = "start_time";
    this.wait_time = 15000;

    this.init = function () {
        engines.myEngine().setTag(this.time_tag, (new Date()).getTime());

        var task_list = this.getTaskList();
        this.task_no = this.findIndex(engines.myEngine(), task_list);
        log(Object.keys(task_list));
    };

    this.getTaskList = function () {
        return engines.all().sort(function(e1, e2) {
            return e1.getTag(this.time_tag) - e2.getTag(this.time_tag);
        }.bind(this));
    };
    
    this.findIndex = function (engine, list) {
        var engine_id = engine.id;
        var id_list = list.map(function (o) {
            return o.id;
        });
        
        return id_list.indexOf(engine_id);
    };

    this.listen = function() {
        // 子线程
        threads.start(function () {
            // 监听音量上键
            events.observeKey();
            events.onceKeyDown("volume_up", function (event) {
                engines.stopAll();
                exit();
            });
        });
    };

    this.waitFor = function () {
        while (1) {
            device.wakeUpIfNeeded();
            
            var task_no = this.findIndex(engines.myEngine(), this.getTaskList());
            if (task_no > 0) {
                log("任务" + this.task_no + "排队中,前面有" + task_no + "个任务");
                sleep(this.wait_time);
            } else {
                log("任务" + this.task_no + "开始运行");
                break;
            }
        }
    };
}

/**
 * 蚂蚁森林的各个操作
 * @param robot
 * @param options
 * @constructor
 */
function AntForest(robot, options) {
    this.robot = robot;
    options = options || {};
    var settings = {
        timeout: 8000, // 超时时间:毫秒
        max_retry_times: 10, // 最大失败重试次数
        takeImg: "take.png", // 收取好友能量用到的图片
        max_swipe_times: 100, // 好友列表最多滑动次数
        min_time: "7:14:00", // 检测时段
        max_time: "7:15:50",
        check_within_time: 5,
        help_img: ""
    };
    this.options = Object.assign(settings, options);
    this.package = "com.eg.android.AlipayGphone"; // 支付宝包名
    this.state = {};
    this.capture = null;
    this.bounds = [0, 0, WIDTH, 1100];
    this.icon_num = 1;
    this.start_time = (new Date()).getTime();
    this.detected = 0;
    
    toastLog("即将收取能量,按音量上键停止");

    this.saveState = function () {
        this.state.isScreenOn = device.isScreenOn();
        this.state.currentPackage = currentPackage(); // 当前运行的程序
        this.state.isRunning = IS_ROOT ? parseInt(shell("ps | grep 'AlipayGphone' | wc -l", true).result) : 0; // 支付宝是否运行
        this.state.version = context.getPackageManager().getPackageInfo(this.package, 0).versionName;
        log(this.state);
    };

    this.resumeState = function () {
        if (this.state.currentPackage !== this.package) {
            this.back(); // 回到之前运行的程序
            sleep(1500);
        }

        if (!this.state.isRunning) {
            this.closeApp();
        }

        if (!this.state.isScreenOn) {
            KeyCode("KEYCODE_POWER");
        }
    };

    this.openApp = function () {
        launch(this.package);
    };

    this.closeApp = function () {
        this.robot.kill(this.package);
    };

    this.launch = function () {
        var times = 0;
        do {
            if (this.doLaunch()) {
                return;
            } else {
                times++;
                this.back();
                sleep(1500);
                this.openApp();
            }
        } while (times < this.options.max_retry_times);

        throw new Error("运行失败");
    };

    this.doLaunch = function () {
        // 可能出现的红包弹框,点击取消
        var timeout = this.options.timeout;
        threads.start(function () {
            var cancelBtn;
            if (cancelBtn = id("com.alipay.mobile.accountauthbiz:id/update_cancel_tv").findOne(timeout)) {
                cancelBtn.click();
            }
            if (cancelBtn = id("com.alipay.android.phone.wallet.sharetoken:id/btn1").findOne(timeout)) {
                cancelBtn.click();
            }
        });

        log("打开蚂蚁森林");
        app.startActivity({
            action: "VIEW",
            data: "alipays://platformapi/startapp?appId=60000002"
        });

        // 等待加载
        if (this.waitForLoading("种树")) {
            log("进入蚂蚁森林成功");
        } else {
            toastLog("进入蚂蚁森林失败");
            return false;
        }

        return true;
    };

    this.waitForLoading = function (keyword) {
        var timeout = this.options.timeout;
        var waitTime = 200;
        sleep(2000);
        timeout -= 2000;
        for (var i = 0; i < timeout; i += waitTime) { if (desc(keyword).exists()) { sleep(1000); return true; } sleep(waitTime); // 加载中 } return false; }; this.getPower = function () { var energy= descMatches(/\d+g/).findOnce(); return energy ? parseInt(energy.contentDescription) : null; }; this.work = function () { sleep(1000); this.robot.click(WIDTH / 2, 510); var timeout = this.options.timeout; var startPower = this.getPower(); log("当前能量:" + startPower); // 开始收取 this.take(); this.takeRemain(this.getRemainList(), this.options.min_time, this.options.max_time); sleep(500); var power = this.getPower() - startPower; if (power > 0) toastLog("收取了" + power + "g自己的能量");

        var icon_list = [];
        var icon = images.read(this.options.takeImg);
        if (null === icon) {
            throw new Error("缺少图片文件,请仔细查看使用方法的第一条!!!");
        }
        icon_list = [icon];
        var icon2;
        if (this.options.help_img && (icon2 = images.read(this.options.help_img))) {
            icon_list[1] = icon2;
        }
        this.icon_num = icon_list.length;

        // 截图权限申请
        threads.start(function () {
            var remember;
            var beginBtn;
            if (remember = id("com.android.systemui:id/remember").checkable(true).findOne(timeout)) {
                remember.click();
            }
            if (beginBtn = classNameContains("Button").textContains("立即开始").findOne(timeout)) {
                beginBtn.click();
            }
        });
        if (!requestScreenCapture(false)) {
            throw new Error("请求截图失败");
        }

        // 跳过当前屏幕
        var y = Math.min(HEIGHT, 1720);
        this.robot.swipe(WIDTH / 2, y, WIDTH / 2, 0);
        sleep(500);
        log("开始收取好友能量");
        
        var bottom = 0;
        var total_list = this.takeOthers(icon_list, 500, function () {
            var rect = desc("种树").findOnce().bounds();

            if (rect.bottom === bottom) {
                return true;
            }

            bottom = rect.bottom;
            return false;
        });

        // 统计下次时间
        var minuteList = [];
        var keyword = "查看更多好友";
        if (desc(keyword).exists()) {
            log(keyword);
            if (this.robot.clickCenter(desc(keyword).findOne(timeout))) {
                // 等待更多列表刷新
                if (id("com.alipay.mobile.nebula:id/h5_tv_title").text("好友排行榜").findOne(timeout)) {
                    sleep(1000);
                    log("进入好友排行榜成功");
                    // 跳过第一屏
                    var y = Math.min(HEIGHT, 1720);
                    this.robot.swipe(WIDTH / 2, y, WIDTH / 2, 0);
                    sleep(500);

                    var page, min_minute, add_total_list, swipe_sleep = 500;
                    for (;;) {
                        log("往下翻页");
                        page = 0;
                        add_total_list = this.takeOthers(icon_list, swipe_sleep, function () {
                            /*var selector = desc("没有更多了");
                            if (!selector.exists()) return false;
                            return selector.findOne().visibleToUser();*/
                            page++;
                            return (page > this.options.max_swipe_times) 
                            || (findColorEquals(this.capture, "#30BF6C", WIDTH - 300, 0, 200, HEIGHT) !== null);
                        }.bind(this));
                        this.addTotal(total_list, add_total_list);

                        minuteList = this.statisticsNextTime();
                        this.filterMinuteList(minuteList);
                        
                        if (!this.executeNextTask()) {
                            log("检测自己的能量尚未开始,不执行反复检测");
                            break;
                        }

                        if (!minuteList.length) {
                            break;
                        }
                        min_minute = minuteList[0];
                        log("当前最小剩余" + min_minute + "分钟");
                        if (min_minute > this.options.check_within_time) {
                            break;
                        }
                        swipe_sleep = 300;

                        log("往上翻页");
                        page = 0;
                        add_total_list = this.takeOthers(icon_list, swipe_sleep, function () {
                            page++;
                            return (page > this.options.max_swipe_times) 
                            || (findColorEquals(this.capture, "#EFAE44", 0, 0, 110, HEIGHT / 2) !== null);
                        }.bind(this), "prev");
                        this.addTotal(total_list, add_total_list);
                    }

                    this.back();
                    sleep(2000);
                    this.waitForLoading("TA收取你");
                } else {
                    toastLog("进入好友排行榜失败");
                }
            } else {
                toastLog("进入好友排行榜失败");
            }
        } else {
            minuteList = this.statisticsNextTime();
            this.filterMinuteList(minuteList);
        }
        
        var endPower = this.getPower();
        
        var added = endPower - startPower;
        added = Math.max(0, added);

        this.back();
        var message = "收取完毕,共" + total_list[0] + "个好友," + added + "g能量";
        if (this.icon_num > 1) {
            message += ",帮了" + total_list[1] + "个好友收取";
        }
        toastLog(message);
        sleep(1500);

        // 统计部分,可以删除
        var timeList = this.getTimeList(minuteList);
        if (timeList.length) {
            log("可收取时间:" + timeList.join(', '));
            
            // 添加tasker任务
            if (this.executeNextTask()) {
                var date = new Date();
                var today = date.toDateString();
                var next_time = today + " " + timeList[0];
                this.notifyTasker(next_time);
            } else {
                log("检测自己的能量尚未开始,不发送Tasker任务");
            }
        }
    };

    this.addTotal = function (total_list, add_total_list) {
        for (var i = 0; i < this.icon_num; i++) {
            total_list[i] += add_total_list[i];
        }
    };

    this.statisticsNextTime = function () {
        var minuteList = [];
        descMatches(/\d+’/).find().forEach(function (o) {
            minuteList.push(parseInt(o.contentDescription));
        });
        return minuteList;
    };

    this.filterMinuteList = function (minuteList) {
        // 排序
        minuteList.sort(function (m1, m2) {
            return m1 - m2;
        });
        // 去掉重复的
        for (var i = 1, len = minuteList.length; i < len; i++) {
            // 相差1分钟以内认为是同一时间
            if ((minuteList[i] - minuteList[i - 1]) <= 1) {
                minuteList.splice(i--, 1);
                len--;
            }
        }
    };

    this.getTimeList = function (minuteList) {
        var date = new Date();
        var timeList = [];
        var timestamp = date.getTime() - 20000;
        for (var i = 0, len = minuteList.length; i < len; i++) { var minute = minuteList[i]; var now = timestamp + minute * 60 * 1000; date.setTime(now); timeList.push(date.getHours() + ":" + date.getMinutes() + ":" + date.getSeconds()); } return timeList; }; this.executeNextTask = function () { if (this.detected) return true; var date = new Date(); var today = date.toDateString(); var max_time = today + " " + this.options.max_time; var max_timestamp = Date.parse(max_time); return (this.start_time > max_timestamp);
    };

    this.notifyTasker = function (time) {
        app.sendBroadcast({
            action: "net.dinglisch.android.tasker.ActionCodes.RUN_SCRIPT",
            extras: {
                name: "蚂蚁森林",
                time: time
            }
        });
        log("已发送Tasker任务:" + time);
    };

    /**
     * 收取能量
     */
    this.take = function () {
        var filters = className("android.widget.Button").filter(function (o) {
            var desc = o.contentDescription;
            
            return (null !== desc.match(/^收集能量|^\s?$/));
        }).find();

        var num = filters.length;
        log("找到" + num + "个能量球");
        sleep(100 * num);

        this.robot.clickMultiCenter(filters);
        
        this.autoBack();
    };

    this.autoBack = function () {
        // 误点了按钮则返回
        sleep(1000);
        if (id("com.alipay.mobile.ui:id/title_bar_title").exists() || text("通知").exists()) {
            this.back();
            sleep(1500);
        }
    };

    /**
     * 获取剩余能量球列表
     */
    this.getRemainList = function () {
        var list = [];
        className("android.widget.Button").filter(function (o) {
            var desc = o.contentDescription;
            return (null !== desc.match(/^收集能量|^\s?$/));
        }).find().forEach(function (o) {
            var rect = o.bounds();
            list.push([rect.centerX(), rect.centerY()]);
        }.bind(this));

        return list;
    };

    this.takeRemain = function (list, min_time, max_time) {
        var len = list.length;
        if (!len) return;
        
        var date = new Date();
        var today = date.toDateString();
        var min_timestamp = Date.parse(today + " " + min_time);
        var max_timestamp = Date.parse(today + " " + max_time);
        var now = date.getTime();
        
        if ((min_timestamp <= now) && (now <= max_timestamp)) {
            toastLog("开始检测剩余能量");
            var millisecond = max_timestamp - now;
            var step_time = 0;
            var use_time = step_time + 156 * len;
            for (var i = 0;i <= millisecond;i += use_time) {
                this.robot.clickMulti(list);

                sleep(step_time);
            }
            this.autoBack();
            
            this.detected = 1;
            toastLog("检测结束");
        }
    };

    /**
     * 收取好友能量
     * @param icon_list
     * @param isEndFunc
     * @param swipe_sleep
     * @param scroll
     * @returns {Array}
     */
    this.takeOthers = function (icon_list, swipe_sleep, isEndFunc, scroll) {
        var row = (192 * (HEIGHT / 1920)) | 0;
        var total_list = [];
        var take_num = icon_list.length;
        var x1, y1, x2, y2;
        x2 = x1 = WIDTH / 2;
        switch (scroll) {
            case "next":
            default:
                y1 = HEIGHT - row;
                y2 = row;
                break;
            case "prev":
                y1 = row * 1.5;
                y2 = HEIGHT - row;
                break;
        }
        for (var i = 0; i < take_num; i++) {
            total_list[i] = 0;
        }
        while (1) {
            for (var i = 0; i < take_num; i++) {
                var icon = icon_list[i];
                total_list[i] += this.takeFromImage(icon);
            }

            if (isEndFunc()) {
                break;
            }

            this.robot.swipe(x1, y1, x2, y2);
            sleep(swipe_sleep); // 等待滑动动画
        }

        return total_list;
    };

    /**
     * 找图收取
     * @param icon
     * @returns {number}
     */
    this.takeFromImage = function (icon) {
        var point;
        var row_height = HEIGHT / 10;
        var options = {
            region: [WIDTH - row_height, row_height],
            threshold: 0.8
        };
        var total = 0;
        var times = 0;
        var x = WIDTH / 2;
        var offset = icon.getHeight() / 2;
        while (times < this.options.max_retry_times) {
            this.capture = captureScreen();
            if (null === this.capture) {
                toastLog("截图失败");
                times++;
                sleep(200);
                continue;
            }
            point = findImage(this.capture, icon, options);
            if (null === point) {
                break;
            }
            
            var y = point.y + offset;
            this.robot.click(x, y);

            // 等待好友的森林
            var title = "好友森林";
            if (this.waitForLoading("浇水")) {
                title = id("com.alipay.mobile.nebula:id/h5_tv_title").findOnce();
                log("进入" + title.text() + "成功");
                total++;

                var cover;
                if (cover = descMatches(/\d{2}:\d{2}:\d{2}/).findOnce()) {
                    toastLog("保护罩还剩" + cover.contentDescription + ",忽略");
                } else {
                    // 收取
                    this.take();
                }
            } else {
                toastLog("进入好友森林失败");
            }

            // 返回好友列表
            this.back();
            sleep(3000);
        }

        return total;
    };

    this.back = function () {
        back();
    };
}

相关文件下载

将take.png、 config.js、Robot.js、Secure.js、蚂蚁森林设置向导.js 与蚂蚁森林.js(带星号的必须有)放置于同目录下,一般为/storage/emulated/0/脚本/

脚本实操手机型号

  1. 360N7系统正常,偶尔出现跳过能量问题,可修改延迟时间提升稳定性;
  2. 魔趣7.1系统正常,偶尔出现崩溃情况,依赖于Auto稳定性;
  3. Sony D6633 6.0系统打开会出现“系统界面已停止运行”,请不要使用;
  4. 红米Note 5(MIUI 9/10)系统正常,无ROOT权限。

常见问答

  • 用这个脚本会不会被支付宝封号?
    缙哥哥:自己往上翻看代码,基本上每一步都有注释,只是模拟人收取能量而已,况且自己已经用了一年左右。
  • 为什么我的用不了?
    缙哥哥:手机和手机之间也是有区别的,比如说分辨率等等,需要自己微调脚本。

历史上的今天:

  1. 2018年:  《如何煎煮、服用中药》- 作者:缙哥哥(0)
  2. 2017年:  《优酷数亿用户密码数据泄露并暗网销售 附泄露数据查询地址》- 作者:缙哥哥(3)
  3. 2017年:  《7月1日起,开办中医诊所只要一个证件!》- 作者:缙哥哥(0)
  4. 2017年:  《抓住春天的尾巴——谷雨,养肝抑“春火”》- 作者:缙哥哥(0)
  5. 2016年:  《“求救手势”是谣言,别再继续传播了……》- 作者:缙哥哥(0)
赞(25) 打赏
转载请注明来源及链接:缙哥哥 » 支付宝蚂蚁森林自动收能量脚本代码,附视频及文件

评论 61

评论前必须登录!

 

  1. #23

    请问大佬 更新支付宝后获取不到desc 查看空间信息发现desc确实是空的 只有text。 那么var desc = o.contentDescription;失效了 有什么替换的方式吗 获取text的方法 。 类似descMatches 可以用textMatches替换, descEndsWith可以用textEndsWith替换
    var filters = className(“android.widget.Button”).filter(function (o) {
    var desc = o.contentDescription;
    return (null !== desc.match(/^收集能量|^$/));
    }).find();
    var num = filters.length; 这段代码怎么替换 来获取text?

    koftt3周前 (08-01)
  2. #22

    明明已经进入蚂蚁森林的界面了,却不收,也不下滑,就老是提示Auto.js进入蚂蚁森林失败

    baicai203周前 (07-30)
  3. #21

    还是不会收好友能量~好郁闷呀~

    yury_81个月前 (07-10)
  4. #20

    if (this.waitForLoading(“种树”)) {
    log(“进入蚂蚁森林成功”);
    } else {
    toastLog(“进入蚂蚁森林失败”);
    return false;
    }
    一直提示进入蚂蚁森林失败,是desc()方法无效了吗?
    if (desc(keyword).exists())

    1646769221个月前 (07-09)
  5. #19

    更新到4.0版本的auto.js就可以正常运行米有提示错误了,但是只是收了自己的能量,木有偷朋友的能量是哪里出错

    yury_81个月前 (07-09)
  6. #18

    TypeError: Cannot find function all in object [object Object]. (#95)
    缙哥哥呀,我是出现的这个问题,可否指点一下呀

    yury_81个月前 (07-09)
    • 今日亲测没问题

      缙哥哥1个月前 (07-09)
      • 蚂蚁森林设置里也就更改个锁屏密码吧 其他还有要更改的设置么 指点下我看看是不是设置的不对 辛苦辛苦

        yury_81个月前 (07-09)
        • 我没设置锁屏,在运行脚本过程中不会息屏,所以没操作那一步!

          缙哥哥1个月前 (07-09)
  7. #17

    这个厉害了 我也要在手机上整一个

    yury_81个月前 (07-09)
  8. #16

    已经进入到我的森林的,但是没打开好友列表,最后提示toastLog(“进入蚂蚁森林失败”);,每次都是如此,这是啥情况?

    eling132个月前 (07-02)
    • 同样的问题

      1646769221个月前 (07-09)
    • 前几天突然不行了,一直提示”进入蚂蚁森林失败”

      1646769221个月前 (07-09)
      • 嗯,前几天不行,从前天还是大前天开始又好了!

        缙哥哥1个月前 (07-10)
        • 我这边还是这个提示?

          1646769221个月前 (07-10)
        • 重启手机

          缙哥哥1个月前 (07-10)
        • 重启过的

          1646769221个月前 (07-10)
        • if (this.waitForLoading(“种树”)) {
          log(“进入蚂蚁森林成功”);
          } else {
          toastLog(“进入蚂蚁森林失败”);
          return false;
          }
          一直提示进入蚂蚁森林失败,是desc()方法无效了吗?
          if (desc(keyword).exists())

          1646769221个月前 (07-10)
        • 不同手机分辨率要自己改下,我的360N7是正常可用!

          缙哥哥1个月前 (07-10)
        • 好像和支付宝版本有关系。刚刚试了一下可以收能量了,这几天支付宝好像更新过版本

          1646769221个月前 (07-12)
        • 我用的最新版本支付宝

          缙哥哥1个月前 (07-12)
        • 研究一天了哥哥,每次都是进入蚂蚁森林后就不动了,接着显示“进入蚂蚁森林失败”。需要修改什么分辨率,哪里改?take和help的图片都弄好了,支付宝版本是最新的。

          luosifen331个月前 (07-18)
        • 有空看看

          缙哥哥1个月前 (07-18)
        • 嗯嗯好,进去蚂蚁森林后显示211行“运行失败”

          luosifen331个月前 (07-18)
  9. #15

    晋哥哥,你好,视频只能听到声音,看不到里面的操作

    dgm_20883个月前 (05-31)
  10. #14

    都下载完了 然后怎么用呢

    wangyi3个月前 (05-29)
  11. #13

    视频一片黑,什么都看不到

    patrick19883个月前 (05-25)
  12. #12

    截图小绿手,有什么要求?直接自己手机上截图吗?大小怎么定?

    hanjiang3个月前 (05-08)
  13. #11

    缙哥哥 苹果系统的有办法嘛?

    bbxgj4个月前 (05-04)
  14. #10

    TypeError: Cannot find function all in object [object Object]. (#95)

    s_5204个月前 (04-25)
  15. #9

    如果能写一个自动翻页的脚本,蚂蚁森林自动翻书旗出版物,就可以刷能量球了

    wm1397456824个月前 (04-23)
    • 自动翻页什么意思?

      缙哥哥4个月前 (04-23)
      • 支付宝的一个小程序,在里面读书可获取能量。

        luosifen331个月前 (07-18)
        • 还不如偷的快,平时该怎么看书就怎么看书,不会因为能量而被绑定!

          缙哥哥1个月前 (07-18)
  16. #8

    运行以后,打开蚂蚁森林逛了一圈就回去了,没收到能量是怎么回事? ,小白一枚,求教

    bamboo0825zjyd4个月前 (04-23)
    • 小绿手截图没截好?

      缙哥哥4个月前 (04-23)
      • 嗯嗯,刚刚改了小绿手,收能量成功啦,谢谢缙哥哥

        bamboo0825zjyd4个月前 (04-23)
      • 小绿手截图要怎么截:是在下载图片的基础上用图片软件把宽高压缩尝试到可以为止;还是自己在手机上先截图然后再调整宽高直到可以为止?

        luosifen331个月前 (07-18)
        • 直接截图,旁边的裁掉就行了

          缙哥哥1个月前 (07-18)
  17. #7

    哥哥,我提示错误:missing}after function body(#621)

    wjb9704个月前 (04-22)
  18. #6

    简直了,我外行白痴一枚,求缙哥哥出一个傻瓜版教程,从用什么软件开始,一步一步,感谢!

    kami2723_4个月前 (04-19)
  19. #5

    运行以后,提示(“缺少Robot.js文件,请核对第一条”);怎么办

    mysoul4个月前 (04-19)
  20. #4

    华为p10.跪求视频教程

    xo_2334个月前 (04-19)
  21. #3

    不是学IT的,不会用-_-||?缙哥哥 能不能详细一点?

    xzzsj4个月前 (04-18)
  22. #2

    请问怎么用呀!

    c007_4个月前 (04-18)
  23. #1

    你终于拿出来了

    shenghuo4个月前 (04-18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏