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