via
https://linweiyuan.github.io/2023/06/24/%E5%A6%82%E4%BD%95%E7%94%9F%E6%88%90-GPT-4-arkose-token.html
以下逆向 JS 内容已过期,参考:https://github.com/acheong08/ChatGPT/issues/1431#issuecomment-1606145567
有另一种简单的方法生成 arkose_token:chatgpt-arkose-token-api
当天,似乎上面的方法又失效了,所以还是先用回下面的方法
arkose_token 突然不检测了,但是还是先传着,保持和官网一样
又开始检测了
chatgpt-arkose-token-api 复活,主要是借鉴了 xyhelper/xyhelper-arkose
把 html 页面放在服务器上运行,不行,会弹验证码
但是单独起个服务跑 html 页面,又可以,莫名其妙
(我自己测试,如果服务器上开启了 IPv6,会拿不到 token,原因未知)
服务健康程度监控页面:Health Status
方法已失效,不折腾了
更新视频,通过抓 har 包获取合法 token(这个方法已经存在很久了,但是最近比较忙,也基本弃坑了没用 GPT,所以鸽到现在更新)
原来本来就有更加方便的方法,之前没有注意,现在更新,无需额外再跑一个 token 服务
GPT-4 对 arkose_token 的校验在最近几天里每天都改变很多次,有时早上提交代码,下午就失效,或者晚上提交,第二天失效
通过不断的试错,把所有缺失的参数全部补上,但是最后还是 403 了
于是,打算从源头出发,学习一下 JS 的逆向(本人 JS 相对新手,但是曾经也写过)
接口:https://tcr9i.chat.openai.com/fc/gt2/public_key/35536E1E-65B4-4D96-9D97-6ADB7EFF8147
FormData:
1
2
3
4
5
6
7
8
bda: ct + iv + s 的 base64 编码
public_key: 35536E1E-65B4-4D96-9D97-6ADB7EFF8147
site: https://chat.openai.com
userbrowser: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36
capi_version: 1.5.2
capi_mode: lightbox
style_theme: default
rnd: 随机数,小数点后有时 16 位,有时 17 位
其他参数都是写死,并且之前不传也可以,最近必须要传,并且还要传对,不然 403
重点就是在 bda 参数里,里面的内容是加密的
通过 F12,一步一步跟,发现了一些蛛丝马迹,最后调用的是这个方法来生成 bda 参数:ALFCCJS.encrypt(bx, bv + bw)
于是反推,如何生成 bx、bv 和 bw
bx 依赖 b5 和 bg
b5 是一个数组,里面的东西大部分都是写死的,除了一个时间戳
bg 写死的,本次测试不传也正常(未来可能有校验)
将 b5 数组转成字符串,就得到了 bx
bv 没什么好说的,就是当前浏览器 UA 写死
bw 不复杂,当前时间戳然后计算一下
最后执行加密方法,就能生成加密 bda
如果提示 ALFCCJS is not defined,执行下面 JS 将其初始化
1
2
3
4
const script = document.createElement("script");
script.type = "text/javascript";
script.src = "https://tcr9i.chat.openai.com/cdn/fc/js/6af2c0d87b9879cbf3365be1a208293f84d37b1e/standard/funcaptcha_api.js";
document.head.appendChild(script);
再设置到参数里调用接口就能拿到 arkose_token
GPT-4 就 200 了
一开始看错了 bv 成 by,但是字幕烧录进去了,懒得改了,其实是 bx, bv, bw
1 条评论:
共产党,你妈逼,这几天机构体制改革改到我们零时工头上,你们这帮B,你们等着,你们的丑事遍地是,惹到我了,你们必须付出代价。
发表评论