近年来,答题类活动风头正劲,目的各异。有的旨在推广知识,有的则附带了令人心动的奖励。比如,某公司推出的“我是答题”小程序,就针对武汉疫情知识进行提问,并提供学分奖励,吸引了众多人争相参与,渴望登上排行榜。然而,有些人,尤其是面对公司组织的活动,起初并不重视,后来却想通过“爆破”方式来获取奖励,这种心态的转变,确实值得我们深入探讨。
爆破的灵感来源
2018年,直播答题风头正劲,一款答题APP竟遭遇了类似爆破的情况。许多人借此机会大捞一笔。更有甚者,实现了全自动化答题,准确率高达百分之百。这显然有前车之鉴。据悉,众多参与者都尝到了甜头。这一现象引起了技术爱好者的关注,他们开始琢磨这种技术操作是否能在其他答题平台上得到应用。如今,“我是达人”小程序答题功能,正是可以尝试运用这一技术的场合。
观察过往的成功案例,无疑为那些渴望在公司的答题小程序中取得优异成绩的人们提供了借鉴。面对利益或奖励,人们往往都会琢磨如何更高效地实现目标。
小程序与服务端通信
我着手研究这款小程序时,主要使用的是我的MacOS电脑。通常,小程序与服务端之间遵循一定的通信流程。一般来说,小程序会与服务器频繁地发送请求并接收回应。在测试答题的过程中,我能够观察到小程序与服务器之间每一次的通信信息。这一环节至关重要,因为它相当于在寻找解开谜题的线索。
经过细致的分析,我发现至少存在两个至关重要的接口。首先,是启动测试和接受挑战的接口;其次,是提交答案并获取下一题目的接口。这两个接口在答题的全过程中扮演着至关重要的桥梁角色。一旦我们能够掌握这些接口所传输的数据内容,我们便等同于掌握了答题的核心要害。
答案的寻找与确定
分析请求报文与返回报文时,必须全神贯注。我们要在纷繁的数据中筛选出与正确答案相关的信息。研究结果显示,报文的data…[]节点正是正确答案的所在位置。这一发现为接下来的操作指明了方向。一旦确定了这一位置,我们便能进行有针对性的操作。
对不熟悉的人来说,这简直比大海里捞针还难。然而,对于懂得一些技术知识的人来说,这却是一把开启宝藏的钥匙。这一过程既需要耐心,又需要专业知识。若没有一定的技术功底,想要进行下一步操作可就相当困难了。
中间代理服务搭建
找到正确答案所在位置后,便需构建一个中间代理服务。这一步骤旨在对返回给小程序的数据进行字段修改。通过这一操作,我们能在小程序上迅速查看到正确答案。在此次操作中,我选用了一种特定的工具进行开发。尽管我的语法能力尚不精湛,但依然能够勉力完成这项任务。
在此过程中,工具的配置同样关键。比如,Map功能在其中扮演了核心角色。这一功能让信息的转换和修改变得更加井然有序。这一步骤是爆破操作的核心,若代理服务搭建失败,那么之前的研究和发现都将失去价值。
{
"success": false,
"data": {
"examItem": {
"itemOptions": [{
"content": "疑似或确诊病例有过近距离接触",
"isCorrect": true
}, {
"content": "感冒的病人",
"isCorrect": false
}],
"itemName": "什么是新型冠状病毒密切接触者?"
}
},
"message": null,
"status": "SUCCESS"
}
实现中间者攻击
经过前面的精心准备,我们终于可以着手进行对小程序请求的中间者攻击了。这是整个流程的最后一环,也是我们的最终目标。一旦攻击成功,在答题界面上,正确答案旁边会出现一个“✅”标记。这个标记的出现,意味着我们已经成功破解了这个答题小程序,轻松获得了正确答案。
攻克难题后的喜悦犹如占领了一座城堡,心中满是成就感。然而,必须留意的是,这种做法或许会带来风险,比如可能触犯平台规定或是违反了相关法律条文。
关于爆破的思考
router.post('/21tb/:do', function (req, res, next) {
console.log(req.params.do);
fly.post('https://v4.21tb.com/race-mobile/mina/' + req.params.do + '.do', req.body, { headers: { "content-type": "application/x-www-form-urlencoded" } })
.then(d => {
console.log(d.data.data)
if (d.data.data) {
if (d.data.data instanceof Array) {
for (var inx in d.data.data) {
var data = d.data.data[inx];
if (data.examItem && data.examItem.itemOptions) {
var itemOptions = d.data.data.examItem.itemOptions;
if (itemOptions) {
for (var inx in itemOptions) {
var item = itemOptions[inx]
if (item.isCorrect) {
item.content = '✅' + item.content;
}
}
}
}
}
} else {
if (d.data.data.examItem && d.data.data.examItem.itemOptions) {
var itemOptions = d.data.data.examItem.itemOptions;
if (itemOptions) {
for (var inx in itemOptions) {
var item = itemOptions[inx]
if (item.isCorrect) {
item.content = '✅' + item.content;
}
}
}
}
}
}
res.send(d.data);
})
.catch(function (error) {
console.log(error);
});[/size][/font][/color][/indent][indent][color=rgb(36, 41, 46)][font=-apple-system, BlinkMacSystemFont, "][size=16px]
});
爆破答题虽有助于提高成绩,但我们必须反思,这样的行为是否合乎道德与规则。以不正当手段获得的奖励,其价值是否真实?若人人采用作弊手段,活动的意义将荡然无存。你真的认为为奖励而进行的答题爆破是可以容忍的吗?这种思考同样提醒我们,在追求奖励与成果时,必须走正当合法的道路。