使用 ChatGPT 总是出现「Something went wrong」解决方案

2023-11-17

文章首图.png

1、前言

最近使用 ChatGPT 总是出现「Something went wrong. If this issue persists please contact us through our help center at help.openai.com.」,在生成时经常断掉,甚至一开始就生成不了,还得需要我们手动刷新页面…
频繁操作,很是烦扰,今天手把手解决 ChatGPT 挂掉的简单方法。

2、问题详细描述

当和 ChatGPT 聊着聊着,突然出现类似于断线的提示,并且需要刷新页面,才可以继续访问,最近出现的频次越来越高,估计是为了防止恶意使用,但对我们每天正常使用用户来说,太麻烦。

image.png

3、问题解决方案

3.1、安装油猴插件

https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo
image.png

篡改猴 (Tampermonkey) 使管理您的用户脚本变得非常简单。位于右上方的 篡改猴 图标显示正在运行的脚本的数量,单击图标就可以看到正在运行的脚本和可能在这个网页上运行的脚本。

image.png

3.2、安装 ChatGPT HeartBeat

https://greasyfork.org/zh-CN/scripts/462967-chatgpt-heartbeat
ChatGPT HeartBeat 是一个 控制 ChatGPT 刷新频率的脚本

image.png

我们注意看这段脚本描述:

image.png

从原理上来说,这个刷新针对的是静态资源,由 Cloudflare 负责处理,是不会回源到 OpenAI 的。所以比起请求 https://chat.openai.com/api/auth/session ,我认为这个方案更不容易被封号。

我们把脚本源码复制下来,仔细研究,防止有恶意脚本威胁到安全:

// ==UserScript==
// @name         ChatGPT HeartBeat
// @namespace    http://tampermonkey.net/
// @version      0.2.6
// @license      GPLv3
// @description  USE AT YOUR OWN RISK!
// @author       https://v2ex.com/t/926890
// @homepage     https://v2ex.com/t/926890
// @homepageURL  https://v2ex.com/t/926890
// @match        https://chat.openai.com
// @match        https://chat.openai.com/*
// @icon         https://chat.openai.com/favicon.ico
// @require      https://greasyfork.org/scripts/395037-monkeyconfig-modern/code/MonkeyConfig%20Modern.js?version=764968
// @run-at       document-start
// @noframes
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_addStyle
// ==/UserScript==

/*
  需要保持非常久的,可以额外尝试在 chrome://discards 里禁用 `Auto Discardable`,
  或者用 https://github.com/WorldLanguages/DoNotDiscard
  否则就算保持了 Cookies 有效,Chrome 也有可能自动休眠标签页。
*/

/*
  从原理上来说,这个刷新针对的是静态资源,由 Cloudflare 负责处理,是不会回源到 OpenAI 的。
  所以比起请求 https://chat.openai.com/api/auth/session ,我认为这个方案更不容易被封号。
*/
(function () {
    function isWindow(obj) {
        return obj instanceof Window;
    }

    // 防止页面通过监听事件强制刷新
    // https://gist.github.com/fuzmish/bd444b1aadc2d22aada7c9b1a6de56ba
    const rawAddEventListener = EventTarget.prototype.addEventListener;
    EventTarget.prototype.addEventListener = function (...args) {
        const [eventName] = args;
        if (
            isWindow(this) &&
            ["focus", "focusin", "visibilitychange"].includes(eventName)
        ) {
            return;
        }
        return rawAddEventListener.apply(this, args);
    };

    const cfg = new MonkeyConfig({
        title: "Configuration",
        menuCommand: true,
        params: {
            refreshInterval: {
                type: "number",
                default: 30,
            },
            refreshURL: {
                type: "text",
                default:
                "https://chat.openai.com/_next/static/k9OKjvwgjWES7JT3k-6g9/_ssgManifest.js",
            },
        },
    });

    function getRefreshURL () {
        var refreshURL = cfg.get("refreshURL");
        // 如果手动配置了 _ssgManifest.js 以外的 URL,就不尝试获取最新的
        if (!refreshURL.endsWith("_ssgManifest.js")) {
            return refreshURL;
        }
        // 获取最新的 _ssgManifest.js 链接
        // https://v2ex.com/t/926890#r_12897849
        const manifestScript = document.querySelector(
            'script[src*="_ssgManifest.js"]'
        );
        if (manifestScript) {
            cfg.set("refreshURL", manifestScript.src);
            return manifestScript.src;
        }
        return refreshURL;
    };

    const heartbeat = document.createElement("iframe");
    heartbeat.style.display = "none";
    document.head.prepend(heartbeat);

    let count = 0;
    function refresh() {
        count = 0;
        heartbeat.src = `${getRefreshURL()}?${Date.now()}`;
    }
    setInterval(function () {
        try {
            let current = new URL(heartbeat.contentWindow.location.href);
            let expect = new URL(getRefreshURL());
            if ( heartbeat.contentWindow.location.href === '' ||
                heartbeat.contentWindow.location.href === 'about:blank' ||
                current.pathname === expect.pathname ||
                count++ * cfg.get("refreshInterval") >= 2 * 60) {
                refresh();
            }
        } catch (error) {
            // https://v2ex.com/t/926890#r_12935587
            console.error(error);
            refresh();
        }
    }, cfg.get("refreshInterval") * 1000);
})();

