1.购买服务器阿里云:服务器购买地址https://t.aliyun.com/U/55RK8C若失效,可用地址
阿里云:
服务器购买地址
https://t.aliyun.com/U/55RK8C若失效,可用地址
https://www.aliyun.com/daily-act/ecs/activity_selection?source=5176.29345612&userCode=49hts92d腾讯云:
https://curl.qcloud.com/wJpWmSfU若失效,可用地址
https://cloud.tencent.com/act/cps/redirect?redirect=2446&cps_key=ad201ee2ef3b771157f72ee5464b1fea&from=console华为云
https://activity.huaweicloud.com/cps.html?fromacct=64b5cf7cc11b4840bb4ed2ea0b2f4468&utm_source=V1g3MDY4NTY=&utm_medium=cps&utm_campaign=2019052.部署教程
3.代码如下
/*** 闲鱼 App 每日自动签到脚本(UI 自动化)* 平台:Android + Auto.js* 模式:纯 UI 操作(不抓接口)*/"ui";auto.waitFor();console.show();// ======================= 全局配置 =======================const CONFIG = {appName: "闲鱼",waitShort: 1200,waitLong: 3000,maxRetry: 3,signTexts: ["签到","每日签到","去签到","立即签到","签到领取","领积分","赚积分","任务"],mineTexts: ["我的"],};// ======================= 日志工具 =======================function logi(msg) {console.log("[INFO] " + msg);}function logw(msg) {console.warn("[WARN] " + msg);}function loge(msg) {console.error("[ERROR] " + msg);}// ======================= 基础工具函数 =======================function sleepShort() {sleep(CONFIG.waitShort);}function sleepLong() {sleep(CONFIG.waitLong);}/*** 安全文字点击* @param {string} text 文本* @param {number} timeout 超时时间* @returns {boolean}*/function safeTextClick(text, timeout = 8000) {let w = textContains(text).findOne(timeout);if (w) {w.click();sleepShort();return true;}return false;}/*** 批量尝试点击*/function clickByTextList(textList, timeout = 8000) {for (let t of textList) {if (safeTextClick(t, timeout)) {logi("点击成功:" + t);return true;}}return false;}// ======================= 业务流程函数 =======================/*** 启动闲鱼 App*/function launchXianyu() {logi("启动闲鱼 App");app.launchApp(CONFIG.appName);sleepLong();}/*** 进入【我的】页面*/function enterMinePage() {logi("尝试进入【我的】页面");if (!clickByTextList(CONFIG.mineTexts, 10000)) {logw("未找到【我的】入口,尝试底部导航");// 兜底:点击屏幕右下角(部分机型)click(device.width * 0.85, device.height * 0.95);sleepLong();}}/*** 查找并进入签到 / 任务入口*/function enterSignPage() {logi("查找签到/任务入口");let found = clickByTextList(CONFIG.signTexts, 8000);if (!found) {logw("未找到签到入口,可能已签到或UI变更");return false;}sleepLong();return true;}/*** 执行签到动作*/function doSignAction() {logi("尝试执行签到动作");let signed = clickByTextList(["每日签到", "立即签到", "去签到", "签到领取"],6000);if (signed) {logi("签到按钮已点击");sleepLong();return true;} else {logi("未发现可点击的签到按钮,可能今日已完成");return false;}}/*** 返回并清理页面*/function exitApp() {logi("返回并退出页面");back();sleepShort();back();sleepShort();}// ======================= 主控制流程 =======================function main() {logi("====== 闲鱼每日签到脚本开始 ======");launchXianyu();enterMinePage();let entered = enterSignPage();if (entered) {doSignAction();}exitApp();toast("闲鱼签到流程执行完成");logi("====== 闲鱼每日签到脚本结束 ======");}// ======================= 启动 =======================main();
唤醒无障碍服务(Auto.js)
启动闲鱼 App
进入「我的」页面
自动查找:
签到入口
任务入口
积分 / 金币 / 红包入口
自动点击「每日签到 / 去签到 / 领取奖励」
判断是否已签到
返回主页并结束
输出日志 + Toast 提示
适用场景:
每天一次自动签到
定时执行
不依赖 Cookie / Token
不涉及接口逆向(风控低)
主要方法
main() —— 主流程控制器(最核心)
作用:
统一调度整个签到流程
串联所有业务步骤
相当于脚本的「任务编排器」
做了什么:
启动 App
进入「我的」
进入签到页
执行签到
退出
任何扩展(通知、截图、重试)都从这里加
launchXianyu()
作用:
启动闲鱼 App
确保脚本执行环境正确
为什么单独封装?
后期可以加:
冷启动 / 热启动判断
App 未安装检测
多开 App 支持
enterMinePage()
作用:
自动进入「我的」页面
关键点:
优先用文字定位(
textContains("我的"))失败后用 坐标兜底
提高不同手机、不同版本兼容性
enterSignPage()
作用:
自动寻找签到/任务入口
实现策略:
使用「文案列表匹配」
一次覆盖多种可能 UI:
签到
任务
领积分
赚积分
这是抗 UI 改版的核心设计
doSignAction()
作用:
真正执行「签到」动作
逻辑说明:
查找明确的"动作按钮"
点击后等待页面反馈
如果找不到 → 默认视为"已签到"
safeTextClick()
作用:
所有点击操作的基础封装
解决的问题:
页面加载慢
元素偶发不存在
防止脚本直接崩溃
这是整个脚本稳定性的核心方法
clickByTextList()
作用:
对多个可能文案进行尝试点击
注意:
本文部分变量已做脱敏处理,仅用于测试和学习研究,禁止用于商业用途,不能保证其合法性,准确性,完整性和有效性,请根据情况自行判断。技术层面需要提供帮助,可以通过打赏的方式进行探讨。
没有评论:
发表评论