【AI逆向学习笔记】用AI大模型实现某盾点选的轨迹模拟(文末附源码和提示词)

28 阅读4分钟

规则就是:没有规则。 -- 电影《黑客帝国》


📃 前言

笔者的话: 这是一篇 学习随笔 ,并非专业的 技术文章 ,所以有一些地方的做法并非最优解。不同的工具,不同的模型能做到的效果都会有所不同,本人的所有操作仅供参考。

注意: 本文所涉及的 逆向思路 和操作仅供 学习交流 使用,请勿对互联网公开网站进行高频率或高并发请求,凡造成严重损失的,后果自负!!!

📋 正文

是这样的,这段时间我去看我以前做过的 爬虫 项目,发现有一个 半成品 ,就是某盾的点选验证只做了 参数加密逆向轨迹加密逆向 ,没有做 轨迹算法模拟 ,但我又不想费力气,于是想通过 AI 来搞定轨迹。

我选择的工具是 qoder ,个人感觉 IDE 好用一些:

用的 mcp 工具就一个 js-reversegithub.com/zhizhuodema…)。

这是一个专门用于 浏览器 调试的工具,可能会有朋友问:为什么不用 chrome-devtools-mcp ?这个还得看个人,那个用的舒服用那个,如果你实在不清楚那个好用,可以把两个都安装在 qoder 上,然后然 AI 阅读它们的所有功能,总结出两者之间的 优劣 做个参考:

工具选择完毕之后,先看一下某盾点选的 轨迹 加密逻辑:

其中 this['traceData'] 就是轨迹信息,如果你在这里打上 断点 的话,每一次你在 验证码 的画布上移动时,都会被记录移动的 坐标

5841 疑似是 xy 的距离,39109 疑似时间戳,0 好像是固定值,不过这些我们都不用管,在之后我们会让 AI 收集 10 个完整的验证完成后的轨迹数组,它会分析出这些是什么东西的。另外一个参数是 token ,在图片请求的返回值中存在,代表着每一张验证图的 凭证 ,之后让 AI 进行动态替换就好了。

然后这两个传入的值会通过 _0x4553c5 方法的加密,得出加密的一条轨迹信息:

然后会通过 push 将第一条轨迹信息加入名为 traceData 的空数组中,之后以此类推,程序记录你在画布上的移动轨迹,直到你选完 三个 点为止。这里的 断点 就不要打了,毕竟你移动一下,它就断一下,要完成整个验证过程,那要等到猴年马月啊🐶。

_0x4553c5 这个函数我已经在本地 node 实现了

虽然方法名随着更新已经不同,但加密逻辑是一样的:

主要问题是,轨迹信息是 加密 的,AI 在怎么厉害也无法通过加密值来分析轨迹生成规律,于是我们就可以让 AI 反逆出它的 解密函数

解密函数弄好之后,就到了收集 轨迹 信息的环节,轨迹信息主要在以下位置:

接下来的思路是:先让 AI 使用 mcp 控制浏览器,然后在此处设置断点,然后等待我们手动完成点选工作,让它记录每一次验证的 图片地址token点选字体加密的轨迹数组 ,并使用解密函数对数组中的 加密值 进行解密,把解密后的数据保存在本地供后续分析,以此类推,收集 10 次验证的 轨迹 。之后再在本地配置 云码 识别,让 AI 比对 云码 识别和浏览器识别 坐标 的误差,不断改进模拟轨迹,直到出现一次验证 通过 为止。

然后开始 提示词 输出:

然后在 浏览器 中进行 点选 操作,如果断点设置成功,页面会卡住:

第一次测试,信息收集完毕:

这里需要注意,这个 mcp 设置的断点不稳定,下一次可能就失效了,为了解决这一问题,我们最好是手动设置一个断点,保证无论如何都能断住:

还有一点是,一定要点正确了,不然 AI 收集的数据是错的,分析也会降低效率。

就这样,以此类推,收集 10 条数据:

然后就是进行 轨迹 模拟了:

AI 做好这一切时候,就让 AI 去运行测试,如果报错,它会自己去解决:

出现了一个问题:我们没有提供 验证接口

于是我用浏览器的 验证接口 快速生成脚本,然后复制到本地:

然后告诉 AI

还有一个问题是,它会测试接口 10 次,这太多了,一般来说,三次如果一次通过都没有就代表轨迹有问题:

成功!!!

运行结果:

🎁 附录

提示词和源码获取:

链接:https://pan.quark.cn/s/102459aba66a
提取码:hspC

更多有趣内容,可关注wx公众号“小恰学逆向”,分享一些爬虫JS逆向技术以及有趣的工具。(●´ω`●)ゞ