用php和油猴实现课工场自动刷题

大体思路#

  • 前台获取所有题目并做好标记
  • 后台记录答案
  • 从后台获取答案并自动填写

实现原理#

用php和油猴实现课工场自动刷题
首先可以发现所有题目都是图片,但是 url 都有一个共同点,那就是 imageType=2
那么直接上代码

用php和油猴实现课工场自动刷题

得到所有图片地址后发送到后台,后台将收到所有图片的 url 地址

用php和油猴实现课工场自动刷题
这是一部分源码,关于这个 getQuestionIdFromImageUrl 待会再说
然后新建一个数据库,我这里是建了一个名叫 kgc_cheater 的数据库
以及表 question_answers
如下是表结构

用php和油猴实现课工场自动刷题

以及使用 Medoo/Medoo 库用作数据库链接

然后写一个从数据库拿答案的逻辑

用php和油猴实现课工场自动刷题

用php和油猴实现课工场自动刷题

你们可能会好奇 maps 是什么,因为前台图片地址的运算是和后台不一样的
给你们看一下 getQuestionIdFromImageUrl 你们也许能明白

用php和油猴实现课工场自动刷题

因为发现每个用户的图片地址都不相同,即使题目是一样的,但是每个账号图片地址都不会变,那么说明图片地址的计算是有规律的,研究半天发现,其实就是把 relativePath 参数用 / 分割后的把第二个部分减去指定偏移值,待会说明如何获取
我们直接向后台请求答案,返回 maps 和 answers 参数

用php和油猴实现课工场自动刷题

maps 的定义其实就是 $url => $question_id
answers 的定义是 ['question_id' => $question_id, 'answer' => $answer]

用php和油猴实现课工场自动刷题

如图,使用 3 个 parent 然后进入 ul.sec2 获取答案列表,然后找到包含答案的元素并模拟点击它
这样就完成了一次自动答题

回到上面,关于偏移值的获取,在你登录进去的时候看你的 url

用php和油猴实现课工场自动刷题

559634 就是你的偏移值,进入答题页面
这是图片的源地址 https://tiku.kgc.cn/testing/cdn/getImage?relativePath=0069000/1543312740097/e19f21615ab8e9866619bf47c3b5b59c.jpg&imageType=2

获取原图片 id 为 0069000/1543312740097
使用偏移值减去第二个参数得到 1543312180463

最终得到题目 id: 0069000/1543312180463
其他账号经实验也能得到相同 id, 然后这是存到数据库里的实际 id

在进入主页面的时候我有一个脚本记录这个
使用 cookies 保存
附上代码

用php和油猴实现课工场自动刷题

用php和油猴实现课工场自动刷题

在解析界面有正确答案

用php和油猴实现课工场自动刷题

每个部分都用 .sec.post 包起来了
然后往下取 .sec2 再取 img 并获取 url
可以得到图片 id, 同样取 relativePath 但是不需要应用偏移值了,直接存进数据库即可
同样的,答案在 .sec3 往下 .pad10 再往下 em:eq(0)
直接这样取

用php和油猴实现课工场自动刷题

然后发给后端丢到数据库里记录起来
并在前台发送已记录消息

用php和油猴实现课工场自动刷题

后端记录代码

用php和油猴实现课工场自动刷题

然后就是前后端配合,自动记录题目,自动答题
最后就是自动刷题
进入一张试卷后,自动填写之后加了一段自动更新试卷的代码,如图

用php和油猴实现课工场自动刷题

关于 fuxiAuto 后面的那串数字
也许我们都不太一样,附上科目 id 获取教程

首先进入

用php和油猴实现课工场自动刷题

利用开发者工具找到开始测试按钮

用php和油猴实现课工场自动刷题

javascript:unitExam(1098001001)
这个 1098001001 就是科目 id
我这里最后一位数字是 1 到 7 所以写了个自动随机数随机生成 1 到 7 的整数

修改也很简单

用php和油猴实现课工场自动刷题

将图片里的 1 和 7 改为你的最小值和最大值即可

本帖已被设为精华帖!
本帖由系统于 3年前 自动加精