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