使用chrome-devtools-mcp将aistudio playground页面进行更有效率的反代的测试

背景 最近安装了 chrome-devtools-mcp 便试着用他来逆点什么 便选定了aistudio的playground逆向 主要是足够难,本身页面有混淆,还有加密参数 加密参数主要是指: 当然本身这个参数目前全网都没有人能够逆向出来,我们也不追求他解决 我们的目标只有一个: 允许借助浏览器来...
使用chrome-devtools-mcp将aistudio playground页面进行更有效率的反代的测试
使用chrome-devtools-mcp将aistudio playground页面进行更有效率的反代的测试

背景

最近安装了 chrome-devtools-mcp
便试着用他来逆点什么

便选定了aistudio的playground逆向
主要是足够难,本身页面有混淆,还有加密参数
加密参数主要是指:

image

image
当然本身这个参数目前全网都没有人能够逆向出来,我们也不追求他解决
我们的目标只有一个:
允许借助浏览器来获取这个参数,但是要让工作时浏览器只用来获取这个参数,尽可能的减少性能开销和延迟

然后结合我们自己提前的一些判断,比如:

  • 换账户,这个token不能复用,换浏览器也不能复用
  • 这个参数一个重要影响参数是发送的历史记录,只要历史记录和浏览器环境不变,这个参数可以随便用,不是一次性的
  • 同一浏览器环境里,header在多次对话时都不会有任何变化
  • 可以无头发包,只要header和token对的上

那目标其实很简单:

  • 对于header部分,我们只需要执行一次初始化对话,获取他就行
  • 对于body部分,这个加密token就直接复用前端浏览器;里的函数,发事件直接调用
  • 这样就可以省去所有ui操作,只在初始时需要对话一次抓包获取header,后续浏览器的作用就是一个token机器

开始实现

最开始我选用了playwright来进行,中间都很顺利,且ai也顺利的打断点调试等手段,获得了前端里负责加密这个参数的函数:

image

image
(ai效率就是快,直接顶着混淆硬是找到了)

最终也是做的差不多了:

image
(可以看到获取加密token只用了22ms,这个数量级其实要不要逆向其实已经没意义了,速度很快)

但是,遇到下面一个问题:
我手动使用chrome浏览器获取的包可以直接curl使用,但是使用playwright无头发的包就不行,但是换成有头模式又可以用了

换句话说:这个加密token检测了浏览器环境,识别到是无头模式,后端直接403拒绝了

这就犯难了,难道真没办法能实现吗?

并不是!

因为去年的时候,其实有这样一个项目:
CJackHwang/AIstudioProxyAPI: FastAPI + Playwright + Camoufox 中间层代理服务器,兼容OpenAI API且支持参数转发。项目通过浏览器自动化将API请求转发到 Google AI Studio 网页,并同样按照OpenAI标准格式返回的工具。内置调试WebUI面板。

它里面就支持了无头模式来对网页进行ui化操作来实现反代
那这其实就只说明了一件事,浏览器环境不够干净。因为这个token的生成和你是不是使用了ui交互(是否使用了按钮点击等)没有关系

既然是环境问题,那使用同款camoufox浏览器应该就可以了

结果确实是这样,将脚本进行迁移后,使用类似方法,实现了真正意义上的无头反代:

image

对话过程中完全不需要开启浏览器窗口

就此,基本结束!

相关代码和说明已经发布到仓库里:

github.com

GitHub - Lianues/aistudioFastProxy

通过在 GitHub 上创建帐户来为 Lianues/aistudioFastProxy 开发做出贡献。

后记

其实上面这个思路我在大概在去年就已经有了,但是当时没逆出来这个关键的token工厂函数,便暂时用的抓包获取token的思路做了一个:
油猴脚本.txt (11.5 KB)
现在有了更强力的工具,直接让ai去逆,就完美实现了我当初的思路

不过aistudio现在基本上已经没有什么用了,配额给的太少了也

此外,playground和build是共用配额的,也因为有更方便和更好的build反代,导致playground被我废弃了很久

不过扒一扒前端还是挺有意义的

3 个帖子 - 3 位参与者

阅读完整话题

来源: linux.do查看原文