常用例子2(字数限制)

" ## 取随机姓名 ```js //取随机姓名 function getRndName() { //以下字库可自行添加 var familyNames = new Array( "赵", "钱", "孙", "李", "周", "吴", "郑", "王", "冯", "陈", "褚", "卫", "蒋", "沈", "韩", "杨", "朱", "秦", "尤", "许", "何", "吕", "施", "张", "孔", "曹", "严", "华", "金", "魏", "陶", "姜", "戚", "谢", "邹", "喻", "柏", "水", "窦", "章", "云", "苏", "潘", "葛", "奚", "范", "彭", "郎", "鲁", "韦", "昌", "马", "苗", "凤", "花", "方", "俞", "任", "袁", "柳", "酆", "鲍", "史", "唐", "费", "廉", "岑", "薛", "雷", "贺", "倪", "汤", "滕", "殷", "罗", "毕", "郝", "邬", "安", "常", "乐", "于", "时", "傅", "皮", "卞", "齐", "康", "伍", "余", "元", "卜", "顾", "孟", "平", "黄", "和", "穆", "萧", "尹", "司马","欧阳","上官","夏侯夏侯","诸葛","西门","南宫","东郭", "百里","尉迟","端木","皇甫","钟离","宇文","长孙","慕容","司徒","司空","东方","公孙","令狐" ); var givenNames = new Array( "子璇", "淼", "国栋", "夫子", "瑞堂", "甜", "敏", "尚", "国贤", "贺祥", "晨涛", "昊轩", "易轩", "益辰", "益帆", "益冉", "瑾春", "瑾昆", "春齐", "杨", "文昊", "东东", "雄霖", "浩晨", "熙涵", "溶溶", "冰枫", "欣欣", "宜豪", "欣慧", "建政", "美欣", "淑慧", "文轩", "文杰", "欣源", "忠林", "榕润", "欣汝", "慧嘉", "新建", "建林", "亦菲", "林", "冰洁", "佳欣", "涵涵", "禹辰", "淳美", "泽惠", "伟洋", "涵越", "润丽", "翔", "淑华", "晶莹", "凌晶", "苒溪", "雨涵", "嘉怡", "佳毅", "子辰", "佳琪", "紫轩", "瑞辰", "昕蕊", "萌", "明远", "欣宜", "泽远", "欣怡", "佳怡", "佳惠", "晨茜", "晨璐", "运昊", "汝鑫", "淑君", "晶滢", "润莎", "榕汕", "佳钰", "佳玉", "晓庆", "一鸣", "语晨", "添池", "添昊", "雨泽", "雅晗", "雅涵", "清妍", "诗悦", "嘉乐", "晨涵", "天赫", "玥傲", "佳昊", "天昊", "萌萌", "若萌", "惠宁","雅欣","奕雯","佳琪","永怡","璐瑶","娟秀","天佳","晓华","妍丽","璇菡", "嘉禾","忆辰","妍彤","眉萱","秀辰","怡熹","思琦","弦娇","青淑","宣淑","和静", "雪涵","美嘉","佳涵","旭和","丽娇","雨晨","文惠","雅馥","雨嘉","亦婷","秀慧", "俊颖","亭清","思涵","珂嘉","蒂莲","秀娟","晋仪","玮菁","慧琳","丽帆","思辰", "宇纯","美瑞","蕊清","秀敏","家维","宁致","婷方","燕晨","子琳","雪菲","泓锦", "佳妮","初晨","芷菡","奕可","莉姿","杏菏","韵彩","姝慧","雪华","珊娜","秀丽", "箫辉","盈初","语楚","青秋","梓菁","宝萱" ); var i = parseInt( * Math.random()) * + parseInt( * Math.random()); var familyName = familyNames[i]; var j = parseInt( * Math.random()) * + parseInt( * Math.random()); var givenName = givenNames[i]; var name = familyName + givenName; var x = document.getElementsByName("client_name"); for (var i = ; i < x.length; i++) { var o = x[i]; o.value = name; }; }; ``` ## 取随机手机号 ```js // 取随机手机号 function getRndMoble() { var prefixArray = new Array("130", "131", "132", "133", "134", "135", "137", "138", "170", "187", "189", "199", "198", "156", "166", "175", "186", "184", "146", "139", "147", "150", "151", "152", "157", "158", "159", "178", "182", "183", "187", "188", "133", "153", "149", "173", "177", "180", "181", "189"); var i = parseInt(10 * Math.random()); var prefix = prefixArray[i]; for (var j = 0; j < 8; j++) { prefix = prefix + Math.floor(Math.random() * 10); }; var x = document.getElementsByName("mobile_tel"); for (var i = 0; i < x.length; i++) { var o = x[i]; o.value = prefix; }; }; ``` ## 取随机身份证号 ```js // 取随机身份证号 function getRndID() { var coefficientArray = ["7", "9", "10", "5", "8", "4", "2", "1", "6", "3", "7", "9", "10", "5", "8", "4", "2"];// 加权因子 var lastNumberArray = ["1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"];// 校验码 var address = "420101"; // 住址 var birthday = "19810101"; // 生日 var s = Math.floor(Math.random() * 10).toString() + Math.floor(Math.random() * 10).toString() + Math.floor(Math.random() * 10).toString(); var array = (address + birthday + s).split(""); var total = 0; for (i in array) { total = total + parseInt(array[i]) * parseInt(coefficientArray[i]); }; var lastNumber = lastNumberArray[parseInt(total % 11)]; var id_no_String = address + birthday + s + lastNumber; var x = document.getElementsByName("id_no"); for (var i = 0; i < x.length; i++) { var o = x[i]; o.value = id_no_String; }; }; ``` ## 取随机字母数字 ```js //取随机字母数字 //https://www.cnblogs.com/sunshq/p/4171490.html /* ** randomWord 产生任意长度随机字母数字组合 ** randomFlag-是否任意长度 min-任意长度最小位[固定位数] max-任意长度最大位 ** xuanfeng 2014-08-28 */ function getRndLetterNumber(randomFlag, min, max){ var str = "", range = min, arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z']; // 随机产生 if(randomFlag){ range = Math.round(Math.random() * (max-min)) + min; } for(var i=0; i<range; i++){ pos = Math.round(Math.random() * (arr.length-1)); str += arr[pos]; } return str; }; //使用方法 //生成3-32位随机串: getRndLetterNumber(true, 3, 32) //生成43位随机串: getRndLetterNumber(false, 43) ``` ## 取随机汉字 ```js //取随机汉字(简体+生僻字) function getRndWord() { eval("var word=" + '"\\\\u' + (Math.round(Math.random() * 20901) + 19968).toString(16) + '"') return word; }; ``` ## 文本分割发送例子 ```js let sendContent = "哈哈[可爱]你好。交个朋友吧!|你是哪里的?|看到了回复我".replace(/|/g,'|') if (sendContent.match("|")) { let strs = new Array(); strs = sendContent.split("|"); //字符分割 for (i = 0; i < strs.length; i++) { log(strs[i]) sleep(random(100, 200)); }; } else { log(sendContent) }; ``` ## 获取时间戳 ```js var timestamp = new Date().getTime(); //获取时间戳 ``` ## 时间戳转时间 ```js //https://www.cnblogs.com/lipcblog/p/6725347.html //第一种 2010年12月23日 10:53 function getLocalTime(nS) { return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\\d{1,2}$/,' '); }; log(getLocalTime(1293072805)); //第二种 function getLocalTime(nS) { return new Date(parseInt(nS) * 1000).toLocaleString().substr(0,17) }; log(getLocalTime(1293072805)); //第三种 2010-10-20 10:00:00 function getLocalTime(nS) { return new Date(parseInt(nS) * 1000).toLocaleString().replace(/年|月/g, "-").replace(/日/g, " "); }; log(getLocalTime(1177824835)); ``` ## 例子合集 ``` /** * QQ跳码注册陌陌稳定版 * auth:ydy */ auto();//开启无障碍模式 var y = 1058//设置滑动按钮高度 //Q跳注册陌陌 websever = 'http://39.96.39.174'; let qqhao; let qqpwd; let imgname; let shebeiinfo; let imei; let sousuozhanghao = http.get(websever + '/api/index/getmomo').body.string() main(); //主程序 function main() { while (true) { openwuji();//打开无极 sleep(2000) //打开沙盒 if (openshahe() == false) { continue; } sleep(1000); if (gaiji() == false) { //修改机型 continue; } sleep(1000); clearQQ();//清除QQ数据 if (run_qq() == false) { continue; } sleep(2000) //第二次打开 if (openshahe() == false) { continue; } sleep(1000); cleraMM(); sleep(2000); //打开陌陌 if (run_momo() == false) { continue; } sleep(3000) } } function run_momo() { try { id("appIcon").waitFor();//等待出现 id("appIcon").find()[1].click(); text('输入手机号码').waitFor() sleep(2000); click(472, 1625); text('QQ登录').waitFor(); if (text('授权并登录').exists() || text('登录').exists()) { className('android.widget.Button').click() sleep(8000); if (text('下一步').exists()) { toastLog('进入填写陌陌资料'); sleep(2000) click(90, 672); opention_birth(); click(204, 891)//选择性别 text('下一步').waitFor(); sleep(2000); click(text("下一步").findOne().bounds().centerX(), text("下一步").findOne().bounds().centerY()) } else { toastLog('QQ号:' + qqhao + ',已注册过陌陌'); return false; } } sleep(3000) text('绑定手机').waitFor(); text('跳过').click() sleep(3000); if (text('跳过').exists()) { text('跳过').click(); } sleep(2000) if (text('消息').exists()) { click(text('消息').findOne().bounds().centerX(), text('消息').findOne().bounds().centerY()); sleep(5000) click(text('搜索').findOne().bounds().centerX(), text('搜索').findOne().bounds().centerY()); toastLog('搜索用户组') Text(sousuozhanghao); sleep(5000) click(138, 387)//点击搜索用户组 toastLog('查找用户:' + sousuozhanghao) sleep(10000) back()//返回上一级 sleep(5000) //在返回上一级 back()// sleep(5000) click(text('更多').findOne().bounds().centerX(), text('更多').findOne().bounds().centerY()) sleep(5000) //编辑个人资料 text('查看或编辑个人资料').waitFor(); click(text('查看或编辑个人资料').findOne().bounds().centerX(), text('查看或编辑个人资料').findOne().bounds().centerY()) text('资料').waitFor();//等待资料出现 click(text('资料').findOne().bounds().centerX(), text('资料').findOne().bounds().centerY()) //上滑 swipe(500, 1000, 500, 0, 1000) sleep(3000) momozhanghao = className('android.widget.TextView').find()[19].text().split(":")[1] toastLog('陌陌账号为:' + momozhanghao) sleep(2000) back(); sleep(2000) swipe(500, 1000, 500, 0, 1000) sleep(2000) text('设置').waitFor(); click(text('设置').findOne().bounds().centerX(), text('设置').findOne().bounds().centerY()) sleep(2000) text('设置').waitFor(); click(42, 300)//点击账号与安全 sleep(5000) text('密码修改').waitFor(); click(text('密码修改').findOne().bounds().centerX(), text('密码修改').findOne().bounds().centerY()); sleep(3000) text('设置密码').waitFor(); if (className('android.widget.EditText').find().size() == 3) { back();//返回上一级; sleep(2000) back(); click(text('密码修改').findOne().bounds().centerX(), text('密码修改').findOne().bounds().centerY()); } //获取密码 url = websever + '/api/index/setpwd'; res = http.get(url); pwd = res.body.string() Text(pwd) //重复密码 sleep(5000) click(30, 519); Text(pwd); goback_http = momozhanghao + '|' + pwd; toastLog(goback_http); sleep(5000) //点击修改 click(text('修改').findOne().bounds().centerX(), text('修改').findOne().bounds().centerY()) //回传致服务器 http.get(websever + '/api/index/fanhui?goback_http=' + goback_http + '&name=yushenggongzuoshi&jx=' + shebeiinfo + '&imei=' + imei) sleep(3000) click(756, 1002) } else { return false; } } catch (e) { return false; } } //获取服务器女性名字 function rand_name() { let names = http.get(websever + '/api/index/getnames').body.string() return names; } //设置陌陌生日 function opention_birth() { //后台设置 year = http.get(websever + '/api/index/getyear') year = year.body.string() if (year < 0) { //从上往下滑 for (let i = 1; i <= Math.abs(year); i++) { swipe(300, 760, 300, 900, 2000)//年 sleep(800) //log('当前年执行:'+i+'次') } } else { //从下往上滑 for (let i = 1; i <= year; i++) { swipe(300, 900, 300, 760, 2000)//年 sleep(800) //log('当前年执行:'+i+'次') } } sleep(1000) month = http.get(websever + '/api/index/getmonth') month = month.body.string() for (let i = 1; i <= (13 - Math.abs(month)); i++) { swipe(554, 769, 550, 769, 2000)//月 sleep(800) //log('当前月执行:'+i+'次') } sleep(1000) day = http.get(websever + '/api/index/getday') day = day.body.string() for (let i = 1; i <= (31 - Math.abs(day)); i++) { swipe(750, 767, 700, 767, 500)//日 sleep(800) //log('当前日执行:'+i+'次') } sleep(1000) click(750, 1260)//点击确定 sleep(1000) } //打开沙盒 function openshahe() { app.launch("com.dobe.sandbox"); sleep(2000) if (text('机智沙盒').exists()) { toastLog('打开沙盒') return true } else { return false } } //一键vpn function yjvpn() { app.launch("com.leteng.ltproxy"); toastLog('正在换ip中,请稍后'); sleep(5000); id('bt_change_ip').click(); sleep(15000) toastLog('ip更换成功') } //一键新机 function gaiji() { if (id("download_device").exists()) { sleep(2000) id("download_device").findOne().click() sleep(2000) if (className('android.widget.TextView').find()[2].text() == '修改设备') { var xiugaishebei = className('android.widget.TextView').find()[2]; click(xiugaishebei.bounds().centerX(), xiugaishebei.bounds().centerY()); sleep(2000) if (className("android.widget.Button").exists()) { className("android.widget.Button").findOne().click(); className("android.widget.TextView").indexInParent(4).waitFor(); //等待控件出现 toastLog('修改设备成功') sleep(1000); back(); sleep(1000); back(); sleep(1000) } else { toastLog('修改设备失败'); return false; } } } //二次清机 sleep(2000) if (id("download_device").exists()) { sleep(2000) id("download_device").findOne().click() sleep(2000) if (className('android.widget.TextView').find()[2].text() == '修改设备') { var xiugaishebei = className('android.widget.TextView').find()[2]; click(xiugaishebei.bounds().centerX(), xiugaishebei.bounds().centerY()); sleep(2000) if (className("android.widget.Button").exists()) { className("android.widget.Button").findOne().click(); //等待控件出现 toastLog('修改设备成功') className("android.widget.TextView").indexInParent(4).waitFor(); sleep(3000) imei = className('android.widget.TextView').find()[2].text(); toastLog('设备号:' + imei); sleep(1000); back(); sleep(1000); back(); sleep(1000) } } } } //点击momo上角的三个点--清除数据 function cleraMM() { id("context_menu").find()[1].click() id("kill").waitFor(); //点击关闭进程 id("kill").findOne().click(); id("btnPositive").waitFor(); id("btnPositive").findOne().click(); sleep(5000) id("context_menu").find()[1].click() id("wipe").waitFor(); id("wipe").findOne().click(); id("btnPositive").waitFor(); id("btnPositive").findOne().click(); toastLog('陌陌数据清理'); sleep(2000); } //清除QQ上角的三个点--清楚数据 function clearQQ() { id("context_menu").find()[0].click() id("kill").waitFor(); //点击关闭进程 id("kill").findOne().click(); id("btnPositive").waitFor(); id("btnPositive").findOne().click(); toastLog('QQ进程关闭'); sleep(5000) id("context_menu").find()[0].click() id("wipe").waitFor(); id("wipe").findOne().click(); id("btnPositive").waitFor(); id("btnPositive").findOne().click(); toastLog('QQ数据清理'); sleep(2000); } //切换无极vpn function openwuji() { app.launch("org.wuji"); sleep(2000) click(500, 1350); sleep(3000) } //获取服务器QQ号码 function getqq_number() { let url = websever + '/api/index/getqq'; let res = http.get(url).body.string() if (res != 0) { qqhao = res.split('|')[0]; qqpwd = res.split('|')[1]; return true; } else { // log('服务器暂无可使用的QQ号'); return false; } } function discernSlidingblock(img, ratio) { //创建识别变量 var temp, temp2, x, y, num, color, p, temp3, arr1; //分析设备分辨率 if (ratio == 720) { var tb = [348, 253, 691, 638, 81] log("您的设备分辨率为:720p"); } else if (ratio == 1080) { var tb = [463, 387, 912, 831, 125] log("您的设备分辨率为:1080p"); } else { log("当前设备分辨率不符合规范") return -2 } num = Math.ceil(tb[4] / 3.3 - 4); //计算滑块位置 for (var k = 29; k <= 40; k++) { temp2 = ""; color = "#" + k + "" + k + "" + k + ""; for (var i = 1; i <= num; i++) { temp2 = temp2 + "0|" + i + "|" + color + ","; temp2 = temp2 + i + "|0|" + color + ","; temp2 = temp2 + "1|" + i + "|" + color + ","; temp2 = temp2 + i + "|1|" + color + ","; temp2 = temp2 + "2|" + i + "|" + color + ","; temp2 = temp2 + i + "|2|" + color + ","; } x = 0; while (x > -2) { y = 0; while (y > -2) { temp = ""; for (var i = 1; i <= num; i += 2) { temp = temp + "0|" + (tb[4] + y - i - 1) + "|" + color + ","; temp = temp + (tb[4] + x) + "|" + i + "|" + color + ","; temp = temp + (tb[4] + x) + "|" + (tb[4] + y - i - 1) + "|" + color + ","; temp = temp + (tb[4] + x - i - 1) + "|0|" + color + ","; temp = temp + i + "|" + (tb[4] + y) + "|" + color + ","; temp = temp + (tb[4] + x - i - 1) + "|" + (tb[4] + y) + "|" + color + ","; temp = temp + "1|" + (tb[4] + y - i - 1) + "|" + color + ","; temp = temp + (tb[4] + x - 1) + "|" + i + "|" + color + ","; temp = temp + (tb[4] + x - 1) + "|" + (tb[4] + y - i - 1) + "|" + color + ","; temp = temp + (tb[4] + x - i - 1) + "|1|" + color + ","; temp = temp + i + "|" + (tb[4] + y - 1) + "|" + color + ","; temp = temp + (tb[4] + x - i - 1) + "|" + (tb[4] + y - 1) + "|" + color + ","; } temp = temp + temp2 + "0|0|" + color; arr1 = temp.split(","); var arr2 = new Array(); for (var i = 0; i < arr1.length - 1; i++) { arr2[i] = new Array(); temp3 = arr1[i].split("|"); arr2[i] = [Number(temp3[0]), Number(temp3[1]), temp3[2]]; } try { p = images.findMultiColors(img, color, arr2, { region: [tb[0], tb[1], tb[2] - tb[0], tb[3] - tb[1]], threshold: (Math.floor(k / 10) * 16 + k % 10) }); if (p) { img.recycle(); return p.x } } catch (error) { //出错 console.log("识别失败,错误原因:" + error); return -1; } y = --y; } x = --x; } } try { img.recycle(); } catch (error) { console.log("识别失败,错误原因:" + error); } return -1; } function start() { for (var i = 0; i < 0; i++) { sleep(1000); log(i); } while (true) { img = images.captureScreen(); if (img) { log("截图成功。进行识别滑块!"); break; } else { log('截图失败,重新截图'); } } var x = discernSlidingblock(img, device.width) + 65 console.info("识别结果滑块X坐标:" + x); if (x > -1) { randomSwipe(220, y, x, y) return true; } else { return false; console.log("识别有误,请确认是否在滑块界面"); } } function bezierCreate(x1, y1, x2, y2, x3, y3, x4, y4) { //构建参数 var h = 100; var cp = [{ x: x1, y: y1 + h }, { x: x2, y: y2 + h }, { x: x3, y: y3 + h }, { x: x4, y: y4 + h }]; var numberOfPoints = 100; var curve = []; var dt = 1.0 / (numberOfPoints - 1); //计算轨迹 for (var i = 0; i < numberOfPoints; i++) { var ax, bx, cx; var ay, by, cy; var tSquared, tCubed; var result_x, result_y; cx = 3.0 * (cp[1].x - cp[0].x); bx = 3.0 * (cp[2].x - cp[1].x) - cx; ax = cp[3].x - cp[0].x - cx - bx; cy = 3.0 * (cp[1].y - cp[0].y); by = 3.0 * (cp[2].y - cp[1].y) - cy; ay = cp[3].y - cp[0].y - cy - by; var t = dt * i tSquared = t * t; tCubed = tSquared * t; result_x = (ax * tCubed) + (bx * tSquared) + (cx * t) + cp[0].x; result_y = (ay * tCubed) + (by * tSquared) + (cy * t) + cp[0].y; curve[i] = { x: result_x, y: result_y }; } //轨迹转路数组 var array = []; for (var i = 0; i < curve.length; i++) { try { var j = (i < 100) ? i : (199 - i); xx = parseInt(curve[j].x) yy = parseInt(Math.abs(100 - curve[j].y)) } catch (e) { break } array.push([xx, yy]) } return array } /** * 真人模拟滑动函数 * * 传入值:起点终点坐标 * 效果:模拟真人滑动 */ function randomSwipe(sx, sy, ex, ey) { //设置随机滑动时长范围 var timeMin = 1000 var timeMax = 3000 //设置控制点极限距离 var leaveHeightLength = 500 //根据偏差距离,应用不同的随机方式 if (Math.abs(ex - sx) > Math.abs(ey - sy)) { var my = (sy + ey) / 2 var y2 = my + random(0, leaveHeightLength) var y3 = my - random(0, leaveHeightLength) var lx = (sx - ex) / 3 if (lx < 0) { lx = -lx } var x2 = sx + lx / 2 + random(0, lx) var x3 = sx + lx + lx / 2 + random(0, lx) } else { var mx = (sx + ex) / 2 var y2 = mx + random(0, leaveHeightLength) var y3 = mx - random(0, leaveHeightLength) var ly = (sy - ey) / 3 if (ly < 0) { ly = -ly } var y2 = sy + ly / 2 + random(0, ly) var y3 = sy + ly + ly / 2 + random(0, ly) } //获取运行轨迹,及参数 var time = [0, random(timeMin, timeMax)] var track = bezierCreate(sx, sy, x2, y2, x3, y3, ex, ey) log("随机控制点A坐标:" + x2 + "," + y2) log("随机控制点B坐标:" + x3 + "," + y3) log("随机滑动时长:" + time[1]) //滑动 gestures(time.concat(track)) } function rand_img() { //从服务器上下载图片 let tx = http.get(websever + "/system/index/return_tx").body.string(); var url = websever + tx; //保存到路径/sdcard/auto.js.png threads.start(function () { imgname = (new Date).getTime(); if (url) { files.writeBytes("/sdcard/" + imgname + ".jpg", http.get(url).body.bytes()); media.scanFile("/sdcard/" + imgname + ".jpg"); toast("图片上传成功!"); } }); } //删除文件 function del_img() { url = "/sdcard/" + imgname + ".jpg"; threads.start(function () { if (files.remove(url)) { log('图片删除成功') } else { log('图片删除失败') } }) } ``` # toast即时更新文本 ### toast.js ```javascript importClass(android.widget.Toast); let toast = (function () { let toast = null; function showText(msg) { var msg = msg.toString(); if (!toast) { toast = Toast.makeText(context, msg, Toast.LENGTH_SHORT); } else { toast.setText(msg); } toast.show(); } return showText; })(); module.exports = toast; ``` ### main.js ```javascript let toast = require("./toast"); for (var i = 0; i < 10; i++) { toast(i); } ``` **## 声明** 部分内容来自网络 本教程仅用于学习, 禁止用于其他用途