24行代码简单实现qq空间自动点赞

news2024/11/19 5:40:26

什么是Auto.js?

Auto.js是基于JavaScript语言运行在Android平台上的工具。它依赖于无障碍服务

它可以做什么?

解放双手,让手机自动打游戏、自动签到、自动领红包等等等等

它有什么优点?

不需要root权限(Android 7.0以上),免费打包成APP,通过控件操作免去了找图找色不准确的苦恼,适配能力超群。

怎么下载?

由于Auto.js被黑产使用,作者关闭了下载渠道,以下是我在网山找到的版本安装包:

链接:https://pan.baidu.com/s/1nArkweTSLddGYWYXTIaxSw?pwd=ch0o
提取码:ch0o

若你觉得不安全,可以在github找到原项目自行编译

安装好了?开始写代码吧!

手机上打开Auto.js,根据app提示打开无障碍服务后即可使用,里面默认给了示例代码,可以参考学习。

我们可以直接在手机上写代码,也可以在电脑上写好再传到手机上(推荐后者)

为了方便开发,可以在vscode中安装插件:Auto.js-VSCodeExt和Auto.js-Pro-Ext,注意要认准原作者hyb1996,之后我们就可以进行方便的运行调试,不过有些功能需要使用Auto.js PRO版本,需自行购买。

我们尝试一个最简单的功能:

toastLog("hello 小何!");

点击运行,就可以看到手机下方出现了hello 小何!
在这里插入图片描述

Auto.js中内置超多方法供我们通过代码对手机进行操作,而不需要知道其底层的原理:

//打开一个应用
launchApp("这里输入应用名称");
//模拟三指下滑
gestures([下滑时间, [开始下滑的横坐标, 开始下滑的纵坐标], [下滑结束的横坐标, 下滑结束的纵坐标]],
		[下滑时间, [开始下滑的横坐标, 开始下滑的纵坐标], [下滑结束的横坐标, 下滑结束的纵坐标]],
		[下滑时间, [开始下滑的横坐标, 开始下滑的纵坐标], [下滑结束的横坐标, 下滑结束的纵坐标]]
);

其中还有许多好玩又实用的api,随着进一步的学习我们还可以模拟各种功能,实现解放双手

qq空间自动点赞功能

话不多说,直接开始!

这里不再赘述开发环境的安装,直接进入开发步骤

我们实现自动点赞功能的思路——脚本打开qq,自动点击动态栏,找到点赞控件完成点击后下滑,重复步骤,下面我们一步一步实现

首先,最简单的一步,通过launchApp(“app名称”)打开app:

launchApp("QQ");

接下来,我们要实现动态栏的点击,就要先找到动态栏对应的控件:

点开Auto.js的小绿图标(如果没有小绿图标,记得在Auto.js软件中开启悬浮窗功能),点击蓝色按钮,选择布局范围分析

在这里插入图片描述

选中动态栏控件:

在这里插入图片描述

选择查看控件信息,找到里面的text属性,点击复制,接下来我们就可以通过text函数来在脚本中获取控件,findOne表示找到页面中的第一个该名称的控件,继续调用click完成点击

text("动态").findOne().click();

不过这时候要注意两个问题:

  1. 脚本执行速度很快,但你的手机未必有那么快,很有可能在点击时qq还没有打开
  2. 有些控件被设为不可点击(clickable=false),这时运行就会发现毫无效果

怎么解决呢?

问题一:

第一种,我们可以采用暴力法,调用sleep使程序暂停执行一段时间:

sleep("1000");

第二种,我们可以等待控件加载完毕(使用控件的text属性):

text("动态").waitFor();

这样脚本就会等待控件加载完毕后再进行下一步操作。

问题二:

既然他不让我们通过获取的控件来点击,那我们就获取控件的坐标,通过点击坐标来完成任务

click(text("动态").findOne().bounds().centerX(),text("动态").findOne().bounds().centerY())

其中bounds是获取控件的坐标信息,在控件属性中你也能找到一个名为bounds的属性,它由四个值构成:

(left, top, right, bottom)

分别对应距左、上、右、下方的距离

centerX和centerY帮助我们获取其中的X和Y坐标值,通过click(X, Y)来实现该坐标的点击

以上,我们实现了打开qq并自动跳转至动态页的功能,接下来完成点赞:

  1. 获取👍控件,我们发现它的clickable属性为true,id为c7p
  2. find方法获取所有👍,将其存入一个数组中
  3. 遍历数组完成点赞,注意点赞前先判断一下enabled是否为false,防止点击两次
  4. 点击完就继续向下滑动,使用**swipe(起点横坐标, 起点纵坐标, 终点横坐标, 终点纵坐标, 滑动时间)**来完成,注意这里的坐标需根据自己的设备去设计,打开开发人员选项后开启指针位置就可查看触摸的坐标
