我的博客欢迎大家来踩踩:http://www.yadinghao.com/

快手极速版高级的版本已经开启检测autojs,因此最新的快手极速版是无法用autojs脚本刷刷刷的。我这里提供9.2的下载地址,这个可以刷。地址如下:

https://wwa.lanzoui.com/icST4rzv4kh

另外我的邀请码如下:460754595

本次和大家分享的apk完全免费而且代码开源我先把地址和apk地址给大家。

APK地址:https://wwa.lanzoui.com/iSpfxsumwvi

源代码地址:https://wwa.lanzoui.com/i7YiEsu7gxe

  • 核心功能

无图无真想先给大家晒晒图。

一图知千意,切记用我提供的快手否则无法阅读。

功能我就不一一说了我先说下注意的地方。

一、首先此版本是免费版本,核心技术是AutojsPro开发,所以需要开启安卓系统的无障碍服务。其次本软件【签到】是基于找图技术研发找图技术需要适配分辨率,找图截图是依据OPPOR9SK开发分辨率是1080*1920的,故非此分辨率【签到】将无法运行。谢谢理解!!!最后作者wx18141782993需要购买收费版本的请联系谢谢!

二、本版本就用到几个图片且代码是完全开源的所以大家自己替换对应的图片就行可以了。

把这几个图片用截图工具自己截图替换就行了。

代码如下:

