解析php如何實現「自動刷題」(附思路)

藏色散人
發布: 2023-04-10 20:36:02
轉載
5634 人瀏覽過

使用php實現課工場自動刷題

#開源位址

https://github.com/WOSHIZHAZHA120/ kgc_cheater

大體思路

  • 前台獲取所有題目並做好標記
  • 後台記錄答案
  • 從後台獲取答案並自動填入

實作原理

解析php如何實現「自動刷題」(附思路)
#首先可以發現所有題目都是圖片, 但是url都有一個共同點,那就是imageType=2
那麼直接上程式碼【推薦學習:《PHP影片教學》】

解析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/e19f21615ab8e986661947c3b5b59f21615ab8e986661947c3b5b59d.原圖片id為0069000/1543312740097

使用偏移值減去第二個參數得到

1543312180463
最終得到題目id: 0069000/ 1543312180463

其他帳號經實驗也能得到相同id, 然後這是存到資料庫裡的實際id

在進入主頁面的時候我有一個腳本記錄這個使用cookies儲存
附上程式碼

解析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改為你的最小值和最大值即可。

以上是解析php如何實現「自動刷題」(附思路)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:learnku.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板