3.3、油猴插件配置

点击油猴插件,在「管理面板」中查看是否开启的状态

image.png

3.4、设置刷新的时间

浏览器打开 ChatGPT,右击打开 Tampermonkey - ChatGPT HeartBeat - Configuration

image.png

image.png

设置刷新的时间为 3 秒,修改刷新 url 的链接。

4、查看结果

image.png

再也不会出现断线的问题了,给力!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 ChatGPT 总是出现「Something went wrong」解决方案 的相关文章

  • 事件委托Tab栏切换

  • 拼多多详情API开启运营比价新纪元

    随着互联网的快速发展 电商行业正在迅速崛起 拼多多作为一家新兴的电商平台 凭借其独特的营销策略和创新的商业模式 成为了电商行业的一匹黑马 在拼多多的成功背后 其详情API接口营销起到了至关重要的作用 本文将详细介绍拼多多详情API接口营销的
  • MIT_线性代数笔记:复习二

    目录 第二单元主要内容 例题 第二单元主要内容 正交矩阵 Q 用矩阵形式描述正交性质 投影矩阵 P 最小二乘法 在方程无解时求 最优解 Gram Schmidt 正交化 从任意一组基得到标准正交基 策略是从向量 中减去投影到其它向量方向的分
  • ECMAScript简介及特性介绍

    ECMAScript 简称ES 是JavaScript的规范 同时也是被广泛采用和实现的脚本语言标准 从最初的1996年推出第一版至今 ECMAScript已经经历了数十年的发展和改进 成为了互联网开发中的重要基石之一 本文将对ECMASc
  • ❤ Vue3 使用

    Vue3 使用 Vue3之toRefs的使用 作用 toRefs 可以将一个响应式的对象 转换成普通对象 但是转换后的普通对象的每一个属性值都是响应式的 这样我们可以使用es6的对象解构或者三点运算符等操作 代码
  • 【连续和自适应资源需求估计】通过不断应用在线优化、选择和估计,SARDE能够有效地适应在线跟踪,并使用得到的集成技术减少模型误差(Python代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Python代码 数据 文章
  • 基于java的饮食分享平台系统设计与实现

    基于java的饮食分享平台系统设计与实现 I 引言 A 研究背景和动机 近年来 随着人们生活水平的提高和健康意识的增强 饮食健康已经成为越来越多人的关注焦点 因此 一个方便快捷的饮食分享平台就显得尤为重要 基于Java的饮食分享平台系统设计
  • 基于java的web仓库管理系统设计与实现

    基于java的web仓库管理系统设计与实现 I 引言 A 研究背景和动机 基于Java的Web仓库管理系统是近年来快速发展的领域之一 它提供了丰富的功能 如数据存储 数据检索 数据分析和数据可视化等 本文将重点介绍基于Java的Web仓库管
  • 软件测试|web自动化测试神器playwright教程(三十八)

    简介 在我们使用selenium时 我们可以获取元素的属性 元素的文本值 以及输入框的内容等 作为比selenium更为强大的web自动化测试神器 playwright也可以实现对元素属性 文本值和输入框内容的抓取 并且实现比seleniu
  • 网络安全(黑客)自学

    1 网络安全是什么 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 2 网络安全市场 一 是市场需求量高 二 则是发展相对成熟入门比较容易 3 所需要的
  • 低代码配置-组件列表设计

    过滤字段功能 配置了api 启用 输出配置 filter type Array default gt
  • 低代码配置-列表页组件设计

    保存 表单属性存放 bill 筛选项配置存放 filterLayout 列表按钮存放 buttonLayout 列表布局存放 listLayout api存放 api 数据结构 layout 存放表单基础配置 bill 存放按钮基础配置 b
  • vue实现 marquee(走马灯)

    样式 代码 div class marquee prompt div class list prompt span class prompt item span div div data return listPrompt xxx xxxx
  • Web自动化测试 —— cookie复用

    一 cookie简介 cookie是一些数据 存储于用户电脑的文本文件中 当web服务器想浏览器发送web页面时 在链接关闭后 服务端不会记录用户信息 二 为什么要使用Cookie自动化登录 复用浏览器仍然在每次用例开始都需要人为介入 若用
  • 网络安全(黑客)自学启蒙

    一 什么是网络安全 网络安全是一种综合性的概念 涵盖了保护计算机系统 网络基础设施和数据免受未经授权的访问 攻击 损害或盗窃的一系列措施和技术 经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 作
  • 新画图不好用?『 图层困扰?』『 剪切板拷贝失败?』旧版画图软件yyds

    樊梓慕 个人主页 个人专栏 C语言
  • 考虑光伏出力利用率的电动汽车充电站能量调度策略研究(Matlab代码实现)

    欢迎来到本博客 博主优势 博客内容尽量做到思维缜密 逻辑清晰 为了方便读者 座右铭 行百里者 半于九十 本文目录如下 目录 1 概述 2 运行结果 3 参考文献 4 Matlab代码 数据
  • 【js学习之路】遍历数组api之 `filter `和 `map`的区别

    一 前言 数组是我们在项目中经常使用的数据类型 今天我们主要简述作用于遍历数组的api filter 和 map 的区别 二 filter和map的共同点 首先 我们主要阐述一下 filter 和 map 的共同点 api的参数都是回调函数
  • 获取年与年之间的所有年份

    function getYearsBetween startYear endYear var years 存放结果的数组 for var year startYear year lt endYear year years push year
  • 如何在 Python 脚本中使用 Google OAuth2

    在使用 Python 脚本将视频上传到 YouTube 频道时 若希望将视频上传到第二个频道 需要解决 OAuth2 授权的问题 解决方案 创建新的 Google Cloud 项目 from google oauth2 import ser

随机推荐

  • c语言中+ =和=+有什么区别

    点击上方蓝字关注我 了解更多咨询 c语言中 和 有什么区别 区别在于 是简写 a 1就是a a 1 并不是简写 a a直接对a的赋值 符号代表的是正负 完全可以省略不写 即a b其实就是a b 在用C 编程时 我经常混淆 和 前者实际上是我
  • 高度封装的前后端框架-odoo回顾(四):翻译官方教程<<高级B:ACL和记录规则>>

    Advanced B ACL and Record Rules 高级B ACL和记录规则 Warning 警告 This tutorial assumes you have completed the Core Training 这个教程默
  • 集成学习与深度学习 加载模型方法

    1 集成学习 import joblib joblib load model pkl 2 深度学习 用torch自带的load import torch data torch load model pkl error pickle Unpi
  • JDK8 字节码操作

    java字节码技术 1 BCEL 基于汇编 2 ASM 轻量级 3 javassist 性能比发射高 比asm低 使用简单 4 cglib 基于ASM 应用场景 1 动态修改class文件 对类进行增删改 2 aop技术 3 lombok
  • 树、森林与二叉树相互转化

    1 树转换为二叉树 由于二叉树是有序的 为了避免混淆 对于无序树 我们约定树中的每个结点的孩子结点按从左到右的顺序进行编号 将树转换成二叉树的步骤是 1 加线 就是在所有兄弟结点之间加一条连线 2 抹线 就是对树中的每个结点 只保留他与第一
  • 《数字图像处理》学习总结及感悟:第二章数字图像基础(5)数学工具

    前往老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 本系列文章记录老猿自学冈萨雷斯 数字图像处理 的感悟和总结 不过估计更新会比较慢 白天要工作 都是晚上抽空学习 学习完一章再回头总结
  • 不小心删除了网络适配器中的无线网卡驱动?

    昨天电脑蓝屏了几次 查了下问题 有人说把win10的网卡重新安装下就好了 结果 我直接把网络适配器的无线网卡驱动给卸载了 就是这个样子 点击卸载后 网络适配器下面没有无线网卡的驱动 电脑也连不了网 还没有网线 驱动精灵就是垃圾 它没有适配我
  • 校招高频必背考点

    2 操作系统 2 1 基础 进程与线程的本质区别 以及各自的使用场景 进程是操作系统资源分配的基本单位 线程是操作系统调度的最小单位 一个进程可以中可以有多个线程 线程依赖于进程存在 进程状态 阻塞 就绪 运行 进程调度算法的特点以及使用场
  • 【分析笔记】全志 T507 PF4 引脚无法被正常设置为中断模式的问题分析

    相关信息 硬件平台 全志T507 系统版本 Android 10 Linux 4 9 170 问题描述 PF4 无法通过标准接口设置为中断模式 而 PF1 PF2 PF3 PF5 正常可用 分析过程 一开始以为是引脚被其它驱动占用引起 或者
  • vue路由配置

    import Vue from vue import Router from vue router Vue use Router Note 路由配置项 hidden true 当设置 true 的时候该路由不会再侧边栏出现 如401 log
  • flutter项目中 advance_image_picker 组件使用

    一 说明 Advance image picker 是flutter 插件 用于从Android 和 ios 图像库中选择多张图片 使用相机拍摄新照片 并对其进行编辑 下图为最终效果 这里有个bug 在连续多测按 旋转摄像头时 程序会出现卡
  • 关于TypeError:xxx() missing 1 required positional argument: ‘S‘问题处理意见

    关于TypeError xxx missing 1 required positional argument S 问题处理意见 关于调用python模块的方法总结 在调用自己保存的模块 py文件时 导入后就直接进行 文件名 函数进行调用 会
  • 查询手机所在地理位置的简单方法

    有时候坐在长途汽车或火车上 想知道现在到什么地方了 可以通过手机来简单定位 对于没有GPS功能的手机 要想知道当前所在地理位置 可以通过基站定位 具体有以下几种方法 1 直接查看基站编号 使用某些手机的工程模式 或者利用专门的软件 比如S6
  • Java中new Date().getTime()时间戳问题

    1 getTime 返回值 Java和JavaScript都支持时间类型Date 他们的getTime 方法返回的是毫秒数 默认返回的是13位数字 单位是毫秒 2 注意事项 Returns the number of millisecond
  • 无线 连接公司服务器,客户端无线连接服务器

    客户端无线连接服务器 内容精选 换一换 您可以在弹性负载均衡服务中创建一个负载均衡器 该负载均衡器会接收来自客户端的请求 并将请求转发到一个或多个可用区的后端服务器中进行处理 请求的流量分发与负载均衡器配置的分配策略类型相关 共享型和独享型
  • apache kafka_Apache Kafka简介

    apache kafka During the last years technologies for building real time data pipelines and event streaming apps have emer
  • 红队隧道应用篇之DNS协议传输(九)

    简介 DNS隧道是一种相对隐蔽的隧道 通过将其他协议封装到DNS协议中来进行传输通信 因为DNS协议是网络中的基础协议且必不可少 所以大部分防火墙和入侵检测设备是不会对DNS流量进行拦截 这就给DNS作为隐蔽通信提供了有力条件 从而可以利用
  • 程序员面试题精选100题(30)-赋值运算符重载函数[C/C++/C#]

    程序员面试题精选100题 30 赋值运算符重载函数 C C C 问题 给出如下CMyString的声明 要求为该类型添加赋值运算符函数 class CMyString public CMyString char pData NULL CMy
  • 蓝桥杯题库 历届试题部分(C++、Java)代码实现(46-60)

    文章目录 五 历届试题 PREV 46 填字母游戏 PREV 47 区间移位 PREV 48 数组操作 PREV 49 发现环 PREV 50 对局匹配 PREV 51 观光铁路 PREV 52 小数第n位 PREV 53 分考场 PREV
  • 使用 ChatGPT 总是出现「Something went wrong」解决方案

    1 前言 最近使用 ChatGPT 总是出现 Something went wrong If this issue persists please contact us through our help center at help ope