LOADING

加载过慢请开启缓存 浏览器默认开启

GPT4逆向IOS模型无限次数油猴脚本编写

2023/5/30

GitHub项目链接

脚本链接

1:起因

image-20230529191948609

目前ChatGPT 如火如荼, 但是GPT3.5的模型能力有限,很多人选择开通GPT Plus来使用GPT4功能。

目前,GPT PLUS 用户可以使用以下模型:

  • GPT 3.5
    • 优点:速度快,适合一般的需求。
    • 缺点:模型参数较少,回答不够智能。

image-20230529192326117

  • GPT 4
    • 优点:模型参数多,回答更智能,上下文理解更强。
    • 缺点:有次数限制, 25次/3小时, 对英文理解能力强于中文,如果中文回答较烂,可以尝试英文。

image-20230529192507875

  • GPT 4 - Browsing
    • 优点:添加了联网功能, 同上
    • 缺点:同上

image-20230529193218778

GPT 4 - Plugin

  • 优点:各种千奇百怪的插件,其中文献检索功能较为不错,同上
  • 缺点:同上

image-20230529193310330

5.18日 OpenAI推出IOS的APP版本,其中对于plus用户可以无限次数的使用GPT4模型。在登录IOS的过程中发现OpenAI在其中内嵌了一个网页,推测可以通过逆向功能实现网页版无限使用。

2:具体实现

IOS设备使用无限次数的GPT4后会留下历史记录:

image-20230529193753235

推测可能是调用了不同的模型, 决定采取浏览器抓包的方式来实现。

具体实现步骤

  1. 什么是浏览器抓包:

    浏览器抓包 是一种网络调试方法,主要用于观察并分析浏览器和服务器之间的网络交互过程。具体来说,就是在浏览器发送请求和接收响应的过程中,捕获并记录网络数据包的过程。

    抓包的用途

    • 调试网络问题:开发者可以使用抓包工具检查请求和响应的详细信息,如HTTP头,内容,以及错误代码,等等,从而查找问题的来源。
    • 网络性能优化:通过抓包,我们可以观察网页加载的具体过程,以及每个请求所需的时间,这对于网络优化和性能提升非常有帮助。
    • 网络安全:抓包工具也常被用于检测网络安全问题,如未加密的数据,或是恶意的网络活动。

    如何进行浏览器抓包

    1. 使用浏览器的开发者工具:大部分现代浏览器都内置了开发者工具,可以直接进行网络抓包。例如,在 Chrome 浏览器中,只需打开“开发者工具”(F12或右键点击页面然后选择”检查”),然后选择”Network”标签,就可以看到网络请求的详细信息。
    2. 使用抓包工具:除了浏览器自带的工具,还有一些专业的抓包工具,如 Wireshark,Fiddler,Charles 等,这些工具功能更强大,能捕获更多类型的网络数据包。
  2. 如何进行浏览器抓包

​ 本人的使用的浏览器为Edge浏览器, Chrome浏览器同理, 在浏览器中按下F12键打开调试工具,选择网络这一项。

image-20230529194415396

​ 然后清空历史的记录(点击上方的圆圈符号), 然后当你在ChatGPT的网页版发送信息后, 在右侧的网络调试工具便可以看到你调用时发送的信息。比如说这里我们调用的是GPT4模型。

image-20230529194947263

​ 当然,Mac同理,由于该APP只能在IOS设备上使用, 所以我借用了舍友的MAC进行了抓包,最后发现IOS设备无限使用的模型为gpt-4-mobile。 现在我们已经获取了我们所需要的所有内容了。现在就可以开始编写脚本来实现了。

  1. 脚本编写

很多人觉得编写脚本代码是一键很难的事,但是有GPT-4的帮助后,其实不然,询问如何编写,他便可以很轻松的给出代码:

image-20230529195510378

稍加修改,便得到了第一版可以运行的代码:

// ==UserScript==
// @name        无限GPT4
// @namespace   https://github.com/linkedlist771
// @description 无限使用GPT4
// @license MIT
// @include     *
// @version     1
// @grant       none
// ==/UserScript==
 
(function() {
    'use strict';
 
    let realFetch = window.fetch;
    window.fetch = function(url, init) {
        if (init && init.method === 'POST') {
            let data = JSON.parse(init.body);
            if (data.hasOwnProperty('model')) {
                data.model = 'gpt-4-mobile';
                init.body = JSON.stringify(data);
            }
        }
        return realFetch(url, init);
    };
})()

现在这个代码已经可以正常运行了,在启动后,询问区别GPT4和3.5的问题,可以得到正确的答案,而且会看历史记录可以发现模型已经被修改了。确实为GPT4。

image-20230529195952022

LShang001Seto的建议后, 对代码的部分部分逻辑进行了订正,xuzihanshsjnsn 帮忙完成了UI部分的设计。 基于此完成了第四版脚本,开启后有一个按钮,通过选择可以控制目前是否开启。

image-20230529204718806

总结

至此,我们完成了如何通过抓包找到模型然后编写JS代码进行实现无限次数的GPT4模型调用,如果觉得写的不错可以给项目点个赞捏, **给大家磕头了ლ(´ڡ`ლ)**。