|
浏览器里按下F12,通过找到“网络”或“控制台”标签页,源代页考很多考试系统的码查答案就藏在加载的JavaScript文件里。这不是看网什么高深黑客技术,纯粹是试答开发者偷懒留下的后门。 我去年帮一个学弟处理过类似情况。通过他们学校的源代页考在线考试平台,前端代码里直接写了一个数组,码查存放着所有题目的看网正确答案。找到那个文件,试答格式化一下,通过答案就像摊开的源代页考扑克牌一样摆在你面前。整个过程不到三分钟,码查连请求都没伪造,看网纯粹是试答“看”出来的。 具体操作路径通常是这样的:打开考试页面,按F12进入开发者工具,切到“网络”选项卡,刷新页面。你会看到一堆请求,重点找那些名字里带question、answer、exam字样的JS文件。点开,如果代码是压缩成一行的那种,就点左下角的“{ }”按钮格式化。然后按Ctrl+F搜索“answer”或者“正确答案”这类关键词。 有些系统做得稍微讲究点,答案不在静态文件里,而是通过Ajax动态请求获取。这时候你切到“控制台”标签,在页面里随便答一道题,观察网络请求中返回的JSON数据。有些接口会把正确答案和错误提示一起返回,只是前端用JS把正确答案过滤掉了没显示。你直接在控制台里输入JSON.stringify(response),被隐藏的数据就原形毕露了。 还有更蠢的——把答案放在HTML的隐藏元素里。查看页面源码,搜display:none或者hidden属性。有些前端工程师为了省事,直接把正确答案渲染进DOM,然后用CSS藏起来。你只需要在控制台执行document.querySelectorAll('.hidden-answer'),把每个元素的textContent打印出来就行。 但说句实话,靠看代码拿答案,远不如直接看网络请求来得快。现在多数考试系统都是前后端分离,前端JS只是壳子,真正的判断逻辑在后端。你看到的那点前端答案,往往是开发测试时留下的残留物,或者是为了实现“答完立刻显示对错”功能而不得已暴露的数据。 我见过最离谱的一个案例,某职业资格考试的模拟系统,答案直接写在main.js的注释里。开发者写了句“// 正确答案:A C D B,别搞错了”,连删都没删就上线了。你说这是技术漏洞吗?不算。纯粹是懒。 当然,这么干有风险。有些系统会做反作弊检测,你打开控制台的行为本身就可能被记录。我建议你先试一道简单的题,看看前端返回的数据结构,如果发现接口里有isCorrect字段,那基本就能断定前端掌握着判断逻辑。这时候你再翻源码,目的性就强多了。 最后提醒一句,这招只对垃圾系统有效。稍微正规点的平台,答案都在服务端加密存储,你翻遍所有前端文件也只会看到一堆乱码。碰上那种系统,不如老老实实复习。毕竟,看代码这事儿,本质上是跟懒惰的程序员博弈,而不是跟加密算法较劲。 |