0o0O0o0O0o
V2EX  ›  OpenAI

减少 ChatGPT 官方网页需要频繁刷新的简单办法

  0o0O0o0O0o · Mar 24, 2023 · 27187 views
This topic created in 1324 days ago, the information mentioned may be changed or developed.

多开一个标签页,访问一个需要过验证但又不会有交互请求的链接,例如:

https://chat.openai.com/404

装个自动刷新的插件,我用的是 GitHub 随便找的:

https://github.com/Claxtastic/just-refresh ( jquery.min.js 已经和官网的对比过是一致的)

我设置的间隔是 3 秒,对我来说很管用,希望能帮到你们。

原理很简单,用别的更优雅的方式自然也可以实现。

Supplement 1  ·  Mar 24, 2023

油猴版本,不想装油猴就直接在对话页面的 DevTools - Console 里执行。
优雅一点,不需要多开个标签页了。
应该没人太在意 DevTools - Network 里有很多 404 请求吧?

// ==UserScript==
// @name         ChatGPT heartbeat
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       https://v2ex.com/t/926890
// @match        https://chat.openai.com/*
// @icon         https://chat.openai.com/favicon.ico
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    setInterval(function(){
        fetch('https://chat.openai.com/404');
    }, 3000);
})();
Supplement 2  ·  Mar 24, 2023

上面这个油猴脚本仅仅 fetch 404 似乎没有自动刷新那么有效,我实测还是要刷新了,干脆用 iframe 了,写法可能不好,欢迎指点:

// ==UserScript==
// @name         ChatGPT heartbeat
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       https://v2ex.com/t/926890
// @match        https://chat.openai.com/*
// @icon         https://chat.openai.com/favicon.ico
// @grant        none
// ==/UserScript==

(function () {
  var iframe = document.createElement("iframe");
  iframe.id = "heartbeat";
  iframe.style = "display:none";
  iframe.name = "heartbeat";
  iframe.src = "https://chat.openai.com/404/";
  var fn = function () {
    setTimeout(function(){
        iframe.src = "https://chat.openai.com/404/" + Math.random();
    }, 3000);
  };
  if (iframe.attachEvent) {
    iframe.attachEvent("onload", fn);
  } else {
    iframe.onload = fn;
  }
  document.body.insertBefore(iframe, document.body.firstChild);
})();

Supplement 3  ·  Mar 24, 2023

//
//
//
//

上面的油猴脚本占用太高了,风扇呼呼的。
实测 robots.txt 也有效(fetch 可能失效大概是 Cloudflare 对 Headers 的检测?)。
下面是 ChatGPT heartbeat 再也不改版,未来如果 robots.txt 无效了可以自己修改链接为 404,如果觉得每5秒请求一次太频繁了可以自己调大时间间隔。

// ==UserScript==
// @name         ChatGPT heartbeat
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  try to take over the world!
// @author       https://v2ex.com/t/926890
// @match        https://chat.openai.com/chat/*
// @icon         https://chat.openai.com/favicon.ico
// @grant        none
// ==/UserScript==

(function () {
  var iframe = document.createElement("iframe");
  iframe.id = "heartbeat";
  iframe.style = "display:none";
  iframe.name = "heartbeat";
  iframe.src = "https://chat.openai.com/robots.txt";
  var fn = function () {
    setTimeout(function(){
        document.getElementById('heartbeat').contentWindow.location.reload(true);
    }, 5000);
  };
  if (iframe.attachEvent) {
    iframe.attachEvent("onload", fn);
  } else {
    iframe.onload = fn;
  }
  document.body.insertBefore(iframe, document.body.firstChild);
})();

Supplement 4  ·  Mar 25, 2023

绝对不会再改版

// ==UserScript==
// @name         ChatGPT heartbeat
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  try to take over the world!
// @author       https://v2ex.com/t/926890
// @match        https://chat.openai.com/chat*
// @icon         https://chat.openai.com/favicon.ico
// @grant        none
// ==/UserScript==

