ChatGPT 正在内测GPT4, 比GPT3.5好用, 但api版本需要白名单,ChatGPT Web版则需要开通每月20美元的ChatGPT PLUS
但ChatGPT 配备了 CloudFlare 防火墙,不仅会检测用户访问页面时的IP, 还会每隔一段时间就断开用户(包含ChatGPT PLUS用户)的连接,
用户为了继续使用,不得不刷新页面,刷新页面还可能加载不出页面,用户体验大打折扣。
最骚的是,ChatGPT限制了用户刷新页面的次数, session请求回复: Too many requests in 1 hour. Try again later.
用户只能一小时后再试…
而ChatGPT HeartBeat 这个油猴脚本,可以每隔30秒(具体的秒数可以自定义),请求 _ssgManifest.js
文件, 原理类似服务器ssh连接登录服务器的心跳包,向服务器表明,用户仍在活跃,不要断开连接
- 安装
https://greasyfork.org/zh-CN/scripts/462967-chatgpt-heartbeat/code
ChatGPT HeartBeat 自定义请求时间
- 自定义请求时间
- 如果默认的30秒依然掉线,可以自定义为20秒
改造脚本, 直接支持ChatGPT model gpt-4链接
当我们开通ChatGPT PLUS会员后,可以直接通过 https://chat.openai.com/?model=gpt-4
直接默认选择ChatGPT4进行使用(氪金用户的爽点儿)
但是,脚本最新的0.2.5版本的 @match
匹配规则还未支持 ?model=gpt-4
,这就导致,如果我们直接访问https://chat.openai.com/?model=gpt-4
进入氪金模式(GPT4模式),脚本是不运行的…
修改方法也很简单,安装脚本后,进入油猴的Dashboard, 加一条 // @match https://chat.openai.com/?model=gpt-4
即可
编辑脚本
添加匹配规则
看脚本源码能学到很多小技巧
即使启用了脚本,Chrome浏览器的Auto Discardable
也可能会释放标签页的内存,导致页面再次被使用时,需要刷新页面重新加载,如果你对ChatGPT页面刷新深恶痛绝,可以禁用Auto Discardable
《ChatGPT HeartBeat》 下载链接
https://greasyfork.org/zh-CN/scripts/462967-chatgpt-heartbeat/code
如果无法访问以上链接,可以直接复制以下脚本内容进行安装
// ==UserScript==
// @name ChatGPT HeartBeat
// @namespace http://tampermonkey.net/
// @version 0.2.5
// @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/
// @match https://chat.openai.com/?model=gpt-4
// @match https://chat.openai.com/c/*
// @match https://chat.openai.com/chat
// @match https://chat.openai.com/chat/*
// @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 也有可能自动休眠标签页。
*/
(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);
})();
另外,ChatGPT会检测访问网页的IP, 如果你的IP被ban了,这个脚本无法帮你(我的新加坡阿里云和美国亚马逊云也被ban了,目前没找到解封的方案),我目前解决方案是,用GLaDOS家的服务,走美国代理,然后配合本文的脚本,可以稳定使用ChatGPT Web版
小结
ChatGPT 确实是很棒的工具,比Google好用的多,著名程序员问答网站Stack Overflow也因此失去了大量的访问量,这说明类似Stack Overflow的问答网站产品形态落后了,所有的问答网站,都会受到ChatGPT的影响,要么改革,要么被人忘记。