看到了有人发了这个贴,我想起了我曾经搞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
的驱动,就有了这些驱动的时候,获取 navigator
的 webdriver
属性时,会返回 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