/*
  需要保持非常久的,可以额外尝试在 chrome://discards 里禁用 `Auto Discardable`,
  或者用 https://github.com/WorldLanguages/DoNotDiscard
  否则就算保持了 Cookies 有效,Chrome 也有可能自动休眠标签页。
*/
(function () {
  var count = 0;
  var iframe = document.createElement("iframe");
  iframe.id = "heartbeat";
  iframe.style = "display:none";
  iframe.name = "heartbeat";
  iframe.src = "https://chat.openai.com/robots.txt";
  var fn = function () {
    setTimeout(function () {
      if (count++ % 60 === 59) {
        iframe.src = "https://chat.openai.com/404";
      } else if (iframe.src === "https://chat.openai.com/robots.txt") {
        iframe.contentWindow.location.reload(true);
      } else {
        iframe.src = "https://chat.openai.com/robots.txt";
      }
    }, Math.floor(Math.random() * 5) * 1000 + 5000);
  };
  if (iframe.attachEvent) {
    iframe.attachEvent("onload", fn);
  } else {
    iframe.onload = fn;
  }
  document.head.insertBefore(iframe, document.head.firstChild);
})();

Supplement 5  ·  Mar 28, 2023

绝对绝对不会再改版

// ==UserScript==
// @name         ChatGPT heartbeat
// @namespace    http://tampermonkey.net/
// @version      0.2.1
// @description  try to take over the world!
// @author       https://v2ex.com/t/926890
// @match        https://chat.openai.com/chat*
// @icon         https://chat.openai.com/favicon.ico
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// ==/UserScript==

/*
  需要保持非常久的,可以额外尝试在 chrome://discards 里禁用 `Auto Discardable`,
  或者用 https://github.com/WorldLanguages/DoNotDiscard
  否则就算保持了 Cookies 有效,Chrome 也有可能自动休眠标签页。
*/
(function () {
    var refreshURL = 'https://chat.openai.com/_next/static/k9OKjvwgjWES7JT3k-6g9/_ssgManifest.js';
    var refreshInterval = 30 * 1000;

    var iframe = document.createElement('iframe');
    iframe.id = 'heartbeat';
    iframe.style = 'display:none';
    iframe.name = 'heartbeat';
    iframe.src = refreshURL;
    document.head.insertBefore(iframe, document.head.firstChild);
    setInterval(function () {
        if (iframe.contentWindow.location.href === refreshURL) {
            iframe.contentWindow.location.reload(true);
        }
    }, refreshInterval)
})();

Supplement 6  ·  Mar 31, 2023
86 replies  •  2023-11-15 16:57:16 +08:00
yiios
yiios
Mar 24, 2023
1
好思路
0x535
0x535
Mar 24, 2023
2
问了 ChatGPT ,它说不想装插件,用油猴脚本也可以。试了一下,确实可以,目前情绪稳定😄 不知道后面会不会出问题

