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

2023-05-16

什么是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();
}

大功告成!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

24行代码简单实现qq空间自动点赞 的相关文章

随机推荐

  • Spring 笔记

    Spring 笔记 1 Spring xff08 2021 1 27 xff09 1 1 简介 Spring xff1a 春天 gt 给软件行业带来了春天 xff01 2002 xff0c 首次推出了Spring框架的雏形 xff1a in
  • 妙用shell脚本画图形

    妙用shell脚本画图形 目录 妙用shell脚本画图形一 99乘法表二 输出1条直线三 画矩形四 左边直角三角形五 右侧直角三角形六 等腰三角形七 平行四边形八 梯形九 菱形 一 99乘法表 展示一 xff1a 展示二 xff1a 二 输
  • 搭建LNMP基础框架

    目录 一 编译安装Nginx服务二 编译安装MySQL服务三 编译安装PHP服务四 部署Discuz xff0c 社区论坛Web应用 一 编译安装Nginx服务 1 关闭防火墙 xff0c 将安装Nginx所需软件包传到 opt目录下 sy
  • 银河麒麟4.0.2二进制安装mysql5.7

    先查看银河麒麟的版本 root 64 idiom kylin1 cat etc kylin build Kylin 4 0 2 Build 20191024 一 下载二进制包 xff0c 并安装所需软件 root 64 idiom kyli
  • 使用shell脚本一键部署LNMP架构

    span class token comment bin bash span span class token comment 将需要的安装包传到 opt目录下 xff0c 并关闭防火墙 span systemctl stop firewa
  • Nginx优化与防盗链

    目录 一 隐藏版本号二 修改用户与组三 缓存时间四 日志分割五 连接超时六 更改进程数七 配置网页压缩八 配置防盗链九 fpm参数优化 一 隐藏版本号 可以使用Fiddler工具抓取数据包 xff0c 查看Nginx版本 也可以在Cento
  • MySQL索引、事务与存储引擎

    目录 一 MySQL索引1 索引的概念2 索引的作用3 创建索引的原则依据4 索引的分类和创建4 1 61 61 普通索引 61 61 4 2 61 61 唯一索引 61 61 4 3 61 61 主键索引 61 61 4 4 61 61
  • openstack基础知识

    目录 一 云计算1 什么是云计算2 云计算的特色3 云计算的三种使用方式1 xff09 公有云2 xff09 私有云3 xff09 混合云 4 云计算服务模型1 xff09 IaaS 基础架构即服务 2 xff09 PaaS xff08 平
  • openstack-keystone

    目录 一 keystone身份服务二 keystone的主要功能三 keystone相关概念四 keystone认证流程五 OpenStack Keystone组件部署步骤部署步骤 一 keystone身份服务 keystone xff08
  • k8s-----------YAML&harbor

    目录 概述使用YAML文件创建资源1 查看资源版本的标签2 创建yaml文件测试 Pod1 特点2 pod容器分类3 镜像拉取策略 部署harbor1 登录harbor私有仓库2 下载Tomcat镜像进行推送3 推送 概述 Kubernet
  • k8s-----------高级pod&调度

    目录 pod进阶pod重启策略 健康检查 探针调度约束调度方式 故障排除 pod进阶 limits cup cpu上限limits memory 内存上限requests cpu 创建时分配的基本CPU资源requests memory 创
  • k8s-----------控制器

    目录 Deployment 部署无状态应用 Pod与控制器之间的关系 SatefulSet xff08 部署有状态应用 xff09 无状态和有状态无状态有状态 常规service和无头服务区别DaemonSetjobCronJob 控制器
  • 安装electron时安装失败解决

    错误描述 xff1a 在安装 electron 的时候 xff0c 使用官方推荐的如下命令 xff1a npm install save dev electron 结果报错如下 npm ERR code 1 npm ERR path D A
  • 10:天干地支

    10 天干地支 时间限制 1 S 内存限制 8192 KB Accept 15 Submit 41 提交 讨论版 描述 天干地支 xff0c 源自中国远古时代对天象的观测 甲 乙 丙 丁 戊 己 庚 辛 壬 癸 称为十天干 xff0c 子
  • txt格式vscode转码

    txt打开异常 xff0c 或乱码 右下角有格式类型 xff1a utf 8 xff0c 点击它会有一个 select action 弹框 可选择特定格式重新打开 xff0c 或保存 选择好对应的格式 乱码解决 或者点击 save with
  • 送给 Java 程序员的 Spring 学习指南

    https www infoq cn article Ad 8ghcGGCNU572U6oEX 学习 Spring 的基础要求 Spring 官网首页是这么介绍自己的 Spring the source for modern Java xf
  • Centos下如果是二进制文件,编辑是文本,后缀是sh也无法执行

    这次部署redis遇到个问题 xff0c 执行sh文件来启动redis xff0c 结果报配置文件无法打开 用vi打开sh文件反复检查过路径是对的 然后手敲路径执行 xff0c 运行正常 xff1b 直接执行sh文件不行 xff1a 反复修
  • Python Pandas 查看数据信息 DataFrame.info()

    在进行数据分析之前 xff0c 需要先查看数据的信息 xff0c 这样才方便后续的数据处理 比如 xff0c 在excel表中20220520是一个常规类型的数据 xff0c 那它导入到DataFrame中是int类型还是str类型呢 xf
  • 03-1.MariaDB安装配置详细步骤

    Author xff1a Sickey Date xff1a 2021 11 25 安装前准备 配置静态IP防火墙等等 1 安装mariadb数据库 先查看RDO中MariaDB的版本及配置 etc my cnf d server cnf
  • 24行代码简单实现qq空间自动点赞

    什么是Auto js xff1f Auto js是基于JavaScript语言运行在Android平台上的工具 它依赖于无障碍服务 它可以做什么 xff1f 解放双手 xff0c 让手机自动打游戏 自动签到 自动领红包等等等等 它有什么优点