写篇年记,记录一下自己这一年的所学。
能有幸在这个行业有两个关键因素
-
QQ 永久冻结
-
易语言
QQ 永久冻结
有些认识我的人可能会知道我的 QQ804493238 给永久冻结了,可以说这个号码是不可能再搞回来的。一个幸幸苦苦养了十年的 QQ ,说没就没的那种,与之相对应的就是游戏账号没了,没了游戏能干嘛,当然不能干嘛,生活还是得过的,但又要有个东西来打发时间,没错就是编程。于是高中毕业后的暑假,就开始了学习编程。不过这里要先介绍一下易语言,作为我的第一门编程语言。
初识易语言
初识易语言的时候还是在初中,那时候有个同学给我讲诉了他用易语言刷 CF 永久枪,用易语言写游戏外挂的故事,也是那时候我也才刚接触网络游戏,一把永久枪 888 还免费刷,别说有多牛逼了好吧。可以说从那时候开始,下了个目标,以后有时间一定要学易语言!(不过那时候没条件学或者说是给游戏耽搁了)果不其然,在高中毕业后,就开始了易语言的学习(最主要的原因就是号没了,完全没有心思再玩游戏)。
有关易语言的详细介绍我划分在另一篇文章 易语言
HTTP 请求
这里我需要简单说一下这门技术,就是因为这门技术才能让我能写上软件,并且是有实质性用处的。有关这个介绍可以点击文章 浅谈 HTTP
在开学军训一个月期间,也没有放弃学习易语言,不过那一个月应该不算学易语言这个语言,而是在学一个网络协议 HTTP,在这行的术语应该叫 POST 与 JS 逆向(基于易语言),这里我需要放一个我当时学习的链接 零基础易语言 POST 入门到精通,导师教的非常好,是真心推荐,我从他的课程学到了非常多的知识,就凭我听了他的这一期课,就能自行写出超星刷课软件,我觉得这就足够我去报他的班。
qq 机器人
非常可惜之前写了一段时间的 qq 机器人代码无法使用了,相关文章 纪念 QQ 机器人业黑暗的一天
我用的是酷 Q 框架,用易语言写的代码,花了也有半个月的时间去写
那时候封装了好几个功能,最终就因为腾讯的封杀,导致自己辛辛苦苦写了半个月的代码灰飞烟灭。这时候的心情与当初 QQ 被永久冻 结一样,不过现在也看淡了,就算回来说实话也高兴不到哪里去,也就在以前群在多吹吹牛逼罢了。(泽宇是我之前玩网的一个艺名)
这个 qq 机器人算是我手机端和电脑端一个变通的交互方式,以下是一些相关的菜单图,有些功能不方便展示,仅作为个人使用。
- 对接网络验证服务端,购买卡密,实现购买卡密
- 实现一些注册,例如一些软件注册给新用户多少时间使用,就不必在通过电脑,而是直接通过机器人发送命令来注册即可。
- 群监控,监控群里的一些不良信息进行撤回,监控刷屏进行禁言操作。
只要你想,然后给上对应的代码就行了,那时候也是沉迷于 qq 机器人花了很多时间写这些接口。这里的话我说说那时候我用机器人来写一个学校的用手机进行超星线下考试。
事情是这样的,这个考试是用手机考试的,但只能带一部手机,同时老师提供了题库,允许带资料,差不多就是开卷考。而且用于考试的软件(超星学习通)是不允许切换的后台来进行搜题的(或者说切换到后台会扣分),有些手机是无法分屏的(但是有悬浮窗)。这时候该怎么办,难不成真的去把题库打印一遍?还真有,十几张来着,先不说好不好,找一题都要找半天,有没有更有效的办法,有,我那时候就是通过机器人。
首先,将老师发的题库,存入文件(那时候的我还不会数据库,就只好读文件),然后通过则匹配,将对应的 题目,将答案全部都记录到数组里面去。接着在通过给机器人发送对应的命令如 查题+关键词即可搜到相关的题目。这里就放一个我当初录制的一个视频,(其他人操作也就是通过悬浮窗来)
即便眼睛再也好,也比不过可靠的搜索,搜索可靠也不及关键词筛选,当初考试就是通过这样方式来通过这场用手机的考试,但是也有缺点,只能说当初写软意识不好,没考虑周全,像这个搜题我还要再打一遍【查题】这个关键词,很傻,而不是发送【搜题模式】,然后直接发送题目获取就行,再发送【退出搜题】(那时候花了一天时间去写)。并且对于这样的搜题还要切换特别麻烦,好一点的办法,有,自写安卓悬浮窗,不过现在也没这样的考试了,也是我后面学了点安卓后随手写的,悬浮窗大致如下。
qq 机器人算是我特别想写的一个东西,但很可惜腾讯封杀外面大部分 qq 机器人框架,我使用的同样框架无疑避免,同时腾讯自己的机器人又不给开发者提供合适的开发接口,这就是腾讯吗,这本来就是腾讯的作风。
至于后续如果有时间,或者要发展 qq 群的话,肯定会重新再写一份 qq 机器人,到时候想要实现功能可就多了。
疫情期间,也是进步最快的时候
上一阶段学习期间,从 7 月到下半年 1 个月,这一阶段主要就是易语言与脚本开发,相关也就是上述了,而下一阶段,也就是从 1 月中旬到开学(5 月 23 号),也就是差不多这期间,开始了逆向初步学习和 Web 开发方面,而这段时间,可以说除了编程,就只有编程了。
先说下生物钟,晚上 6 点左右起来,然后早上 9 点左右睡觉,没错,这 4 个月基本上是这么熬过来的。(其中期间调整了两次作息习惯),因为疫情的因素,开不了学,又不方便出去,加上我本来也不喜欢出去,所以这阶段对我来说无疑是最好不过的,而这一阶段,也是我学习最多的时候,见识最多的时候,让我再一次感觉到编程的魅力,但同时让我感受到真正的编程和难。下面则会按时间顺序简单介绍下我学了什么。
资源共享吧
首先要提一个这个学习论坛,因为我在这个论坛上找到的很多教程,可以说没有这个论坛,我视频教程都不好找,先放个论坛链接 资源共享吧,首先这个论坛从名字上应该可以知道是资源共享的,是关于编程相关技术方面的资源,可不是那啥,我先放一张图片,看看到底都有啥资源。
别说,基本上有关编程的你在这都能看到,当然肯定不是免费了,是需要交 VIP 的,但只要 199 元,终身高级 VIP 会员,别提有多值了,你知道外面一套培训有多贵吗,这我就不提了,自己搜一搜就知道了,我在写超星刷课不是提过一个讲师,我报了它的班,4000 安卓 VIP+3000 网页逆向 VIP 来着,而这里你只需要 199 元,并且在该论坛你也能看到他的一些相关课程。当然,和培训相比还是有一定的区别,但在这里的教程真不差。
关于付费学习,可能有些人不解,为啥要收费,没为啥,就是你听付费的课程,能比别人学的快,能少走点坑路,很多免费课程要么就是为了推荐他的付费课程,要么就是为了推荐他写的书,总之,免费之中必有付费,单纯的免费课程能学,但想要走个捷径,付费应该是最快捷的方法。
是真心推荐这个论坛,一点广告费都没收,因为在这个论坛上我下载了特别多有关编程相关的知识,奈何时间不允许,不然我真的都学了。正是因为我在这个论坛上学习到特别多的知识,这就是我推荐的理由之一。
下面的大多数学习都是基于这个论坛上的视频教程。
安卓逆向
这上半年,我也只会网页端的数据分析与 JS 逆向,很多时候并没有网页版的,只有安卓应用,这时候想要偷其中的 api 接口,找到对应的加密点,该咋办,学呗。就必须要会安卓逆向,并且这个不比网页端简单。
在我开始提笔写的时候,已经有半年没怎么碰过安卓方面的了,我都快忘记了我安卓逆向的好多知识,而且当初还没有写笔记的习惯,就连我一开始怎么入门的都没什么印象了,总之就是看了教程,然后一步步照抄,视频教程怎做就怎么仿,就完事了。
同时也正是因为安卓,花了 10 天左右用 2.5 倍速度把毕向东的 java25 天速成教程看完了,而 java 才算是我真正第一门主流的编程语言,之前的 javascript 我是连 ES6 语 法都不会的,甚至很多基本的语法我都不知道。但学完了 Java 的基础语法,但对于安卓逆向或者开发来说还是差太多了,虽说对于当时的我看的明白,但实际上整个安卓的项目结构我依旧不明白,不会点开发去搞逆向是真的折腾。
合理来说我安卓逆向压根就没学完,或者说我只学到了 java 层的源码分析(java 是真的好反编译了),我还没什么能拿的出手的东西,没有破解过安卓软件,只是分析了跟网页端差不多的 HTTP 请求,差不多的加密算法,在这方面我还真的不知道该说写什么,即使说了,很多没了解过安卓逆向人也不懂,后续的话会再学安卓这方面,从开发到逆向,到时候会这方面的知识在进行一个分类总结。(主要是我真的忘了太多了)
Auto.js
我先简单介绍一下这个是什么,这个也就是专门针对安卓端的无 root 脚本操作,看到后缀名你应该能想到 js,正是用 JavaScript 作为脚本语言。可以说用这个开发工具也能开发些安卓软件,但主要还是针对脚本操作,比如做一个 qq 自动点赞的, 贴吧签到脚本,抖音自动刷视频,双十一用过淘宝叠过猫猫吧,用 Auto.js 也能写个自动浏览商品,刷金币的,此外有太多例子了。
在之前的脚本操作,我也只会电脑端的,而对手机端无奈只好投屏到电脑,通过电脑的鼠标操作来实现脚本,而现在有了这个软件,则就不用在连接电脑,直接将写好的脚本打包成安装包安装,点击运行即可。但对比原生安卓开发,这个开发工具还是略显下风,不过对于安卓的自动化操作已经足够了,我也只说说我用这个写了个什么软件。
钉钉签到脚本
像抖音自动刷视频和贴吧签到这些我就不多举例,主要还是这个软件,听名字就知道是钉钉签到的,有些在疫情期间,学校老师又要求同学使用钉钉,并且签到,但是有的同学就是会忘记签到或者没起来(说的是我),怎么办,记旷课?这不写个脚挂在那边时间到了自动签到呗。
这是我当时写的页面,只需要填写对应的课程名和开始的时间即可,时间一到,手机自动亮屏,开始签到。主要的代码就下面这一个函数
function ddSign(courseName) {
launchApp('钉钉')
waitForActivity('android.widget.FrameLayout')
let course = text(courseName).findOne()
if (course.parent() != null) {
course.parent().parent().click()
}
let sign = text('群签到').findOne()
if (sign.parent() != null) {
sign.parent().parent().click()
}
sleep(3000)
if (desc('群签到')) {
sleep(3000)
let btn_sign = className('android.view.View').desc('签到').findOne()
let result = btn_sign.click()
Log('签到结果' + result)
} else {
toastLog('不在群签到页面')
}
}
启动钉钉,等待钉钉启动完毕,找到对应的课程名,点击课程名,找到群签到按钮,点击群签到按钮,进入群签到找签到按钮,点击签到,签到成功。就这么完事了,脚本就是这样的。
不过最终有个缺点,对于一些没有 root 的手机,需 要每次运行就要不断的打开无障碍服务,特别繁琐,但没办法,这是安卓的机制问题。
这里要提及的一句是为啥不用 HTTP 发送请求要来签到,而是要这种脚本方式,对比一下你就会发现,用脚本写基本无压力,就是简单判断一些字或者图在哪,然后点击对应的坐标,而通过 HTTP 请求的话,一是要过钉钉登录,二是要处理各种加密算法。不过钉钉登录算法难不难我就不知道了,我也懒得分析,加上正好学了 Auto.js,索性就写一个这样的签到脚本得了。但说实话签到就不应该这样用这种定时脚本,而是应该选择协议更好。
深度学习之图像识别
可以去了解一些深度学习,颠覆我对机器的认知,至少让我又觉得编程的强大,重拾学下去的信心。首先,先看张图片
看图也能看明白,这个就是识别一个缺口的图片软件,可能对没接触过这行业的人觉得这并没有什么软用,这个滑块的意义主要还是防止人为操作和机器操作。对于人而已,自然而然知道缺口的位置,但是对于机器而言要怎么知道这个缺口的位置,就针对上面这类图片,可以通过图片颜色深度来定位到缺口的地方,同时也可以使用深度学习,简单来说深度学习就是 AI,不过这里的 AI 是用来让它识别这个缺口,至于怎么让它识别和对应的算法我就没过多了解了,我接触这个主要还是用现成的模型来训练识别的。说一下我是怎么让机器训练的。