分享一下我逆向openAI网页chatGPT web版页面的思路和历史

看到了有人发了这个贴,我想起了我曾经搞openAI网页chatGPT web版的时光。
https://linux.do/t/topic/1846

既然屎黄没有说潘多拉的fakeopen是什么方法,大家就先看看我的吧。反正我现在也没用这些方法了。
这个帖子没什么代码,我只是讲讲大概的方法。

初始web逆向

我最早接触 access_token是在chatgpt-web这个项目,大概在二月的时候增加了 access_token。当时api额度虽然是六个月还是18 美元(现在改成3个月了),但是分享给朋友确实不够用。

之前网页版服务刚出来的时候,是可以直接用的。
后来chat.openai.com这个页面加了 Cloudflare 的验证,机器人用往这个页面一发数据就掉进cf盾里面了。

后来听到有人说OpenAI 网站的有些子域名有相同功能服务,并且没加 CF 验证,可以继续瓢。然后试了一下可以。然后没多久openai发现了,接口全部 404了。

fakeopen反代

之后看chatgpt-web又更新了一批反代,其中有fakeopen,然后我试了试能用。之后看到在一些主机论坛和github Issues说会使用这些反代是公交车,会导致封号。然后就有点小心了,准备自己研究。


然后发现浏览器不会进cf盾,爬虫会进盾。就拉开了模拟浏览器的路线。

1.修改请求头(header)

提取浏览器请求头,然后发送。发现没用。

后面还把获取Cloudflare Cookie的验证码需要的 Cookie,再在请求的时候加上,发现还是掉到盾里面了。然而浏览器却平安无事。

然后百思不得其解,一个偶然的机会,发现把chrome的UA改成Firefox,浏览器也会掉进盾里面出不来。明白了可能是请求头之上的其他特征。

之后不知道在哪里看到了 TLS Fingerprinting(指纹)这个东西,CF会验证UserAgent与计算出来的JA3 指纹是否匹配,如果不匹配就进盾出不来。

2.utls

后来发现了utls这个库,可以修改golang的ja3指纹,然后修改了ua与ja3指纹匹配,绕开了盾。

3.浏览器 js验证。

之后,openai大规模添加了盾,浏览器都可能掉到盾里面去,只有一些干净的IP才不会触发盾。唯一的区别是浏览器能执行js,从盾里出来,然而自动化程序不行。js逆向cf的盾我也不会。

后面找到了同类项目gochatgptapi等等,掉盾里的建议是更换IP,作者也不知道怎么回事

这个感觉也是同样的普通验证码,如果不行,试着先重启服务
目前还不知道怎么很好地处理,有时出有时不出又不好测试

我这边香港IP一般无需验证码都是直接 welcome,自动刷新也不触发

4.使用自动化工具Selenium等

之后首先想到了用自动化浏览器请求,然后发现了Selenium之类的工具,可以操作浏览器完成网页请求。

但是实际上情况很不好,试着用这些工具打开 ChatGPT,会一直重复出现 CF 验证码,点了之后又出现,再点还出现,之后还试了试了同类的uppeteer、Playwright,结果都是一样。

后面发现,其实这些工具会安装一个WebDriver 的驱动,就有了这些驱动的时候,获取 navigatorwebdriver 属性时,会返回 true,而没有这些驱动时,会返回 undefined

之后尝试覆盖navigator.webdriver时,发现实际上并不起作用。还是会返回true。

后来想了一个办法,就是修改代码把navigator.webdriver改了一个名,把webdriver改为了fakefaker,然后就是navigator.fakefaker==true了,以前的navigator.webdriver==undefined了,(当时并不知道 undetected_chromedriver这个东西)
然后在 API 外再套一层这个来绕过 Cloudflare 验证了。

后来不知道为什么,是不是使用自动化程序进行白瓢的人太多了,网页版使用的时候,频繁失效,需要频繁刷新,之后过写个定时器去进行刷新。

