Python利用Charles 實(shí)現(xiàn)全部自動(dòng)答題思路流程分析
利用Charles 達(dá)成“我是達(dá)人”答題類爆破思路
最近公司需要使用“我是答題”小程序,對武漢疫情進(jìn)行知識問題;榜單靠前的也有一定的學(xué)分獎(jiǎng)勵(lì);雖然平時(shí)總不屑于公司組織的此類活動(dòng),但是看了這次活動(dòng)形式,還是決定直接“爆破
0x01 思路18年大火的直播答題中,對某答題app也進(jìn)行了類似爆破,并薅了不少羊毛,到了后期已經(jīng)做到了全自動(dòng)化的答題,并且是100%正確正常情況下小程序和服務(wù)端通信流程

使用charles對請求進(jìn)行串改流程

因?yàn)槲业闹髁﹄娔X就是MacOS,所以就直接使用了Charles,當(dāng)然Windows上也有很多類似軟件,這里不再贅述。
0x02 開始我先正常完成一輪答題,可以在Charles上看到小程序和服務(wù)端的每次通信報(bào)文,通過對請求接口分析,大致梳理出以下兩個(gè)接口
1. 開始測試&挑戰(zhàn)接口:
https://v4.21tb.com/race-mobile/mina/startRace.do
2. 上傳答案&獲取下次題目接口:
https://v4.21tb.com/race-mobile/mina/userAnswer.do
對請求報(bào)文和返回報(bào)文分析后,確定報(bào)文的data.examItem.itemOptions[].isCorrect節(jié)點(diǎn)為正確答案。
{
"success": false,
"data": {
"examItem": {
"itemOptions": [{
"content": "疑似或確診病例有過近距離接觸",
"isCorrect": true
}, {
"content": "感冒的病人",
"isCorrect": false
}],
"itemName": "什么是新型冠狀病毒密切接觸者?"
}
},
"message": null,
"status": "SUCCESS"
}
只要搭建一個(gè)中間代{過}{濾}理服務(wù),在返回給小程序時(shí)把content字段進(jìn)行修改,即可讓我們快速在小程序上看到正確答案。 本次我使用的nodejs進(jìn)行開發(fā),我對nodejs語法還停留在新手上,將就看
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]
});
再來看Charles上的配置,主要使用的Map Remote功能

通過這一系列的配置后,就可以實(shí)現(xiàn)對小程序請求的中間者攻擊了最終效果,正確答案上會(huì)有個(gè)“✅”:

到此這篇關(guān)于Python利用Charles 實(shí)現(xiàn)全部自動(dòng)答題思路流程分析的文章就介紹到這了,更多相關(guān)Python實(shí)現(xiàn)全部自動(dòng)答題內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- python使用dabl幾行代碼實(shí)現(xiàn)數(shù)據(jù)處理分析及ML自動(dòng)化
- Biblibili視頻投稿接口分析并以Python實(shí)現(xiàn)自動(dòng)投稿功能
- Python實(shí)現(xiàn)自動(dòng)裝機(jī)功能案例分析
- Python + Requests + Unittest接口自動(dòng)化測試實(shí)例分析
- python自動(dòng)化測試之異常及日志操作實(shí)例分析
- Python自動(dòng)化運(yùn)維_文件內(nèi)容差異對比分析
- python自動(dòng)化工具日志查詢分析腳本代碼實(shí)現(xiàn)
- ?分享4款Python 自動(dòng)數(shù)據(jù)分析神器
相關(guān)文章
Python操作json數(shù)據(jù)的一個(gè)簡單例子
這篇文章主要介紹了Python操作json數(shù)據(jù)的一個(gè)簡單例子,需要的朋友可以參考下2014-04-04
Matplotlib自定義圖例(多張圖共享一個(gè)圖例)
最近再用Matplotlib繪圖,需要做兩個(gè)子圖都不需要設(shè)置圖例,圖例單獨(dú)用一個(gè)figure來顯示,本文就詳細(xì)的來介紹一下,感興趣的可以了解一下2023-08-08
如何配置關(guān)聯(lián)Python 解釋器 Anaconda的教程(圖解)
這篇文章主要介紹了如何配置關(guān)聯(lián)Python 解釋器 Anaconda的教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)火鍋工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
Python實(shí)現(xiàn)查找并刪除重復(fù)文件的方法小結(jié)
這篇文章主要為大家詳細(xì)介紹了如何使用Python編寫一個(gè)簡單的腳本來查找并刪除指定目錄及其子目錄中的重復(fù)文件,需要的可以參考一下2025-03-03

