如何生成 GPT-4 arkose_token

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,你们等着,你们的丑事遍地是,惹到我了,你们必须付出代价。