launchApp("QQ");
text("动态").waitFor();
click(text("动态").findOne().bounds().centerX(),text("动态").findOne().bounds().centerY());
function like(){
    let likes = id("c7p").find();
    likes.forEach(like => {
        like.click();
        sleep(random(500,2000));//保险起见,每次暂停随机时间,使操作更像人为
    })
    swipe(400, 2100, 400, 100, 1000);
}
while(true){
    like();
}

现在我们就完成了一个简陋的自动点赞脚本,但运行的时候我们会发现,它没有判断是否已点赞,有时会造成点赞取消,接下来我们解决这个问题

思路:

  1. 获取截图权限
  2. 点赞前先获取每个点在控件的坐标信息(bounds属性)
  3. 对比控件中间的颜色,未点赞时为白色,但由于显示可能有出入,我们使用模糊查询images.detectsColor()
launchApp("QQ");
text("动态").waitFor();
click(text("动态").findOne().bounds().centerX(),text("动态").findOne().bounds().centerY());
//获取截图权限
if(!requestScreenCapture()){ 
	toast("请求截图失败"); 
	exit;
}
function like(){
    let likes = id("c7p").find();
    likes.forEach(like => {
        //截图取色的控件必须要在可视范围内,所以要加判断
        if(like.bounds().centerY()<=2100&&like.bounds().centerY()>=240){
            let notEnabled = images.detectsColor(captureScreen(), "#ffffff", like.bounds().centerX(), like.bounds().centerY());
        	if(notEnabled) like.click();
        	sleep(random(500,2000));//保险起见,每次暂停随机时间,使操作更像人为
        }
    })
    swipe(400, 2100, 400, 100, 1000);
}
while(true){
    like();
}

大功告成!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/112640.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python pandas有几千个库函数,你用过几个?(3)

上一篇链接&#xff1a; Python pandas有好几百个库函数&#xff0c;你都用过吗&#xff08;2&#xff09;_Hann Yang的博客-CSDN博客 R(read_)&#xff1a; Function26~45 Types[Function][25:45] [read_clipboard, read_csv, read_excel, read_feather, read_fwf, read_gb…

目标检测算法——mmdetection下面的deformable-detr运行

1、环境 包版本mmcv-full1.4.2mmdet2.19.1torch1.10.0cu113torchvision0.11.1cu1132、文档 mmet官方文档 mmcv官方文档 源码下载 3、数据集 自定义数据集 4、修改代码 4.1、生成文件 打开mmdetection-master/tools下面执行train.py文件 其中配置文件--config在 mmdetec…

STM32中断使用NVIC

抢占优先级和响应优先级 值越小优先级越高&#xff0c;抢占优先级高就可以的打断抢占优先级低的&#xff1b;但同一个抢占优先级&#xff0c;高响应优先级并不能打断低响应优先级&#xff1b;当然中断同时发生的响应优先级高的先执行。简单理解为&#xff1a;抢占优先级能控制…

RV1126笔记十七:吸烟行为检测及部署<五>

若该文为原创文章,转载请注明原文出处。 ubuntu16.04上搭建转化成RKNN环境并把onnx转成RKNN模型(ubuntu16.04) onnx模型转rknn模型需要用到py3.8,所以搭建环境在转换,下面全部操作都是虚拟机下进行。 注意:转模型用py3.6, 训练用py3.8 一、miniconda安装 1、下载地址…

论文投稿指南——中文核心期刊推荐(自然科学总论)

【前言】 &#x1f680; 想发论文怎么办&#xff1f;手把手教你论文如何投稿&#xff01;那么&#xff0c;首先要搞懂投稿目标——论文期刊 &#x1f384; 在期刊论文的分布中&#xff0c;存在一种普遍现象&#xff1a;即对于某一特定的学科或专业来说&#xff0c;少数期刊所含…

基于python的AD-census立体匹配算法实现

文章目录前言一、AD-census是什么&#xff1f;1.代价计算2.代价聚合3.视差优化4.视差后处理二、基于python的AD-census立体匹配算法实现前言 AD-Census算法来自于中国学者Xing Mei等在ICCV2011发表的论文《On Building an Accurate Stereo Matching System on Graphics Hardwar…

