短信验证码中心AIWROK万能调用端
短信验证码中心AIWROK万能调用端http://bbs.aiwork24.com/thread-588-1-1.html
/**
* 短信验证码中心 - 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 : "";
}
// ====================================================
//第二部分:查询(手机 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("========== 演示结束 ==========");
页:
[1]