溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

php怎么實(shí)現(xiàn)自動(dòng)刷題

發(fā)布時(shí)間:2021-12-20 11:04:33 來(lái)源:億速云 閱讀:203 作者:小新 欄目:編程語(yǔ)言

這篇文章給大家分享的是有關(guān)php怎么實(shí)現(xiàn)自動(dòng)刷題的內(nèi)容。小編覺(jué)得挺實(shí)用的,因此分享給大家做個(gè)參考,一起跟隨小編過(guò)來(lái)看看吧。

                           

使用php實(shí)現(xiàn)課工場(chǎng)自動(dòng)刷題

大體思路

  • 前臺(tái)獲取所有題目并做好標(biāo)記

  • 后臺(tái)記錄答案

  • 從后臺(tái)獲取答案并自動(dòng)填寫

實(shí)現(xiàn)原理

php怎么實(shí)現(xiàn)自動(dòng)刷題
首先可以發(fā)現(xiàn)所有題目都是圖片, 但是url都有一個(gè)共同點(diǎn), 那就是imageType=2
那么直接上代碼【推薦學(xué)習(xí):《PHP視頻教程》】

php怎么實(shí)現(xiàn)自動(dòng)刷題

得到所有圖片地址后發(fā)送到后臺(tái), 后臺(tái)將收到所有圖片的url地址

php怎么實(shí)現(xiàn)自動(dòng)刷題

這是一部分源碼, 關(guān)于這個(gè)getQuestionIdFromImageUrl待會(huì)再說(shuō)
然后新建一個(gè)數(shù)據(jù)庫(kù), 我這里是建了一個(gè)名叫kgc_cheater的數(shù)據(jù)庫(kù)
以及表question_answers
如下是表結(jié)構(gòu)

php怎么實(shí)現(xiàn)自動(dòng)刷題

以及使用Medoo/Medoo庫(kù)用作數(shù)據(jù)庫(kù)鏈接

然后寫一個(gè)從數(shù)據(jù)庫(kù)拿答案的邏輯

php怎么實(shí)現(xiàn)自動(dòng)刷題

php怎么實(shí)現(xiàn)自動(dòng)刷題

你們可能會(huì)好奇maps是什么, 因?yàn)榍芭_(tái)圖片地址的運(yùn)算是和后臺(tái)不一樣的
給你們看一下getQuestionIdFromImageUrl你們也許能明白

php怎么實(shí)現(xiàn)自動(dòng)刷題

因?yàn)榘l(fā)現(xiàn)每個(gè)用戶的圖片地址都不相同, 即使題目是一樣的, 但是每個(gè)賬號(hào)圖片地址都不會(huì)變, 那么說(shuō)明圖片地址的計(jì)算是有規(guī)律的, 研究半天發(fā)現(xiàn), 其實(shí)就是把relativePath參數(shù)用/分割后的把第二個(gè)部分減去指定偏移值, 待會(huì)說(shuō)明如何獲取
我們直接向后臺(tái)請(qǐng)求答案, 返回maps和answers參數(shù)

php怎么實(shí)現(xiàn)自動(dòng)刷題

maps的定義其實(shí)就是$url => $question_id
answers的定義是['question_id' => $question_id, 'answer' => $answer]

php怎么實(shí)現(xiàn)自動(dòng)刷題

如圖, 使用3個(gè)parent然后進(jìn)入ul.sec2獲取答案列表, 然后找到包含答案的元素并模擬點(diǎn)擊它
這樣就完成了一次自動(dòng)答題

回到上面, 關(guān)于偏移值的獲取, 在你登錄進(jìn)去的時(shí)候看你的url

php怎么實(shí)現(xiàn)自動(dòng)刷題

559634 就是你的偏移值, 進(jìn)入答題頁(yè)面
這是圖片的源地址 https://tiku.kgc.cn/testing/cdn/getImage?relativePath=0069000/1543312740097/e19f21615ab8e9866619bf47c3b5b59c.jpg&imageType=2

獲取原圖片id為 0069000/1543312740097
使用偏移值減去第二個(gè)參數(shù)得到1543312180463

最終得到題目id: 0069000/1543312180463
其他賬號(hào)經(jīng)實(shí)驗(yàn)也能得到相同id, 然后這是存到數(shù)據(jù)庫(kù)里的實(shí)際id

在進(jìn)入主頁(yè)面的時(shí)候我有一個(gè)腳本記錄這個(gè)
使用cookies保存
附上代碼

php怎么實(shí)現(xiàn)自動(dòng)刷題

在解析界面有正確答案

php怎么實(shí)現(xiàn)自動(dòng)刷題

每個(gè)部分都用 .sec.post 包起來(lái)了
然后往下取 .sec2 再取 img 并獲取url
可以得到圖片id, 同樣取relativePath但是不需要應(yīng)用偏移值了, 直接存進(jìn)數(shù)據(jù)庫(kù)即可
同樣的, 答案在 .sec3 往下 .pad10 再往下 em:eq(0)
直接這樣取

php怎么實(shí)現(xiàn)自動(dòng)刷題

然后發(fā)給后端丟到數(shù)據(jù)庫(kù)里記錄起來(lái)
并在前臺(tái)發(fā)送已記錄消息

php怎么實(shí)現(xiàn)自動(dòng)刷題

后端記錄代碼

php怎么實(shí)現(xiàn)自動(dòng)刷題

然后就是前后端配合, 自動(dòng)記錄題目, 自動(dòng)答題
最后就是自動(dòng)刷題
進(jìn)入一張?jiān)嚲砗? 自動(dòng)填寫之后加了一段自動(dòng)更新試卷的代碼, 如圖

php怎么實(shí)現(xiàn)自動(dòng)刷題

關(guān)于fuxiAuto后面的那串?dāng)?shù)字

首先進(jìn)入

php怎么實(shí)現(xiàn)自動(dòng)刷題

利用開(kāi)發(fā)者工具找到開(kāi)始測(cè)試按鈕

php怎么實(shí)現(xiàn)自動(dòng)刷題

javascript:unitExam(1098001001)
這個(gè)1098001001就是科目id
我這里最后一位數(shù)字是1到7所以寫了個(gè)自動(dòng)隨機(jī)數(shù)隨機(jī)生成1到7的整數(shù)

修改也很簡(jiǎn)單

php怎么實(shí)現(xiàn)自動(dòng)刷題

感謝各位的閱讀!關(guān)于“php怎么實(shí)現(xiàn)自動(dòng)刷題”這篇文章就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,讓大家可以學(xué)到更多知識(shí),如果覺(jué)得文章不錯(cuò),可以把它分享出去讓更多的人看到吧!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI