Heim > Artikel > Backend-Entwicklung > Analysieren Sie, wie PHP das „automatische Fragen-Brushing“ implementiert (mit Ideen)
https://github.com/WOSHIZHAZHA120/kgc_cheater
Zunächst können Sie feststellen, dass alle Fragen vorhanden sind Bilder, aber die URLs haben eines gemeinsam, nämlich imageType=2 code><code>imageType=2
那么直接上代码【推荐学习:《PHP视频教程》】
得到所有图片地址后发送到后台, 后台将收到所有图片的url地址
这是一部分源码, 关于这个getQuestionIdFromImageUrl
待会再说
然后新建一个数据库, 我这里是建了一个名叫kgc_cheater
的数据库
以及表question_answers
如下是表结构
以及使用Medoo/Medoo库用作数据库链接
然后写一个从数据库拿答案的逻辑
你们可能会好奇maps
是什么, 因为前台图片地址的运算是和后台不一样的
给你们看一下getQuestionIdFromImageUrl
你们也许能明白
因为发现每个用户的图片地址都不相同, 即使题目是一样的, 但是每个账号图片地址都不会变, 那么说明图片地址的计算是有规律的, 研究半天发现, 其实就是把relativePath
参数用/
分割后的把第二个部分减去指定偏移值, 待会说明如何获取
我们直接向后台请求答案, 返回maps和answers参数
maps
的定义其实就是$url => $question_id
answers
的定义是['question_id' => $question_id, 'answer' => $answer]
如图, 使用3个parent然后进入ul.sec2获取答案列表, 然后找到包含答案的元素并模拟点击它
这样就完成了一次自动答题
回到上面, 关于偏移值的获取, 在你登录进去的时候看你的url
559634
就是你的偏移值, 进入答题页面
这是图片的源地址 https://tiku.kgc.cn/testing/cdn/getImage?relativePath=0069000/1543312740097/e19f21615ab8e9866619bf47c3b5b59c.jpg&imageType=2
获取原图片id为 0069000/1543312740097
使用偏移值减去第二个参数得到1543312180463
最终得到题目id: 0069000/1543312180463
Dann gehen Sie direkt zum Code [Empfohlenes Lernen: "PHP-Video-Tutorial a>》】
Holen Sie sich alle Bildadressen und senden Sie sie an das Backend. Das Backend erhält die URL-Adressen von allen die Bilder
getQuestionIdFromImageUrl
Ich werde später darüber sprechen🎜Dann erstellen Sie eine neue Datenbank, ich habe hier eine erstellt. Die Datenbank mit dem Namen kgc_cheater
und die Tabelle Frage_Antworten
🎜 lauten wie folgt: Tabellenstruktur🎜🎜🎜🎜 🎜🎜 Vielleicht sind Sie neugierig Karten
? >, denn die Berechnung der Bildadresse im Vordergrund unterscheidet sich von der im Backend🎜Lassen Sie mich Ihnen getQuestionIdFromImageUrl
zeigen und Sie werden es vielleicht verstehen🎜🎜 🎜🎜BECAUS. if Die Frage ist dieselbe, aber die Bildadresse jedes Kontos ändert sich nicht, was bedeutet, dass die Berechnung der Bildadresse regelmäßig erfolgt. Nach langer Recherche habe ich festgestellt, dass es sich tatsächlich um die Verwendung von / für den <code>relativePath
-Parameter. Subtrahieren Sie den angegebenen Offset-Wert vom zweiten Teil. Wir werden später erklären, wie Sie die Antwort vom Hintergrund erhalten Karten- und Antwortparameter. 🎜🎜Die Definition von maps
ist eigentlich $url => $question_id🎜answers
ist definiert als [ 'question_id' => $question_id, 'answer' => $answer]
🎜🎜 🎜🎜 Wie im Bild gezeigt, verwenden Sie 3 Eltern und geben Sie dann ul.sec2 ein, um die Antwortliste zu erhalten. Suchen Sie dann das Element, das die Antwort enthält, und Simulieren Sie, dass Sie darauf klicken🎜Damit ist eine automatische Antwort abgeschlossen🎜🎜Zurück zum oben Gesagten zum Abrufen des Offset-Werts, nachdem Sie sich angemeldet haben. Sehen Sie sich bei der Eingabe Ihre URL an🎜🎜🎜🎜559634
ist Ihr Offset Geben Sie den Wert ein, geben Sie die Antwortseite ein. 🎜 Dies ist die Quelladresse des Bildes 🎜Erhalten Sie die ursprüngliche Bild-ID als 0069000/1543312740097
🎜Verwenden Sie den Offsetwert. Subtrahieren Sie das zweite Argument, um 1543312180463
zu erhalten. 🎜🎜Endlich habe ich die Frage-ID erhalten: 0069000/1543312180463
🎜Andere Konten können nach Experimenten auch die gleiche ID erhalten, und dann ist dies die tatsächliche ID, die in der Datenbank gespeichert ist🎜🎜Beim Betreten der Hauptseite habe ich ein Skript, um dies aufzuzeichnen🎜Speichern mit Cookies🎜Angehängt ist der Code 🎜
Es gibt die richtige Antwort in der Parsing-Schnittstelle
Jeder Teil ist mit .sec.post
umschlossen. .sec.post
包起来了
然后往下取 .sec2
再取 img
并获取url
可以得到图片id, 同样取relativePath
但是不需要应用偏移值了, 直接存进数据库即可
同样的, 答案在 .sec3
往下 .pad10
再往下 em:eq(0)
里
直接这样取
然后发给后端丢到数据库里记录起来
并在前台发送已记录消息
后端记录代码
然后就是前后端配合, 自动记录题目, 自动答题
最后就是自动刷题
进入一张试卷后, 自动填写之后加了一段自动更新试卷的代码, 如图
关于fuxiAuto
后面的那串数字
也许我们都不太一样, 附上科目id获取教程
首先进入
利用开发者工具找到开始测试按钮
javascript:unitExam(1098001001
)
这个1098001001
Dann gehen Sie nach unten und nehmen Sie .sec2
und Nehmen Sie dann img
und holen Sie sich die URL. Sie können die Bild-ID erhalten. Sie erhalten auch den relativePath
, aber Sie müssen den Offset-Wert nicht anwenden, sondern ihn einfach direkt speichern in der Datenbank
Ähnlich ist die Antwort in .sec3
. Gehen Sie zu .pad10
und dann zu em:eq(0)
und Holen Sie es sich direkt so
und die aufgezeichnete Nachricht im Vordergrund senden
🎜Back-End-Aufzeichnungscode🎜🎜🎜🎜Dann die Zusammenarbeit zwischen Front-End und Backend , Automatische Aufzeichnung von Fragen, automatische Beantwortung🎜Schließlich automatisches Bürsten🎜Nach der Eingabe eines Testpapiers wird nach dem automatischen Ausfüllen ein Abschnitt zum automatischen Aktualisieren des Testpapiers hinzugefügt, wie im Bild gezeigt🎜🎜🎜🎜Über die Zeichenfolge von Zahlen nachfuxiAuto
🎜Vielleicht sind wir alle unterschiedlich, hier ist eine Anleitung, wie man die Betreff-ID erhält🎜🎜Geben Sie zuerst ein🎜🎜🎜🎜Verwenden Sie die Entwicklertools, um die Schaltfläche „Testen starten“ zu finden 🎜 🎜🎜🎜javascript:unitExam (1098001001
)🎜Dieser 1098001001
ist die Betreff-ID🎜Die letzte Ziffer hier ist von 1 bis 7, also habe ich eine automatische Zufallszahl geschrieben, um zufällig eine ganze Zahl von 1 bis 7 zu generieren🎜🎜 Auch die Änderung ist sehr einfach🎜🎜🎜🎜🎜Ändern Sie einfach 1 und 7 im Bild auf Ihre Minimal- und Maximalwerte. 🎜Das obige ist der detaillierte Inhalt vonAnalysieren Sie, wie PHP das „automatische Fragen-Brushing“ implementiert (mit Ideen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!