"ui";
var rootUrl = "http://www.yadinghao.com";
var storageSign = "YadinghaoKSFreeAssist"
var softVersion = "1.0.0"
var yadinghaoStorages = storages.create(storageSign);//创建本地存储ui.layout(<vertical><scroll><vertical><vertical><horizontal  ><text text="快手极速版邀请码:460754595 " textColor="#228B22" paddingLeft="14"/><button text="复制" id="btnCopyText" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" /></horizontal></vertical><vertical><horizontal  ><text text="下载快手极速版v9.2.40.1209 " textColor="#228B22" paddingLeft="14"/><button text="下载" id="btnDownloadApp" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" /><text text="别安装最新的最新的刷不了" textColor="#228B22" paddingLeft="2"/></horizontal></vertical>{/* 是否开启控制台 */}<vertical><horizontal ><img w="50" h="50" padding="16" src="https://img-blog.csdnimg.cn/2022010623454366871.png"></img><Switch id='switchIsShowConsole' text="是否开启控制台(不建议开启偶尔会遮挡点击事件" paddingTop="16" textColor="black" /></horizontal></vertical>{/* 是否强制停止 */}<vertical><horizontal ><img w="50" h="50" padding="16" src="https://img-blog.csdnimg.cn/2022010623454438148.png"></img><Switch id='switchIsCloseApp' text="是否强制停止(不是所有手机都支持)" paddingTop="16" textColor="black" /></horizontal></vertical>{/* 是否自动签到 */}<vertical><horizontal ><img w="50" h="50" padding="16" src="https://img-blog.csdnimg.cn/2022010623454451151.png"></img><Switch id='switchIsAutoSign' text="是否自动签到 " paddingTop="16" textColor="black" /></horizontal></vertical><vertical><horizontal ><img w="50" h="50" padding="16" src="https://img-blog.csdnimg.cn/2022010623454460638.png"></img><Switch id='switchIsAutoComment' text="是否自动评论" paddingTop="16" textColor="black" /></horizontal></vertical>{/* 是否自动清理缓存 */}<vertical><horizontal ><img w="50" h="50" padding="16" src="https://img-blog.csdnimg.cn/2022010623454423536.png"></img><Switch id='switchIsClearCache' text="是否自动清理缓存" paddingTop="16" textColor="black" /></horizontal></vertical>{/* 屏幕滑动时间间隔 系统内部加减2秒*/}<vertical><horizontal ><text text="屏幕滑动时间间隔(系统内部加减2秒):" textColor="red" padding="8 8 8 8" /><input id="txtScreenSileTimesInterval" text="10" hint="视频之间的滑动时间间隔" inputType="number" padding="8 8 8 8" /></horizontal></vertical>{/* App启动时间 */}<vertical><horizontal ><text text="App启动时间(秒):" textColor="red" padding="8 8 8 8" /><input id="txtAppStartWaiteTime" text="30" hint="App启动时间(秒)" inputType="number" padding="8 8 8 8" /></horizontal></vertical>{/* App执行时间 */}<vertical><horizontal ><text text="App执行时间(分):" textColor="red" padding="8 8 8 8" /><input id="txtAppExecuteTime" text="120" hint="App执行时间(分)" inputType="number" padding="8 8 8 8" /></horizontal></vertical><horizontal><button style="Widget.AppCompat.Button.Colored" id="btnStartApp" text="启动" padding="12dp" w="*" /></horizontal></vertical></scroll><frame id="frameSecondTab"><scroll><vertical><text w="auto" color="#111111" size="26" text="相关软件推荐" textColor="black" padding="8 8 8 8" /><list id="reItemList" padding="25 0 8 8"  ><horizontal h="40"><text id="appIndex" text="{{this.ProductIndex}}、" inputType="number" w="40" gravity="center" textColor="#228B22" /><text id="txtSoftName" textSize="18sp" textColor="#000000" text="{{SoftName}}" textColor="#228B22" /><button text="下载" id="btnDownLoad" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" /><button text="访问" id="btnVistorWeb" style="Widget.AppCompat.Button.Borderless" w="52" textColor="#FF7F50" /></horizontal></list></vertical></scroll></frame></vertical>
)
initializeFrendTipMessage()
initializeReItemList()
var CommentKeyWord = ['我是App小助手关注了你你要关注我哦!','山高路远坑深,大军纵横驰奔,谁敢横刀立马?惟有点赞加关注大军!','我的未来不是梦我相信你也是!','身同感受','风雨送春归,飞雪迎春到。','俏也不争春,只把春来报。','天若有情天亦老...','...人间正道是沧桑','...喜欢的人喜欢的事亦不能表达喜欢的心...','三分春色二分愁,更一分风雨',
];
var isShowConsole = yadinghaoStorages.get("isShowConsole");
if (isShowConsole != null && isShowConsole == "true") {ui.switchIsShowConsole.setChecked(true);
} else {ui.switchIsShowConsole.setChecked(false);
}
var timesInterval = yadinghaoStorages.get("timesInterval");
if (timesInterval != null) {ui.txtScreenSileTimesInterval.setText(timesInterval);
}
var IsAutoSign = yadinghaoStorages.get("isAutoSign");
var IsClearCache = yadinghaoStorages.get("isClearCache");
var IsCashOut = yadinghaoStorages.get("isCashOut");
var IsAutoComment = yadinghaoStorages.get("isAutoComment");
if (IsAutoComment != null && IsAutoComment == "true") {ui.switchIsAutoComment.setChecked(true);
} else {ui.switchIsAutoComment.setChecked(false);
}
if (IsAutoSign != null && IsAutoSign == "true") {ui.switchIsAutoSign.setChecked(true);
} else {ui.switchIsAutoSign.setChecked(false);
}
if (IsClearCache != null && IsClearCache == "true") {ui.switchIsClearCache.setChecked(true);
} else {ui.switchIsClearCache.setChecked(false);
}
if (IsCashOut != null && IsCashOut == "true") {ui.switchIsCashOut.setChecked(true);
}var WateForTime = yadinghaoStorages.get("WateForTime");
if (WateForTime != null) {ui.txtWateForTime.setText(WateForTime);
}
var exectueTime = yadinghaoStorages.get("exectueTime");
if (exectueTime != null) {ui.txtAppExecuteTime.setText(exectueTime);
}var IsCloseApp = yadinghaoStorages.get("isCloseApp");
if (IsCloseApp != null && IsCloseApp == "true") {ui.switchIsCloseApp.setChecked(true);
} else {ui.switchIsCloseApp.setChecked(false);
}ui.btnCopyText.on("click", function () {let AppCode = "460754595";toast("复制成功: " + AppCode);setClip(AppCode);
});
ui.btnDownloadApp.on("click", function () {try {app.openUrl("https://wwa.lanzoui.com/icST4rzv4kh");} catch (e) {//悬浮窗爱出错On Windows   Shift + Alt + F 代码格式console.show()toastLog("执行脚本出错...请将此页面截图联系攻城狮" + e)}
});ui.btnStartApp.on("click", function () {let isShowConsole = ui.switchIsShowConsole.isChecked();let timesInterval = ui.txtScreenSileTimesInterval.getText();let IsAutoSign = ui.switchIsAutoSign.isChecked();let IsClearCache = ui.switchIsClearCache.isChecked();let IsAutoComment = ui.switchIsAutoComment.isChecked();let wateForTime = parseInt(ui.txtAppStartWaiteTime.getText());let IsCloseApp = ui.switchIsCloseApp.isChecked();let probability = 10;let totalTimes = ui.txtAppExecuteTime.getText() //执行时间let consoleMessage = "不开启控制台";if (isShowConsole) {consoleMessage = "开启控制台";}let totalHour = parseFloat(totalTimes / 60).toFixed(2);//转成小时//let havedHour = parseFloat(totalExecTimes / 60).toFixed(2);//转成小时let tipMessage = "本次共执行:" + totalHour + "小时." + consoleMessage;confirm(tipMessage).then(value => {if (value) {threads.start(function () {auto.waitFor();saveConfig()//保存一下配置threads.start(function () {if (isShowConsole) {console.show();console.setPosition(0, device.height / 3);}//开启截图功能if (!requestScreenCapture()) {toastLog("请求截图失败");stop();}});let appName = "快手极速版"快手极速版(appName, wateForTime, timesInterval, probability, totalTimes, IsAutoSign, IsAutoComment)if (IsClearCache) {clearAppCache()}if (IsCloseApp) {clearCach(appName)}});} else {toastLog("操作被取消了");}});
});
function 快手极速版(appName, wateForTime, timesInterval, probability, execTimes, isAutoSign, isAutoComment) {app.launchApp(appName);//启动ApptoastLog("当前自动阅读程序" + appName + "等待进入");//系统日志提示cutDownBySleep(wateForTime)//启动App时候等待时间adolescentWindows();//关闭青少年窗口closeUpgradetWindows();//关闭升级提示框if (isAutoSign)autoSign(appName)while (true) {try {var start = new Date().getTime();//App起始时间let x1 = random(device.width * 0.8, device.width * 0.9);let y1 = device.height - (device.height * 0.15)let x2 = random(device.width * 0.8, device.width * 0.9);let y2 = device.height * 0.2let pressTime = random(700, 800);keepBrush()randomHeart('like_icon', probability);//随机关注百分之一的概率randomFollow('series_follow', probability)if (isAutoComment)AutoComment(probability)randomUpSildeScreen(x1, y2, x1, y1, pressTime, probability);randomDownSildeScreen(x1, y1, x2, y2, pressTime, timesInterval, probability);slideScreenDown(x1, y1, x2, y2, pressTime, timesInterval, false);appRunTimeRecord(appName, (new Date().getTime() - start))//记录一次时间computerExctueTime(appName, execTimes)} catch (error) {toastLog(appName + "刷刷刷时出现错误!" + error);sleep(timesInterval * 1000)}}
}
function keepBrush(){if (id("left_btn").exists()) {back()}let return_image_array=["./Image/快手极速版/返回1.png", "./Image/快手极速版/返回2.png", "./Image/快手极速版/返回3.png"]let ad_area_coordinate = [0, 0, device.width, device.height * 0.55]let threshold = 0.8if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {}
}
/***  自动签到*/
function autoSign(appName) {let signValue = getSignTime(appName);if (getDate() == signValue) {toastLog("已签到本次签到跳过...");return;}let ad_area_coordinate = [0, 0, device.width, device.height * 0.55]let threshold = 0.8let get_coin_image = ["./Image/快手极速版/红包1.png", "./Image/快手极速版/红包2.png"]let ad_image_array = buildADArray("./Image/AD", 12);let sign_image_array=   ["./Image/快手极速版/快手立即签到.png", "./Image/快手极速版/立.png", "./Image/快手极速版/即.png"]let return_image_array=["./Image/快手极速版/返回1.png", "./Image/快手极速版/返回2.png", "./Image/快手极速版/返回3.png"]if (clickAreaForFindImage(get_coin_image, ad_area_coordinate, threshold)) {sleepRandom3() //是个网页加载的慢if (clickAreaForFindImage(sign_image_array, ad_area_coordinate, threshold)) {clickAreaForFindImage(ad_image_array)if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {}else{back()}}else{if (文字去签到()) {clickAreaForFindImage(ad_image_array)if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {}else{back()}}swipeDown()if (文字去签到()) {clickAreaForFindImage(ad_image_array)if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {}else{back()}}swipeDown()if (文字去签到()) {clickAreaForFindImage(ad_image_array)if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {}else{back()}}swipeDown()if (文字去签到()) {clickAreaForFindImage(ad_image_array)if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {}else{back()}}}if (clickAreaForFindImage(return_image_array, ad_area_coordinate, threshold)) {}else{back()}}function 文字去签到() {if (text("去签到").exists()) {console.log("快手极速版去签到");if (clickControlBounds(text("去签到"))) {recordSignTime(appName);return true} else {return false}} else {return false}}}
/*** 清理缓存*/
function clearAppCache() {if (className("android.widget.ImageView").id("left_btn").exists()) {className("android.widget.ImageView").id("left_btn").findOnce().click();sleep(3000);if (className("android.widget.TextView").text("设置").exists()) {toastLog("点击设置");let b = className("android.widget.TextView").text("设置").findOne().bounds();click(b.centerX(), b.centerY());sleep(3000);if (className("android.widget.TextView").text("清除缓存").exists()) {let b = className("android.widget.TextView").text("清除缓存").findOnce().bounds();let result = click(b.centerX(), b.centerY());if (result) {toastLog("清理成功");}}}}
}
/*** 自动评论*/
function AutoComment(probability) {let randomIndex = random(1, parseInt(probability));if (randomIndex == 1) {let comment = CommentKeyWord[Math.floor(Math.random() * CommentKeyWord.length)];let buttons = className("android.widget.LinearLayout").id("comment_button").find();if (buttons.length > 0) {let clickResult = buttons[0].click();if (clickResult) {sleep(3000);if (id("comment_editor_holder_text").exists()) {id("comment_editor_holder_text").findOnce().click();sleep(1000);setText(0, comment);sleep(1000);if (text("发送").exists()) {toastLog("开启自动评论");if (text("发送").findOnce().click()) {toastLog("自动评论成功");if (clickControlBounds(id("photo_detail_panel_close"))) {} else {back();}}}}}}}
}
function saveConfig() {yadinghaoStorages.put("isShowConsole", "" + ui.switchIsShowConsole.isChecked() + "");yadinghaoStorages.put("timesInterval", "" + ui.txtScreenSileTimesInterval.getText() + "");yadinghaoStorages.put("isAutoSign", "" + ui.switchIsAutoSign.isChecked() + "");yadinghaoStorages.put("isClearCache", "" + ui.switchIsClearCache.isChecked() + "");yadinghaoStorages.put("isAutoComment", "" + ui.switchIsAutoComment.isChecked() + "");yadinghaoStorages.put("wateForTime", "" + ui.txtAppStartWaiteTime.getText() + "");yadinghaoStorages.put("isCloseApp", "" + ui.switchIsCloseApp.isChecked() + "");yadinghaoStorages.put("exectueTime", "" + ui.txtAppExecuteTime.getText() + "");
}
function initializeFrendTipMessage() {try {dialogs.build({title: "友情提醒",positive: "确定",negative: "复制微信",neutral: "访问官网",items: ["首先此版本是免费版本,核心技术是AutojsPro开发,所以需要开启安卓系统的无障碍服务。\r\n其次本软件【签到】是基于找图技术研发找图技术需要适配分辨率,找图截图是依据OPPOR9SK开发分辨率是1080*1920的,故非此分辨率【签到】将无法运行。谢谢理解!!!\r\n最后作者wx18141782993需要购买收费版本的请联系谢谢!"]}).on("negative", () => {app.openUrl("www.yadinghao.com");}).on("neutral", () => {app.openUrl("www.yadinghao.com");}).on("show", (dialog) => {}).show();} catch (e) {console.show()toastLog("initializeFrendTipMessage出错...请将此页面截图联系攻城狮" + e)}
}
function initializeReItemList() {try {var result_threads = threads.disposable();threads.start(function () {let dict_result = []try {var url_address = rootUrl + "/api/AppFindRecommendSoft?type=1";response = http.post(url_address, { "type": "1" });if (response.statusCode == 200) {var product_json = response.body.json();if (product_json.success == "true") {var ProducCloudList = [];let recProductList = JSON.parse(product_json.data)for (let i = 0; i < recProductList.length; i++) {let row = { ProductIndex: (i + 1), SoftName: recProductList[i].PRODUCT_NAME, DownURL: recProductList[i].DOWNLOAD_URL, VistorURL: recProductList[i].VISTOR_URL };ProducCloudList.push(row);}dict_result = [true, ProducCloudList]result_threads.setAndNotify(dict_result);} else {dict_result = [false, "读取云端信息出现问题:" + json.message]result_threads.setAndNotify(dict_result);}} else if (response.statusCode == 404) {dict_result = [false, "读取云端信息出现问题访问服务器出现错误404错误请稍后重试"]result_threads.setAndNotify(dict_result);} else {dict_result = [false, "读取云端信息出现问题无法连接服务器"]result_threads.setAndNotify(dict_result);}} catch (error) {dict_result = [false, "读取云端脚本出现问题:" + error]result_threads.setAndNotify(dict_result);}});result_threads = result_threads.blockedGet()if (result_threads[0] == false) {toastLog(result_threads[1])}else {ui.reItemList.setDataSource(result_threads[1]);}} catch (error) {toastLog("initializeReItemList构建推荐脚本出现错误:" + error)}ui.reItemList.on("item_bind", function (itemView, itemHolder) {itemView.btnDownLoad.on("click", function () {try {let item = itemHolder.item;let url = item.DownURLapp.openUrl(url);} catch (e) {//悬浮窗爱出错On Windows   Shift + Alt + F 代码格式console.show()toastLog("btnDownLoad执行脚本出错...请将此页面截图联系攻城狮" + e)}});itemView.btnVistorWeb.on("click", function () {try {let item = itemHolder.item;let url = item.VistorURLapp.openUrl(url);} catch (e) {//悬浮窗爱出错On Windows   Shift + Alt + F 代码格式console.show()toastLog("btnVistorWeb执行脚本出错...请将此页面截图联系攻城狮" + e)}});});
}//#region 公共方法
function buildADArray(ad_path, ad_number) {let ad_array = []for (let i = 1; i <= ad_number; i++) {let ad_full_path = ad_path + "/ad" + (i) + ".png"ad_array.push(ad_full_path)}return ad_array;
}
function clearCach(appName) {let deviceModel = device.modelif (deviceModel == "OPPO R9sk") {recents()sleep(2000);click(device.width / 2, device.height / 1.19)} else {stopApp(appName)}
}
/*** 强制停止app* @param {应用名称} appName */
function stopApp(appName) {try {openAppSetting(getPackageName(appName));sleep(3000);if (className("android.widget.Button").text("强行停止").exists()) {className("android.widget.Button").text("强行停止").findOnce().click();} else {if (text("强行停止").exists()) {text("强行停止").findOnce().click();}}sleep(3000);if (className("android.widget.Button").text("确定").exists()) {className("android.widget.Button").text("确定").findOnce().click();toastLog(appName + "已经停止!");}else {if (text("强行停止").exists()) {text("强行停止").findOnce().click();toastLog(appName + "已经停止!");} else {if (text("结束运行").exists()) {text("结束运行").findOnce().click();sleep(500);if (text("确定").exists()) {text("确定").findOnce().click();toastLog("MIUI9 Android7" + appName + "已经停止!");}}}}} catch (e) {toastLog(e);}
}
/*** 找图,找到并点击* @param {可以是数组也可以是字符串,传输数组可以多次找图知道找到为止} img_path_array * @param {找图区域,默认是全屏找图,该参数可以不传输} area_region * @param {相似度,默认是0.8,可以不传输} threshold * @returns true表示执行成功Flase表示失败*/
function clickAreaForFindImage(img_path_array, area_region, threshold, is_continue) {try {area_region = area_region || [0, 0, device.width, device.height] //默认的找图区域 全屏找图 前2位是坐标 后面是长度和宽度   千万别理解成是坐标threshold = threshold || 0.8 // 默认的相识度0.8is_continue = is_continue || falseif (img_path_array instanceof Array) {let arrayLength = img_path_array.lengthfor (let i = 0; i < arrayLength; i++) {//toastLog("正在进行第" + (i + 1) + "次找图...")img_path = img_path_array[i] //小图地址可判断是否存在if (!files.exists(img_path)) {toastLog(img_path + "文件不存在因此跳过")continue}var little_image = images.read(img_path) //小图var find_result_bounds = findImage(captureScreen(), little_image, {region: area_region,threshold: threshold});if (find_result_bounds) {toastLog(img_path + "图找到,准备点击坐标:" + find_result_bounds)click(find_result_bounds.x, find_result_bounds.y)return true} else {//toastLog(img_path+"小图存在但是在大图中未找到图片进入下一次循环...")}}return false}if (typeof (img_path_array) == "string") {img_path = img_path_array//小图地址可判断是否存在if (!files.exists(img_path)) {toastLog(img_path + "文件不存在因此跳过")return false}var little_image = images.read(img_path) //小图var find_result_bounds = findImage(captureScreen(), little_image, {region: area_region,threshold: threshold});if (find_result_bounds) {toastLog(img_path + "图找到,准备点击坐标:" + find_result_bounds)click(find_result_bounds.x, find_result_bounds.y)return true} else {//toastLog(img_path + "小图存在但是在大图中未找到图片")return false}}} catch (error) {toastLog("clickAreaForFindImage方法出现错误:" + error)return false;}
}
/*** 启动app* @param {*} appName */
function startApp(appName) {sleepRandom3()app.launchApp(appName);//启动Appsleep(30000);//启动App时候等待时间adolescentWindows();//关闭青少年窗口//closeUpgradetWindows();//关闭升级提示框
}
/***  * 判断app今日时间否到达* 1、完成部分* 2、全部完成* 3、继续执行* @param {App名称} appName * @param {总共执行时间} execTimes * @param {是否碎片化} isFragmentation * @param {碎片化时间} fragmentationTime */
function computerExctueTime(appName, execTimes) {if (appName == app.getAppName(currentPackage())) {//toastLog("Run the same app as the task app")} else {startApp(appName)}let key = appName + storageSign + getDate();let havedRunTimes = yadinghaoStorages.get("" + key + ""); //系统存储已经执行的时间let havedMinute = (havedRunTimes / 1000) / 60;//读取到的时间是毫秒需要转换成秒,转换成秒后在转换成分钟toastLog(appName + "已经执行" + havedMinute.toFixed(2) + '分' + "总计:" + execTimes + "分");
}
/*** 贝塞尔曲线* @param {坐标点} ScreenPoint * @param {偏移量} Offset */
function bezier_curves(ScreenPoint, Offset) {cx = 3.0 * (ScreenPoint[1].x - ScreenPoint[0].x);bx = 3.0 * (ScreenPoint[2].x - ScreenPoint[1].x) - cx;ax = ScreenPoint[3].x - ScreenPoint[0].x - cx - bx;cy = 3.0 * (ScreenPoint[1].y - ScreenPoint[0].y);by = 3.0 * (ScreenPoint[2].y - ScreenPoint[1].y) - cy;ay = ScreenPoint[3].y - ScreenPoint[0].y - cy - by;tSquared = Offset * Offset;tCubed = tSquared * Offset;result = {"x": 0,"y": 0};result.x = (ax * tCubed) + (bx * tSquared) + (cx * Offset) + ScreenPoint[0].x;result.y = (ay * tCubed) + (by * tSquared) + (cy * Offset) + ScreenPoint[0].y;return result;
}
/*** 滑动(默认概率是百分之三十)* @param {*} qx * @param {*} qy * @param {*} zx * @param {*} zy * @param {*} time * @param {*} timesInterval */
function slideScreenDown(qx, qy, zx, zy, time, timesInterval, CurveBrushScreen) {if (CurveBrushScreen) {curveDown(qx, qy, zx, zy, time, timesInterval); //曲线概率} else {lineDown(qx, qy, zx, zy, time, timesInterval); //直线概率}
}
/*** 概率0-9 大于3的时候采用曲线概率 小于3的时候直线概率*/
function randomFunction() {return Math.floor(Math.random() * 10);
}
/*** * @param {*} qx * @param {*} qy * @param {*} zx * @param {*} zy * @param {*} time * @param {*} timesInterval */
function curveDown(qx, qy, zx, zy, time, timesInterval) {var xxy = [time];var point = [];var dx0 = {"x": qx,"y": qy};var dx1 = {"x": random(qx - 100, qx + 100),"y": random(qy, qy + 50)};var dx2 = {"x": random(zx - 100, zx + 100),"y": random(zy, zy + 50),};var dx3 = {"x": zx,"y": zy};for (var i = 0; i < 4; i++) {eval("point.push(dx" + i + ")");};for (let i = 0; i < 1; i += 0.08) {let newPoint = bezier_curves(point, i);xxyy = [parseInt(newPoint.x), parseInt(newPoint.y)]xxy.push(xxyy);}gesture.apply(null, xxy);let randomMin = timesInterval * 1000;let randomMax = (parseInt(timesInterval) + 2) * 1000;let delayTime = random(randomMin, randomMax);sleep(delayTime);
}
function swipeDown() {let x1 = random(device.width * 0.8, device.width * 0.9);let y1 = device.height - (device.height * 0.2)let x2 = random(device.width * 0.8, device.width * 0.9);let y2 = device.height * 0.1swipe(x1, y1, x2, y2, 700);sleep(3000);
}
/*** 屏幕向下滑动并延迟8至12秒*/
function lineDown(startX, startY, endX, endY, pressTime, timesInterval) {swipe(startX, startY, endX, endY, pressTime);let randomMin = timesInterval * 1000;let randomMax = (parseInt(timesInterval) + 2) * 1000;let delayTime = random(randomMin, randomMax);sleep(delayTime);
}
/*** 按照指定概率随机上滑* @param {*} startX * @param {*} startY * @param {*} endX * @param {*} endY * @param {*} pressTime * @param {*} probability */
function randomUpSildeScreen(startX, startY, endX, endY, pressTime, probability) {let randomIndex = random(1, parseInt(probability));if (randomIndex == 1) {swipe(startX, startY, endX, endY, pressTime);delayTime = random(12000, 15000);sleep(delayTime);}
}
/*** 连续下滑对上一个无兴趣* 其实得和上滑做个排他,既然无兴趣不要在上滑*/
function randomDownSildeScreen(startX, startY, endX, endY, pressTime, timesInterval, probability) {let randomIndex = random(1, parseInt(probability));if (randomIndex == 1) {swipe(startX, startY, endX, endY, pressTime);sleep(3500);swipe(startX, startY, endX, endY, pressTime);sleep(timesInterval);}
}
/*** 随机点赞* @param {点赞ID}} view_id */
function randomHeart(view_id, probability) {index = random(1, parseInt(probability));if (index == 1) {var target = id(view_id).findOnce();if (target == null) {doubleClick() //双击加关注return;} else {target.click();}}
}
/*** 随机关注* @param {控件ID} follow_view_id * @param {概率} probability */
function randomFollow(follow_view_id, probability) {index = random(1, parseInt(probability));if (index == 1) {var target = id(follow_view_id).findOnce();if (target == null) {return;} else {target.click();sleep(1000);}}
}
/*** 双击屏幕(很多视频其实就是点赞)*/
function doubleClick() {//增加个随机概念 最多敲击三次click(200, 200)sleep(100)click(202, 210)
}
/*** 记录App一次运行的时间* @param {appName} appName * @param {本次运行时间} recordTimes */
function appRunTimeRecord(appName, recordTimes) {let key = appName + storageSign + getDate();var havedRunTimes = yadinghaoStorages.get("" + key + "");let value = "";if (havedRunTimes == null) {yadinghaoStorages.put(key, parseInt(recordTimes));} else {value = parseInt(havedRunTimes) + parseInt(recordTimes);yadinghaoStorages.put(key, value);}
}
/*** 获取当前时间格式yyyyMMdd*/
function getDate() {var date = new Date();var year = date.getFullYear();var month = date.getMonth() + 1;if (month < 10) {month = "0" + month;};var day = date.getDate();if (day < 10) {day = "0" + day;};return year + "-" + month + "-" + day;
}/*** */
function getTime() {var date = new Date();var year = date.getFullYear();var month = date.getMonth() + 1;if (month < 10) {month = "0" + month;};var day = date.getDate();if (day < 10) {day = "0" + day;};var hour = date.getHours();if (hour < 10) {hour = "0" + hour;};var minute = date.getMinutes();if (minute < 10) {minute = "0" + minute;};var seconds = date.getSeconds();     //获取当前秒数(0-59)var millisecond = date.getMilliseconds();    //获取当前毫秒数(0-999)return year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + seconds + ":" + millisecond;
}
/*** 青少年窗口*/
function adolescentWindows() {if (text("我知道了").exists()) {text("我知道了").findOnce().click();}if (text("知道了").exists()) {text("知道了").findOnce().click();}if (text("同意").exists()) {clickControlBounds(text("同意"));}
}
/*** 升级窗口*/
function closeUpgradetWindows() {clickControlBounds(text("以后再说"))clickControlBounds(text("直接无视"))clickControl(text("我在想想"))clickControl(text("稍候再说"))clickControl(text("以后"))clickControl(text("以后更新"))clickControl(text("回头再说"))clickControl(text("回头在说"))clickControl(text("先去看看"))clickControl(text("先去逛逛"))clickControl(text("以后再说"))clickControl(text("忽略该版本"))clickControl(text("游客逛逛"))clickControl(text("暂不更新"))}
/*** 倒计时方法适用于脚本* @param {倒计时时间} lasterTime */
function cutDownBySleep(lasterTime, message) {message = message || ""for (let i = lasterTime; i => 0; i--) {console.info(message + "剩余" + i + "秒...")sleep(1000)if (i == 1) {return}}
}
/*** 休眠随机0.1秒至0.5秒*/
function sleepRandom0() {sleep(random(100, 500));
}
/*** 休眠随机1秒至3秒*/
function sleepRandom1() {sleep(random(1000, 3000));
}
/*** 休眠随机3秒至5秒*/
function sleepRandom3() {sleep(random(3000, 5000));
}
/*** 休眠随机5秒至7秒*/
function sleepRandom5() {sleep(random(5000, 7000));
}
/*** 休眠随机7秒至9秒*/
function sleepRandom7() {sleep(random(7000, 9000));
}
/*** 休眠随机11秒至9秒*/
function sleepRandom9() {sleep(random(9000, 11000));
}
/*** 点击屏幕上的坐标* @param {坐标} b */
function clickBounds(b) {return clickResult = click(b.centerX(), b.centerY());
}
/*** 点击屏幕上的坐标* @param {坐标} b */
function clickControlBounds(element) {let clickResult = false;if (element == null) {return false;}try {if (element.exists()) {toastLog("准备click:" + element);let b = element.findOnce().bounds();clickResult = click(b.centerX(), b.centerY());sleep(random(2000, 3200));} else {}return clickResult;} catch (error) {toastError("clickControlBounds方法出现错误:" + error)return false;}
}
/*** 点击UI上的控件* @param {UI上的元素} element */
function clickControl(element) {let clickResult = false;if (element == null) {return false;}try {if (element.exists()) {toastLog("准备click:" + element);let b = element.findOnce().bounds();clickResult = click(b.centerX(), b.centerY());sleep(random(2000, 3200));} else {}return clickResult;} catch (error) {toastError("clickControlBounds方法出现错误:" + error)return false;}
}
/*** 记录App签到时间* @param {App名称} appName */
function recordSignTime(appName) {let key = appName + storageSign;let value = getDate();yadinghaoStorages.put(key, value);
}
/*** 记录App签到时间* @param {App名称} appName */function getSignTime(appName) {let key = appName + storageSign;let value = yadinghaoStorages.get(key);return value;
}
//#endregion

上面是完整代码不过要运行得依赖图片因此大家下载项目能更好点。

三、核心技术

此次用的是autojsPro7 主要使用了找图功能。友情提醒autojs4支持找图但是会宕掉,而autojsPro8不支持快手无法进行元素分析。

  • 机型选择

我开发采用的是OppoR9SK 分辨率是1920*1080的。所以大家尽量和我机器一样,如果不一样分辨率一样也行,实在不一样就自己截图替换一下图片就行了。

我封装了几个NB的找图方法还算NBA大家可以看看。

http://www.yadinghao.com/article/details/202108190001

我的博客欢迎大家来踩踩:http://www.yadinghao.com/

主要是有自媒体和自动化的东西总有一个是你喜欢的。

分享快手极速版助手APK和源代码相关推荐

  1. 分享电音极速版助手APK和源代码

    我的博客欢迎大家来踩踩:亚丁号 我抖音邀请码:890992808 (别犹豫填了大家都有钱) 本次和大家分享的apk完全免费而且代码开源我先把地址和apk地址给大家. APK地址:https://wwa ...

  2. 分享快看点助手APK和源代码

    我的博客欢迎大家来踩踩:http://www.yadinghao.com/ 快看点的邀请码如下:N1YDVQ 本次和大家分享的apk完全免费而且代码开源我先把地址和apk地址给大家. APK地址:ht ...

  3. auto.js 快手极速版刷视频3.0

    auto.js 快手极速版刷视频 结合网上脚本进一步优化 设备: 安卓手机 android 7.0 以上 app: 快手极速版,auto.js 4_1_1. 脚本: kuaishou.js 优化历史 ...

  4. autojs左右滑动脚本代码_基于AutoJs过滑块快手极速版脚本

    快手极速版邀请码: 2rvxaem 脚本不是我原创,说实话我也没看明白,是一个好心的网友给我的.让我参考,他既然这么无私我也无私点.把源码给大家公开一下,大家能学多少算多少吧!一起学习进步. 不废话直 ...

  5. 快手极速版脚本代码(仅供参考)

    home(); sleep(1500); while(click("快手极速版")) sleep(5000)//等待5svar num = 200;//想要循环几次,自己输入 ne ...

  6. AutoJs Pro 7.0.4-1 实战教程---史上最全快手极速版

    快手极速版邀请码:  610 265 975 看文章加关注点分享都不用...加下邀请码就好. PS:最近快手大行动做了很多保护机制,至少分身模型是不可以了,我们专业版群里的高手总结就是一机一开一号,完 ...

  7. Autojs4.1.0实战教程---快手极速版自动评论

    抖音极速版邀请码: 890992808 看文章加关注点分享都不用...加下邀请码就好 快手极速版邀请码: 2rvxaem 代码地址:https://blog.csdn.net/zy0412326/ar ...

  8. 快手极速版薅羊毛+脚本+抓包教程+环境变量配置 保姆级别教程 (2022/5/13 更新)

    快手极速版薅羊毛是基于青龙面板的 首先你要有自己的青龙面板 没有青龙面板的可以看下我以前的文章,很简单的(有服务器的话2分钟搭建完毕) 那么下面开始进入正题! 首先 拉取脚本库(截至到目前为止很多脚本 ...

  9. 手把手教你如何利用Python薅羊毛(快手极速版)

    不说多话,我们直接进入正文: 一.项目简介 快手极速版看视频,可以有金币奖励,但是需要人手不停的一个视频一个视频的滑动,利用Python的强大功能,通过代码实现自动刷视频,有效解放双手的同时可以薅点羊 ...

最新文章

  1. EMC Isilon(OneFS)删除重要数据后恢复案例
  2. 3月第3周新闻回顾:3Com案三日动荡 珊瑚虫作者入狱3年
  3. 【一分钟了解】1em等于多少px,由什么决定?
  4. 苹果将于 2025 年推出的 Apple Car 长什么样?
  5. Build desktop apps for Windows PCs
  6. 软件测试岗位工作,到底可以做多久?
  7. 如何让jquery-easyui的combobox像select那样不可编辑
  8. Windows操作系统架构梳理
  9. 显卡游戏温度测试软件,看谁最发烧 10款游戏的显卡温度测试
  10. a5m2使用方法 mysql_反転
  11. 郁金香java_郁金香搜索引擎的方案
  12. 手机浏览器devtools_浏览器DevTools的秘诀:启动,网络和性能
  13. html中textarea标签的换行
  14. 我的世界java皮肤展开图,我的世界:如果将6种怪物皮肤展开,你能认出几个?图5难倒老MC...
  15. 计算机剪切功能是哪个组合键,剪切快捷键是哪个?电脑剪切快捷键大全
  16. 中国首次成功实现4K超高清电视5G网络传输测试
  17. html语言文字闪烁,CSS3+HTML5特效6 - 闪烁的文字
  18. 基于SSM的家庭理财管理系统,高质量毕业论文范例-可直接参考使用,附源码和数据库脚本,论文撰写视频教程
  19. Python豆瓣电影爬虫实战(超详解)-----我的机器人女友《阿丽塔》
  20. 剪切时中断,文件不见了的恢复办法

热门文章

  1. 初学怕python画图工具pen以及初学个人感悟
  2. 行业研究分析-全球与中国Type-C数据线市场现状及未来发展趋势
  3. html网页课件,HTML网页制作-教学课件.ppt
  4. SSH 详解(实践及应用)
  5. 如何使用Java来发送企业邮箱,并设计收到邮件的样式
  6. VMware虚拟机安装Ubuntu16-18系统超详细过程(含下载地址)
  7. 7-DoG(差分高斯,Difference of Gaussina)
  8. UCC21755QDWRQ1引脚图TPS92667QPHPRQ1汽车级驱动芯片
  9. HDU 3079:Vowel Counting
  10. mac的rubywoo怎么读_迪奥999和mac ruby woo哪个更好看_有什么区别