Maison > Article > développement back-end > Analyser comment PHP implémente le « brossage automatique des questions » (avec des idées)
https://github.com/WOSHIZHAZHA120/kgc_cheater
Tout d'abord, vous pouvez constater que toutes les questions sont images, mais les URL ont une chose en commun, c'est 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
Ensuite, allez directement au code [Apprentissage recommandé : "Tutoriel vidéo PHP a>》】
Récupérez toutes les adresses d'image et envoyez-les au backend. Le backend recevra les adresses url de tous les images
getQuestionIdFromImageUrl
j'en parlerai plus tard🎜Ensuite créez une nouvelle base de données, j'en ai construit une ici La base de données nommée kgc_cheater
et la table Les questions_réponses
🎜 sont les suivantes : structure du tableau🎜🎜🎜🎜 🎜🎜 Vous pourriez être curieux cartes
, car le calcul de l'adresse de l'image au premier plan est différent de celui du backend🎜Laissez-moi vous montrer getQuestionIdFromImageUrl
et vous comprendrez peut-être🎜🎜🎜🎜Parce qu'il s'avère que l'adresse d'image de chaque utilisateur est différente, même if La question est la même, mais l'adresse de l'image de chaque compte ne changera pas, ce qui signifie que le calcul de l'adresse de l'image est régulier. Après de longues recherches, j'ai découvert qu'il s'agissait en fait d'utiliser /<.> pour le paramètre <code>relativePath
. code>Après le fractionnement, soustrayez la valeur de décalage spécifiée de la deuxième partie. Nous expliquerons comment l'obtenir plus tard. Nous demandons directement la réponse à l'arrière-plan et renvoyons la. paramètres de cartes et de réponses 🎜🎜La définition des cartes
est en fait $url => $question_id🎜réponses
est définie comme [ 'question_id' => $question_id, 'answer' => $answer]
🎜🎜 🎜🎜 Comme indiqué sur l'image, utilisez 3 parents puis entrez ul.sec2 pour obtenir la liste de réponses, puis trouvez l'élément contenant la réponse et simulez un clic dessus🎜Cela complète une réponse automatique🎜🎜Retour à ce qui précède, à propos de l'obtention de la valeur de décalage, après vous être connecté. Regardez votre URL lorsque vous entrez🎜🎜🎜🎜559634
est votre compensation valeur, entrez la page de réponse🎜Il s'agit de l'adresse source de l'image https://tiku.kgc.cn/testing/cdn /getImage?relativePath=0069000/1543312740097/e19f21615ab8e9866619bf47c3b5b59c.jpg&imageType=2
🎜 🎜Obtenez l'ID de l'image d'origine sous la forme 0069000/1543312740097
🎜Utilisez la valeur de décalage Soustrayez le deuxième argument pour obtenir 1543312180463
🎜🎜Enfin, j'ai obtenu l'ID de la question : 0069000/1543312180463
🎜D'autres comptes peuvent également obtenir le même identifiant après des expériences, et voici l'identifiant réel enregistré dans la base de données🎜🎜Lorsque j'entre dans la page principale, j'ai un script pour l'enregistrer 🎜 Enregistrez-le à l'aide de cookies 🎜 Ci-joint le code 🎜
Il y a une réponse correcte dans l'interface d'analyse
Chaque partie est enveloppée avec .sec.post
.sec.post
包起来了
然后往下取 .sec2
再取 img
并获取url
可以得到图片id, 同样取relativePath
但是不需要应用偏移值了, 直接存进数据库即可
同样的, 答案在 .sec3
往下 .pad10
再往下 em:eq(0)
里
直接这样取
然后发给后端丢到数据库里记录起来
并在前台发送已记录消息
后端记录代码
然后就是前后端配合, 自动记录题目, 自动答题
最后就是自动刷题
进入一张试卷后, 自动填写之后加了一段自动更新试卷的代码, 如图
关于fuxiAuto
后面的那串数字
也许我们都不太一样, 附上科目id获取教程
首先进入
利用开发者工具找到开始测试按钮
javascript:unitExam(1098001001
)
这个1098001001
Ensuite, descendez et prenez .sec2
et puis prenez img
et obtenez l'url
Vous pouvez obtenir l'identifiant de l'image. Vous obtenez également le relativePath
mais vous n'avez pas besoin d'appliquer la valeur de décalage, stockez-la simplement directement. dans la base de données
.sec3
Descendez jusqu'à .pad10
puis descendez jusqu'à em:eq(0)
et obtenez-le directement comme ceci
Ensuite, envoyez-le au backend et jetez-le dans la base de données. Enregistrez-le
et envoyez le message enregistré au premier plan 🎜🎜Code d'enregistrement back-end🎜🎜🎜🎜Ensuite, la coopération front-end et back-end , enregistrement automatique des questions, réponse automatique🎜Enfin, brossage automatique🎜Après avoir saisi une épreuve, après avoir rempli automatiquement, une section de mise à jour automatique de l'épreuve est ajoutée, comme indiqué sur l'image🎜🎜🎜🎜À propos de la chaîne de numéros aprèsfuxiAuto
🎜Peut-être que nous sommes tous différents, voici un tutoriel sur la façon d'obtenir l'ID du sujet🎜🎜Entrez d'abord🎜🎜🎜🎜Utilisez les outils de développement pour trouver le bouton de démarrage des tests 🎜🎜 🎜🎜javascript:unitExam (1098001001
)🎜Ce 1098001001
est l'ID du sujet🎜Le dernier chiffre ici est de 1 à 7, j'ai donc écrit un nombre aléatoire automatique pour générer aléatoirement un entier de 1 à 7🎜🎜 La modification est également très simple🎜🎜🎜🎜🎜Changez simplement 1 et 7 dans l'image par vos valeurs minimales et maximales. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!