多类型随机图形生成方法及应用研究(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

Linux-5 基础命令

Linux-5 基础命令 查看类命令 此类命令仅能查看文件中的内容 ls是用来查看目录中的内容cat是用来查看文件中的内容 查看文件 cat 选项 -n&#xff1a;显示文件内容的行数-A&#xff1a;显示文件中的特殊字符&#xff08;如果从Windows拷贝配置文件到Linux&#xff0c;很容易出…

化学试剂Biotin-PEG-COOH,Biotin-PEG-acid,生物素-聚乙二醇-羧基

英文名称&#xff1a;Biotin-PEG-COOH&#xff0c;Biotin-PEG-acid 中文名称&#xff1a;生物素-聚乙二醇-羧基 生物素-PEG-COOH是一种含有生物素和羧酸的线性杂双功能PEG试剂。它是一种有用的带有PEG间隔基的交联或生物结合试剂。生物素能以高特异性和亲和力与亲和素和链霉亲…

C++:STL:常用容器(上):string

1&#xff1a;string容器 1.1 string基本概念 本质&#xff1a; string是C风格的字符串&#xff0c;而string本质是一个类 string和char* 区别 1&#xff1a;char* 是一个指针 2&#xff1a;string是一个类&#xff0c;类内部封装了 char* 管理这个字符串&#xff0c;是一个 …

5G无线技术基础自学系列 | 5G网络接入问题分析

素材来源&#xff1a;《5G无线网络规划与优化》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 5G网络的接入失败或者接入时延过大都会…

实现安卓LED设备驱动:不写一行代码

文章目录一、前言二、准备工作2.1 内核版本2.2 内核文档&#xff1a;bindings->leds2.3 文档解析&#xff1a; leds-gpio.txt三、编写DTS3.1 查原理图&#xff0c;挑选GPIO3.2 编写DTS文件四、编译测试4.1 编译dt.img4.2 烧录dt.img五、基于fs的测试5.1 测试命令5.2 **点灯效…

将单向链表按照目标值value 划分成左边小,中间等,右边大的形式,给定一个单链表,判断单链表的值是否是回文结构【图文解释包你看懂】

将单向链表按照目标值value 划分成左边小&#xff0c;中间等&#xff0c;右边大的形式 例如 1 -> 3 -> 5-> 3 -> 7 按照value 3划分 1-> 3-> 3 -> 5 -> 7 解题思路&#xff1a;给定值为 value 用6个变量&#xff0c;分别表示 小于value 的Head sH &…

2023年天津中德应用技术大学专升本专业课考试具体安排及准考证

2023年天津中德应用技术大学高职升本科专业课考试准考证下载及考生须知 一、准考证下载打印 12月24日12点开始&#xff0c;专业课报名审核通过的考生&#xff0c;登录学校专业课报名系统&#xff08;114.115.135.236/jobgroup/f&#xff09;&#xff0c;点击“准考证”&#xf…

Qt之悬浮球菜单

一、概述 最近想做一个炫酷的悬浮式菜单&#xff0c;考虑到菜单展开和美观&#xff0c;所以考虑学习下Qt的动画系统和状态机内容&#xff0c;打开QtCreator的示例教程浏览了下&#xff0c;大致发现教程中2D Painting程序和Animated Tiles程序有所帮助&#xff0c;如下图所示&a…

Java反射面试题

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;Java面试题…

科技交流英语(2022秋)Unit 6 test

科技交流英语&#xff08;2022秋&#xff09;Unit 6 test 简介 由电子科技大学组织开设&#xff0c;授课教师为李京南、庞慧、刘兆林等5位老师。 课程介绍 英语广泛用于工程技术领域的国际交流。如何使用简洁的语言清楚地传递信息是工程师在国际舞台上常常面临的问题。本课…

【Vue】Vue重写教室管理系统的前端网页V1(前后端分离)--20221222

项目说明 目的 练习并熟悉Vue2 的API&#xff0c;来为Vue项目做准备&#xff1a; 插值语法插槽props和data父子组件通信Ajax异步请求数据生命周期函数methods方法computed属性vue-router、路由守卫、query/params传参、编程函数式路由模拟后端服务器传送数据打包项目 需要加…

Tableau可视化设计案例-06Tableau填充地图,多维地图,混合地图

文章目录Tableau可视化设计案例06 填充地图&#xff0c;多维地图&#xff0c;混合地图1.填充地图1.1 各省售电量填充地图 地图格式设置2.多维地图2.1 各省售电量多维地图3.混合地图3.1 各省售电量混合地图Tableau可视化设计案例 本文是Tableau的案例&#xff0c;为B站视频的笔…

如何花最少的资源遍历二叉树

文章目录一、递归遍历二叉树1.1 前序遍历1.2 中序遍历1.3 后序遍历二、非递归遍历二叉树2.1 前序遍历2.2 中序遍历2.3 后序遍历三、高效的 Morris 遍历3.1 前序遍历3.2 中序遍历3.3 后序遍历关于二叉树的遍历也是面试过程中非常有可能考的话题。常见的简单的递归遍历二叉树&…