```js
(function() {
'use strict';
setInterval(function(){
location.reload();
}, 3000);
})();
```
bigtear
bigtear
Mar 24, 2023
3
尝试一下
arzyu
arzyu
Mar 24, 2023
4
这个方法不错!
autoxbc
autoxbc
Mar 24, 2023
5
@0x535 #2 这个 ChatGPT 代码能力不行,reload() 执行后上下文都会销毁,回调不会执行第二次,此处用 setInterval 是思路不清
X-Force
X-Force
Mar 24, 2023
6
我让 ChatGPT 帮忙写了一个油猴脚本,每隔 2 分钟发送一句“ping”,Ai 会回答 pong 。然后,就没有然后了,就这样。
X-Force
X-Force
Mar 24, 2023
7
不必多开,不必刷新。只是有污染聊天记录,虽然没有根治验证的问题,但基本上算是解决烦人的问题
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 24, 2023 via iPhone
8
@autoxbc #5 他说的是油猴,所以还是可以的吧
0x535
0x535
Mar 24, 2023
9
@autoxbc 它说了,用油猴脚本。它给的回答里有油猴脚本的配置信息。
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 24, 2023 via iPhone
10
@X-Force 那我建议你用油猴请求不存在的页面,而不是对话,毕竟 openai 资源紧张,被找理由 ban 了就不好了。其实就是带上 cookie 让 cloudflare 知道你请求了就行。
Lentin
Lentin
Mar 24, 2023
11
@autoxbc #5 猴脚本跟上下文没有关系,每次刷新页面都会注入
Vitta
Vitta
Mar 24, 2023
12
你把 userAgent 改成 safari 的 试试。我改了之后不管他好久还能继续用
autoxbc
autoxbc
Mar 24, 2023❤️1
13
@0o0O0o0O0o #8
@0x535 #9
@Lentin #11
看来我没说清楚,我知道这是油猴,知道这不是控制台的注入。我的意思是,这里只用 setTimeout 就足够了,页面重载会重新注入这段代码,不需要 setInterval 来维持调度。反过来说,他试图用 setInterval 来维持调度说明对浏览器,对油猴理解不够
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 24, 2023 via iPhone
14
@autoxbc #13 哈哈,要是对它的期望是“能跑就行”那倒不错
GG668v26Fd55CP5W
GG668v26Fd55CP5W
Mar 24, 2023
15
简单粗暴,但真的有用,帮上大忙了!
unifier
unifier
Mar 24, 2023
16
简单粗暴但有效,就喜欢这种方法
yinyu
yinyu
Mar 24, 2023
17
我想说,每三秒自动刷新,是不是每三秒他需要回你一次,爽了自己苦了别人啊
(啥脚本啊,我马上去下载,我有油猴。狗头.ipg )
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 24, 2023 via iPhone
18
@yinyu #17 不需要的,考虑到这一点了,所以请求的是不存在的页面,对 OpenAI 服务器造成的负担会很小
unifier
unifier
Mar 24, 2023
19
@yinyu
@0o0O0o0O0o
3 秒有点太频繁了,实测刷新间隔 30 秒,坚持 30 分钟不断没问题,(可能更长,但是还没用到那么长时间 2333 )
yinyu
yinyu
Mar 24, 2023
20
原来是请求一个不会交互的页面,妙啊,但是感觉官网有时候也抽风,可能是我机场的问题,有时候也是吐字很慢。不如白嫖的 API
nijux
nijux
Mar 24, 2023
21
可以让 ChatGPT 改成随机 3~15 秒访问一次
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 24, 2023
22
@nijux #21 嗯,要是访问 404 页面没有效果我应该就会加上随机了,仅仅访问 404 页面感觉不太容易被风控关照到
XnEnokq9vkvVq4
XnEnokq9vkvVq4
Mar 24, 2023
23
妙啊,有效降低 plus 套餐的吸引力(
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 24, 2023
25
@Lentin #24

嗯,有两种进入对话的方式

- 访问 https://chat.openai.com/chat 或者 https://chat.openai.com/chat/ 然后跳转到 https://chat.openai.com/chat
- 访问某个确定的对话,也就是 https://chat.openai.com/chat/<uuid>

所以可能还是

// @match https://chat.openai.com/chat*

更好些?
zkncu9zjczw
zkncu9zjczw
Mar 25, 2023
26
请问这是什么原理 感觉很强
autoxbc
autoxbc
Mar 25, 2023❤️1
27
iframe 的思路很好,我个人的技巧是把 iframe 插入 head ,这样不需要指定 style 就会自动隐藏
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 25, 2023
28
@zkncu9zjczw #26 Cloudflare 的策略问题吧,大概是保持交互 Cloudflare 就认为你活跃?没具体分析过,大概原理没错。
ysq
ysq
Mar 25, 2023
29
s 升了 plus 就不用每次刷新了
X-Force
X-Force
Mar 25, 2023
30
if (count++ % 60 === 59) { iframe.src = "https://chat.openai.com/404"; ....

这句的目的是什么?只访问 robot.txt 不行?一定还要偶尔访问下 404 页面吗?
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 25, 2023
31
@X-Force #30 我没去求证,凭感觉写的,因为如果要验证效果有点耗时间。。。robots.txt 仅仅是带着 Cookie 请求一下,但在需要刷新甚至需要重新验证时它是不跳转的,404 在需要刷新的时候则会跳转
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 25, 2023
32
@X-Force #30 所以干脆隔一段时间就加载一下 404
arzyu
arzyu
Mar 25, 2023
33
我设置 2 分钟一刷完全没问题。
cs3230524
cs3230524
Mar 26, 2023
34
付费吧,就稳定了。
cs3230524
cs3230524
Mar 26, 2023
35
大伙都是程序员行业了,这 100 多的投资很值啊。把精力放在搞钱上吧。。。
yinyu
yinyu
Mar 27, 2023
36
为啥我运行了最后一版的油猴,长期不刷新还是会报错。是因为我梯子太辣鸡了吗?
Lentin
Lentin
Mar 27, 2023❤️1
37
这个请求可以触发 CF 的验证而且占用资源很少

https://chat.openai.com/_next/static/k9OKjvwgjWES7JT3k-6g9/_ssgManifest.js
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 27, 2023 via iPhone
38
@yinyu #36 你试试用 #37 的替换 404
brainor
brainor
Mar 27, 2023
39
greasy fork 里看到一个[这个]( https://greasyfork.org/en/scripts/462422-chatgpt-auto-refresh )
作者貌似还弄了好几个[script]( https://github.com/adamlui/userscripts/tree/master/chatgpt ) ~
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 27, 2023
40
@brainor 这个牛,油猴原来还可以有菜单的
brainor
brainor
Mar 27, 2023
41
@0o0O0o0O0o 但是我发现这个脚本貌似没有用 hh
EeveeRibbon
EeveeRibbon
Mar 28, 2023
42
有一个小问题,就是每一次发起请求,油猴的图标右下角,显示当前启用脚本数量的那个红色数字就加一,静置一会那个数字都跑到好几百了,不知道这个在哪里设置
hun2008hun
hun2008hun
Mar 28, 2023
43
@qiaofanxing 我也发现了,不知道怎么搞
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 28, 2023
44
@qiaofanxing
@hun2008hun

你们试试最新附言的版本呢? 0.2.1
160
160
Mar 28, 2023
45
@qiaofanxing 打开 Tampermonkey 的设置,配置模式设置为“高级”,然后找到“操作菜单”,找到“标记点信息”,选择”已禁用“或者”运行的脚本数量“,最后保存就不会一直增加了。
Losir
Losir
Mar 30, 2023
46
用了 0.2.1 版,被 ban 了一小时,发消息都是回复“Too many requests in 1 hour. Try again later.”,是不是这个方法不行了?
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 30, 2023
47
@autoxbc

这个页面监听了事件,有事件就会在本地检测 session 是否超时( 348e4 ),就会强制刷新。对于这种情况一般怎么用油猴修改呢?

hook addEventListener 效果很差,js 文件也不好拦截修改
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 30, 2023
48
@Losir #46 我倒是没遇到过这个报错,搜了下也不算 ban ,就是一小时内对话太多?这个脚本是避免增加和 OpenAI 的交互的,所以大概不是它引起的
autoxbc
autoxbc
Mar 30, 2023❤️1
49
@0o0O0o0O0o #47 这个应该是官方的自动刷新机制,我觉得应该够用,然后就把油猴实现停掉了

如果对官方这个效果不满意想自己实现,可以拦截 addEventListener ,当 type 参数为 focus 和 focusin 时,把监听请求丢弃掉

有一点要注意,拦截 addEventListener 不应该这样写
globalThis.addEventListener = function(){}

因为油猴的沙盒机制要求对顶级对象的写操作要显式使用 unsafeWindow ;同时也不能这样写
unsafeWindow.addEventListener = function(){}

因为 addEventListener 有多个入口,比如 document.addEventListener ;正确的做法是
EventTarget.prototype.addEventListener = function(){}

EventTarget 是可监听对象的统一抽象原型
0o0O0o0O0o
0o0O0o0O0o
OP
Mar 31, 2023
50
@autoxbc #49 谢谢,很有帮助!发布到 greasyfork 了,https://greasyfork.org/scripts/462967
vxzhong
vxzhong
Mar 31, 2023
51
有用,感谢。
Lentin
Lentin
Apr 3, 2023❤️1
52
我也搞了一版,自动寻找页面上的 js 链接,顺便让 gpt 优化了下代码
(function() {
const manifestScript = document.querySelector('script[src*="_ssgManifest.js"]');
if (!manifestScript) return;

const heartbeat = Object.assign(document.createElement('iframe'), { style: 'display:none' });
document.head.prepend(heartbeat);

setInterval(() => heartbeat.src = `${manifestScript.src}?${Date.now()}`, 30000);
})();
tlerbao
tlerbao
Apr 11, 2023
53
@0o0O0o0O0o 我这边点安装脚本后 一闪什么也没有,脚本主页安装按钮变成了重新安装,但是油猴按钮显示没有在运行的脚本是怎么回事?
0o0O0o0O0o
0o0O0o0O0o
OP
Apr 11, 2023
54
@tlerbao #53

1. 重启浏览器
2. 确认油猴是 Enabled 状态
3. 进油猴的 Dashboard 看看是不是正常安装了
4. 匹配的 URL 是 `https://chat.openai.com/chat*`

要是还不行我也不了解了
tlerbao
tlerbao
Apr 11, 2023
55
@0o0O0o0O0o 我群友说他亲测,买了一台国外服务器,然后直接远程到服务器上面开浏览器用,不用刷新。。。。他说是独占 IP 的就不会频繁刷新
0o0O0o0O0o
0o0O0o0O0o
OP
Apr 11, 2023 via iPhone
56
@tlerbao #55 我是用的便宜 VPS+ warp ,成本比较低
haibbo
haibbo
Apr 11, 2023
57
0o0O0o0O0o
0o0O0o0O0o
OP
Apr 11, 2023
58
@haibbo #57 试试最新版 0.2.4
tlerbao
tlerbao
Apr 11, 2023
59
@0o0O0o0O0o 刚测了一下,没有用,还是需要刷新
Biluesgakki
Biluesgakki
Apr 12, 2023
60
和我想到一块了哈哈 刚写了个脚本 60 秒刷新以下页面
yazoox
yazoox
Apr 13, 2023
61
@0o0O0o0O0o OP 你这个脚本到底 是 30 秒还是 2 分钟刷新一下?
0o0O0o0O0o
0o0O0o0O0o
OP
Apr 13, 2023
62
@yazoox #61 30 秒,代码里的 2 分钟是应对一些特殊情况,比如 iframe 中的请求触发了 cloudflare challenge ,但 2 分钟还没跳转完就让 iframe 重新加载
jiang24gdufs
jiang24gdufs
Apr 13, 2023
63
@0o0O0o0O0o 我是把这段 js 脚本放在控制台运行,但是现在已经不好用了, 执行两轮就报 403 了
0o0O0o0O0o
0o0O0o0O0o
OP
Apr 13, 2023❤️1
64
@jiang24gdufs #63

我在用 0.2.4 ,chrome://discard 禁用了 Auto Discardable ,放置一个小时之后还是能直接对话。

发布在 greasyfork 上的引入了 MonkeyConfig ,控制台直接运行是不行的
jiang24gdufs
jiang24gdufs
Apr 13, 2023
65
@0o0O0o0O0o 🥰用 greasyfork 体验果然好多了, 不过想问问, 配置的 url 是固定的吗, 有没有必要参考#52 做成自动获取?
0o0O0o0O0o
0o0O0o0O0o
OP
Apr 13, 2023
66
@jiang24gdufs #65

已经是自动获取了,也可以自定义配置 _ssgManifest js 以外的 URL 和刷新间隔
NouveauNom
NouveauNom
Apr 13, 2023
67
@0o0O0o0O0o 请问 edge 没有 edge://discard 是吗
NouveauNom
NouveauNom
Apr 13, 2023
68
@0o0O0o0O0o 找到了,是 edge://discards/
0o0O0o0O0o
0o0O0o0O0o
OP
Apr 14, 2023
70
@vxzhong #69 谢谢,已更新
jiang24gdufs
jiang24gdufs
Apr 14, 2023
71
@0o0O0o0O0o 加了油猴插件, 但是脚本不自动执行是什么原因? 我已经启用了该脚本.
0o0O0o0O0o
0o0O0o0O0o
OP
Apr 14, 2023 via iPhone❤️1
72
@jiang24gdufs #71 参考 #69 ,0.2.5 版本
glouhao
glouhao
Apr 15, 2023
73
你还是更新了,0.25 版本好用,谢谢大佬
tgz2018
tgz2018
Apr 15, 2023
74
太感谢您了
tgz2018
tgz2018
Apr 15, 2023
75
手机安装不了油猴,那怎么实现这个呢,有时候手机也用来访问下 chatgpt
randychoi
randychoi
Apr 17, 2023 via Android
76
@tgz2018 手机端( iOS )

Safari:Tampermonkey 或 Userscripts
Gear:(不需要其他软件)

(Android)


Firefox: Tampermonkey
xamo
xamo
Apr 18, 2023
77
感谢,非常有用!
zhiyu1998
zhiyu1998
Apr 19, 2023
78
谢谢大佬
yyzq007
yyzq007
Apr 20, 2023
79
有用,感谢大佬
geekyouth
geekyouth
Apr 23, 2023
80
我发现开了香港全局代理,也可以顺利使用 chatgpt web 页面
ffkjjj
ffkjjj
Apr 23, 2023
81
isbase
isbase
Apr 23, 2023
82
@ffkjjj #81 直接这样一条是不是就可以了

// @match https://chat.openai.com/*
ffkjjj
ffkjjj
Apr 24, 2023 via iPhone
83
@isbase 是的
0o0O0o0O0o
0o0O0o0O0o
OP
Apr 24, 2023
84
@ffkjjj
@isbase

谢谢,已更新
michael27
michael27
Apr 24, 2023
85
感觉更新了之后反而不好用了,更新之后几乎每次都要报错 an error occurred
goodgoodstudy
goodgoodstudy
Nov 15, 2023
86
在 edge 浏览器上用不了,报错 Failed to read a named property 'href' from 'Location': Blocked a frame with origin "https://chat.openai.com" from accessing a cross-origin frame.
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1663 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 88ms · UTC 02:49 · PVG 10:49 · LAX 18:49 · JFK 21:49
♥ Do have faith in what you're doing.