4.使用浏览器 HTTP archive文件绕过人机识别。

后来openai也不搞全自动浏览器验证了,问问题的时候会弹出像选小人之类的captcha验证,全自动程序是过不了的。然后我并没有屎黄那样的技术写子服务,使用模型什么的绕过验证码。

之后发现opanai为了保证用户体验,验证码只有开始对话的时候才弹,之后对话的时候几乎不会弹。

然后找到了HTTP archive这个东西,发现可以使用浏览器产生的har文件克隆浏览器状态,然后绕过captcha验证。

这个办法也用到了八九月。

最后一点话

1.

由于我自己折腾了很久,导致我的服务不稳定。之前带入门使用gpt朋友都渐渐没用我的服务了。大概四五月的时候,朋友不知道从哪里找到了一个叫binjie09的大佬提供的服务,还给我推荐,说挺稳定的。(我现在看了看,还在提供服务)

大概很八月份左右,之前看到了很多便宜的api,$ ->¥比例为1:1,我觉得贵。

然后又找到了$ ->¥比例为1/8(1元=8美元)。我还是觉得贵。

又找到了$ ->¥比例为1/10。我还是觉得贵。

找到了$ ->¥比例为1/30。觉得贵。

最后发现了源头,原来是openai 的新账号有 API 额度,而注册一个新号的成本很低,因此搞大量账号然后转卖 API 额度就形成了一种生意。这种转卖的往往可以提供相较于官方价格来说优惠很多的价格。

然后意外找到了源头的一位老板,不知道算不算嘿产。老板卖$5刀号只要¥0.3元。可以用三个月。(这都是之前的事了,现在每个都涨到一元了罢)。之后再换新号。

2.

我发现这种撸新号的行为大概的确是竭泽而渔。但是大量api中转站都在用,你一个人不用也没办法。(如果撸太凶了,openai放弃新号试用金也没法)

3.

大量中转站也把逆向web access token的当作api卖。这种行为大家也没法。

逆向access token和试用$5刀新号与正式API有什么区别。你看看是不是有 “全速” API,“普通”API之类名词,为什么呢。大概可能是因为源头上的token和5刀号的API会被限速了罢。

4.

之前也搞过poe,因为poe token不会过期,而且无限次对话。每天还能用一次gpt4。新号免费使用15day 会员。
后来不知道是不是撸的太凶的,取消了很多,免费的基本没了,加上gpt3.5包括的总额度都只有100次了。就是无论使用什么模型,每天只能问100个问题了。

比起poe,openai网页版3.5没对话限制也是有良心了。

5.

下一次再研究这些就是在$5刀号全部没了的时候。另外,不要问问哪里买$5刀号,我不想推荐,至于逆向,可以找其他还活着的仓库。参考:
https://linux.do/t/topic/1813/7?u=manify

44 个赞

感觉非常有用

1 个赞

很不错,逆向是很累的

2 个赞

不错,学习到很多新名词

2 个赞

厉害:smile:

1 个赞

大佬

1 个赞

大佬

2 个赞

字里行间都透露出使用gpt的辛酸啊。逆向是个辛苦活。 :joy:

3 个赞

现在新注册的账号貌似已经没有5刀的试用额度了

binjie那个有点拉吧 一直都是只能用gpt3.5 不是原版gpt页面

1 个赞

5刀号真没了,那就会拿付费账号来跑 3.5 系列喽

学到了

mark

五刀号真没了 :joy:

还得是你。。。我就没那么机智,CF加盾的时候我就已经过不去了 :smiling_face_with_tear:

tt大佬,五号现在基本要绝版了

哎我也开了plus用了好多个项目的逆向了,辛苦各位大佬了

最后,终于有吾皇api用了,再也不折腾了

1 个赞

始皇的api又能用了,但是我还是想研究一下能不能自己做

1 个赞

期待

感觉非常有用