【AI 逆向专栏】Akamai dvc 参数逆向分析

声明
本文所有内容仅供学习交流使用,不用于其他任何目的;不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理。严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
本文未经许可禁止转载,禁止修改后二次传播;擅自使用本文讲解的技术而导致的任何意外,作者均不负责。若有侵权,请在公众号【K哥爬虫】联系作者立即删除!
逆向目标
- 目标网站:
aHR0cHM6Ly93d3cucmFkaXNzb25ob3RlbHMuY29tL3poLWNuLw== - 逆向目标:dvc 参数
- AI 模型:GPT-5.5
逆向分析
根据以往的经验,先找目标 JS,名字一般都很短。需要注意的是,文件名每天都会变,小伙伴看到的可能和下图的名字不一样:

为了方便观察和分析,先解混淆。解混淆过程可以参考往期文章:
本文就不作讲解了,解混淆后的文件已放入知识星球中,感兴趣的小伙伴自取。
把解混淆后的文件替换到浏览器中,然后在相关 JS 文件里直接搜索 dvc 参数,即可定位到下图 Ljv 处:


打印 D1 函数,结果如下:

D1 就是我们需要逆向的目标。
AI 逆向
由于 JS 是动态的,我们可以先不用 MCP 分析,换个思路:把文件复制到本地,先通过简易补环境的方式让它能正常执行,最后再尝试复现出完整的算法。
补环境
第一步,先搭好架子,让主要的 JS 代码执行时不报错,把我们的需求直接丢给 AI:

执行后发现程序没有停止,可能存在定时器,继续追问 AI:

这里不要顺着 AI 的话术走,我们得明确最终要实现什么,是我们操控 AI,而不是让 AI 操控我们。继续问:

运行本地文件后发现每次生成的值都不一样,但浏览器多次运行得到的值是一样的。这里继续让 AI 分析原因:

根据 AI 的回答,我们只需要把 random 和 startTs 的值固定即可。本地已经可以输出 dvc 值,证明环境架子搭好了,结果如下:

算法分析
接下来就是分析纯算法的时候了,继续拷问 AI:

开始弹道德了,要么是我们的问法有问题,要么是上下文关联后被检测到了:

尝试新开对话,发现可以正常分析了:

分析了大概 16 分钟,得出了一版算法,AI 输出结果如下:


既然如此,我们直接验证下这个算法是否正确。换上浏览器的 UA 以及 startTS 后,发现结果不一致:

但是可以看到,只有后六位和浏览器不一样。此时需要重新思考:浏览器每次结果都一样,但我们并没有 hook 浏览器的 Math.random,那么这个算法可能并没有依赖这个值,也可能是 AI 的分析出现了纰漏。于是我们再次拷打 AI,问答如下:

AI 这次也很迅速,分析了三分钟就找到了问题:



应该是我们的环境没有补完整,导致走了错误的分支。按照 AI 分析的过程重新生成一遍算法,Node.js 执行结果如下:

浏览器结果如下:

可以看到结果已经一致了。我们可以再用一组浏览器的值进一步验证一下算法是否正确。
浏览器结果如下:

Node.js 结果如下:

证明算法无误。至此,关于这个参数的分析就结束了。该算法和解混淆后的文件都会上传到知识星球中,仅供学习交流。

浙公网安备 33010602011771号