▒ 目录 ▒
最近想做手机自动化相关的内容,比如:微信自动点赞、公众号自动发送。找了些资料,想起之前听说的autojs,就做了一些调研,真的是方便省事儿,下面记录相关资料,方便以后查阅。
| 版本号 | 描述 | |
|---|---|---|
| 文章日期 | 2022-12-17 | |
Auto.js Pro是
Android上基于JavaScript的面向自动化、工作流、小工具、小应用的代码开发平台。自2017年1月诞生以来,已从1.0版本发展到最新的9.0版本。
停止更新
开源版, 同时也是免费版的终结版, 功能大部分都有。
付费版的第一个版本, 也是寿命最短的版本, 未开源。
不过网上有破解版,教程多。
未屏蔽主流app(淘宝, 腾讯等等)。
综上:所以目前很多教程都是用该版本进行讲解。
付费版的第二个版本, 长期维护的版本,未开源32位。
屏蔽主流app(淘宝, 腾讯等等)。
使用的是Rhino引擎,速度比9版本的nodejs版本慢很多。
综上:个人感觉是个比较鸡肋的版本。
作为目前最新的autojs,其功能十分丰富,下面列举一些核心功能。
Node.js引擎
全分辨率找图
内置OCR
插件商店与免安装
加密增强
完美VSCode调试体验
Npm生态支持
API增强
多Tab编辑器工作区
UI可视化设计
虽然autojs自4版本后不再更新,但是很多人根据4版本继续开发,保持着其稳定性和新android的支持等。
Auto.js
官方文档:https://hyb1996.github.io/AutoJs-Docs/
AutoX
Autox.js文档: http://doc.autoxjs.com/
github地址:https://github.com/hamibot/hamibot
Hamibot官网:Hamibot
汇总一些脚本:
autojs版本很多,汇总如下:
| 软件/版本 | 说明 | 推荐 |
|---|---|---|
| autojs4 | 开源版, 同时也是免费版的终结版, 功能大部分都有, 2020年3月1日 停止更新 | 不推荐:不维护了 |
| autojs7 | 付费版的第一个版本, 也是寿命最短的版本, 未开源 | 推荐:网上有破解版,教程多 |
| autojs8 | 付费版的第二个版本, 长期维护的版本, 屏蔽主流app(淘宝, 腾讯等等), 未开源 32位,Rhino引擎,速度慢 | 不推荐:32位、速度慢 |
| autojs9 | 付费版双引擎Rhino + nodejs, 长期维护的版本, 屏蔽主流app(淘宝, 腾讯等等), 未开源 64位 | 推荐:长期维护版本,收费。 |
| Auto.js | Auto.js 官方文档:https://hyb1996.github.io/AutoJs-Docs/ | 推荐:持续更新,带apk |
| AutoX | AutoX Autox.js文档: http://doc.autoxjs.com/ | 推荐:持续更新,带apk,5个贡献者 |
| AutoJs6 | AutoJs6 | 不推荐:半年没更新了 |
| Hamibot | Hamibot 是一款 Android 平台 JavaScript 自动化工具,无需 root,基于 Auto.js。 | 源码不推荐;但是它有自己的网站,里面可以下载好多脚本。 |
**ps:**文章中内容仅用于技术交流,请勿用于违规违法行为。
很好奇,就使用rubyonrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
我有一个在Linux服务器上运行的ruby脚本。它不使用rails或任何东西。它基本上是一个命令行ruby脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg
我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("
我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty
//1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json
有没有一种简单的方法可以判断ruby脚本是否已经在运行,然后适本地处理它?例如:我有一个名为really_long_script.rb的脚本。我让它每5分钟运行一次。当它运行时,我想看看之前运行的是否还在运行,然后停止第二个脚本的执行。有什么想法吗? 最佳答案 ps是一种非常糟糕的方法,并且可能会出现竞争条件。传统的Unix/Linux方法是将PID写入文件(通常在/var/run中)并在启动时检查该文件是否存在。例如pid文件位于/var/run/myscript.pid然后你会在运行程序之前检查它是否存在。有一些技巧可以避免
我最喜欢的Google文档功能之一是它会在我工作时不断自动保存我的文档版本。这意味着即使我在进行关键更改之前忘记在某个点进行保存,也很有可能会自动创建一个保存点。至少,我可以将文档恢复到错误更改之前的状态,并从该点继续工作。对于在MacOS(或UNIX)上运行的Ruby编码器,是否有具有等效功能的工具?例如,一个工具会每隔几分钟自动将Gitcheckin我的本地存储库以获取我正在处理的文件。也许我有点偏执,但这点小保险可以让我在日常工作中安心。 最佳答案 虚拟机有些人可能讨厌我对此的回应,但我在编码时经常使用VIM,它具有自动保存功
我正在开发一个Ruby脚本,需要在没有Ruby解释器的情况下部署到系统上。它将需要在使用ELF格式的FreeBSD系统上运行。我知道有一个ruby2exe项目可以编译在Windows上运行的ruby脚本,但是在其他操作系统上这样做容易吗?甚至可能吗? 最佳答案 您是否检查过Rubinius或JRuby是否允许您预编译您的代码? 关于ruby-ruby脚本可以预编译成二进制文件吗?,我们在StackOverflow上找到一个类似的问题: https://
我想知道是否可以通过自动创建数组来插入数组,如果数组不存在的话,就像在PHP中一样:$toto[]='titi';如果尚未定义$toto,它将创建数组并将“titi”压入。如果已经存在,它只会推送。在Ruby中我必须这样做:toto||=[]toto.push('titi')可以一行完成吗?因为如果我有一个循环,它会测试“||=”,除了第一次:Person.all.eachdo|person|toto||=[]#with1billionofperson,thislineisuseless999999999times...toto.push(person.name)你有更好的解决方案吗?