 | |  |  | 短信验证码中心AIWROK万能调用端
- /**
- * 短信验证码中心 - AIWROK 万能调用端(单文件)
- * ====================================================
- * Import("sms_center.js"); 然后按需调函数即可
- *
- * 服务器:http://192.168.10.106:9527
- */
- // ===================== 改这里 =====================
- var SC = {
- 服务器: "http://192.168.10.106:9527",
- 本机手机号: "13800138000"
- };
- // ================================================
- var http = new okHttp();
- function sleepMs(ms) { try { java.lang.Thread.sleep(ms); } catch (e) {} }
- // ====================================================
- // 第一部分:上传(手机 A 收到短信时调)
- // ====================================================
- function 上传短信(phone, content, sender) {
- if (!content) { printl("[上传] skip 空内容"); print.log("[上传] skip 空内容"); return false; }
- phone = phone || SC.本机手机号;
- var t = "[上传] -> " + phone + " content=" + content.substring(0, 40);
- printl(t); print.log(t);
- try {
- var url = SC.服务器 + "/api/sms/submit";
- var body = { phone: phone, content: content, sender: sender || "" };
- var r = http.json(url, body);
- var j = JSON.parse(r);
- if (j.ok) {
- var code = 提取验证码(content);
- var o = "[上传] ok code=" + code;
- printl(o); print.log(o);
- return true;
- }
- var f = "[上传] fail " + JSON.stringify(j);
- printl(f); print.log(f);
- } catch (e) {
- var er = "[上传] err " + String(e.message).substring(0, 50);
- printl(er); print.log(er);
- }
- return false;
- }
- function 提取验证码(content) {
- if (!content) return "";
- var m = content.match(/(\d{4,6})/);
- return m ? m[1] : "";
- }
- // ====================================================
- // 第二部分:查询(手机 B 需要填验证码时调)
- // ====================================================
- function 查验证码(phone) {
- try {
- var r = http.get(SC.服务器 + "/api/sms/get?phone=" + encodeURIComponent(phone));
- var j = JSON.parse(r);
- if (j.ok && j.code) return j.code;
- } catch (e) {
- var er = "[查询] err " + String(e.message).substring(0, 50);
- printl(er); print.log(er);
- }
- return "";
- }
- function 等验证码(phone, 超时秒数, 间隔秒数) {
- 超时秒数 = 超时秒数 || 60;
- 间隔秒数 = 间隔秒数 || 3;
- var t = "[等待] " + phone + " timeout=" + 超时秒数 + "s interval=" + 间隔秒数 + "s";
- printl(t); print.log(t);
- var 已等 = 0;
- var 上次码 = "";
- while (已等 < 超时秒数) {
- var code = 查验证码(phone);
- if (code && code !== 上次码) {
- var g = "[等待] got " + code + " (waited " + 已等 + "s)";
- printl(g); print.log(g);
- return code;
- }
- 上次码 = code;
- sleepMs(间隔秒数 * 1000);
- 已等 += 间隔秒数;
- }
- var to = "[等待] timeout " + 超时秒数 + "s";
- printl(to); print.log(to);
- return "";
- }
- function 填验证码(code, confirmBtnText) {
- if (!code) return false;
- var t = "[填入] start " + code;
- printl(t); print.log(t);
- try {
- var node = auto.nodeSearch().textContains("验证码").type("EditText").findOne(3000);
- if (node) {
- node.clickPoint(); sleepMs(300);
- node.inputText(code);
- } else {
- auto.input(code);
- }
- printl("[填入] ok"); print.log("[填入] ok");
- } catch (e) {
- try { auto.input(code); } catch (e2) {
- var f = "[填入] fail " + String(e.message).substring(0, 40);
- printl(f); print.log(f);
- return false;
- }
- }
- sleepMs(800);
- if (confirmBtnText) {
- try { auto.clickText(confirmBtnText); printl("[填入] click " + confirmBtnText); print.log("[填入] click " + confirmBtnText); } catch (e) {}
- } else {
- try { auto.clickText("确定"); printl("[填入] click 确定"); print.log("[填入] click 确定"); } catch (e) {}
- try { auto.clickText("提交"); printl("[填入] click 提交"); print.log("[填入] click 提交"); } catch (e) {}
- try { auto.clickText("下一步"); printl("[填入] click 下一步"); print.log("[填入] click 下一步"); } catch (e) {}
- }
- return true;
- }
- // ====================================================
- // 一键组合:等码 -> 填码 -> 点确定
- // ====================================================
- function 等码并填入(phone, 超时秒数, confirmText) {
- var t = "[一键] start phone=" + phone;
- printl(t); print.log(t);
- var code = 等验证码(phone, 超时秒数 || 60);
- if (!code) { printl("[一键] fail 没拿到码"); print.log("[一键] fail 没拿到码"); return ""; }
- 填验证码(code, confirmText);
- var d = "[一键] done code=" + code;
- printl(d); print.log(d);
- return code;
- }
- // ====================================================
- // 演示代码(直接运行)
- // ====================================================
- printl("========== 短信中心演示 ==========");
- print.log("========== 短信中心演示 ==========");
- // 演示 1:上传一条模拟短信
- 上传短信(SC.本机手机号, "【抖音】您的验证码是885231,5分钟内有效", "10690123");
- sleepMs(500);
- // 演示 2:只查一次
- var c = 查验证码(SC.本机手机号);
- printl("查询结果: " + c);
- print.log("查询结果: " + c);
- sleepMs(500);
- // 演示 3:等验证码(最多等10秒,因为上面刚上传过,应该立刻拿到)
- var code = 等验证码(SC.本机手机号, 10, 2);
- if (code) {
- printl("等码成功: " + code);
- print.log("等码成功: " + code);
- } else {
- printl("等码超时");
- print.log("等码超时");
- }
- sleepMs(500);
- // 演示 4:一键等码+填入(填入自动匹配"确定/提交/下一步"按钮)
- // var code2 = 等码并填入(SC.本机手机号, 10);
- // sleepMs(500);
- printl("========== 演示结束 ==========");
- print.log("========== 演示结束 ==========");
复制代码
| |  | |  |
|