如何实现无感知网页重载?视频流页面自动保活技术问询
两种解决视频流自动停止的Greasemonkey方案
我刚好碰到过类似的视频流超时问题,给你两个实用的脚本方案,按需选择:
方案一:每5分钟无感知重载页面
这个脚本会定时刷新当前页面,而且可以做到几乎无感知(前提是视频流页面刷新后能自动恢复播放,很多视频站都支持)。
// ==UserScript== // @name Auto-Reload Video Stream // @namespace http://tampermonkey.net/ // @version 0.1 // @description 每5分钟自动重载页面,解决视频流停止问题 // @author You // @match https://your-video-stream-url.com/* // 替换成你的视频流页面URL // @grant none // ==/UserScript== (function() { 'use strict'; // 5分钟 = 300000毫秒 const reloadInterval = 300000; // 定时重载页面 setInterval(() => { // 可选:如果页面有播放状态,可以先判断是否在播放再重载,避免不必要刷新 // const video = document.querySelector('video'); // if (video && !video.paused) { location.reload(); // } }, reloadInterval); })();
注意事项:
- 把
@match里的URL替换成你实际的视频流页面地址,确保脚本只在目标页面运行 - 如果视频站刷新后需要手动点击播放,你可以在脚本里加一段自动触发播放的代码,比如找到video元素后调用
video.play()
方案二:后台发送保活请求(推荐)
这个方案更友好,不需要重载页面,只是定期在后台向服务器发送请求,保持会话活跃,完全不影响当前页面的焦点和播放状态。
// ==UserScript== // @name Video Stream Keep-Alive // @namespace http://tampermonkey.net/ // @version 0.1 // @description 后台定时发送保活请求,避免视频流停止 // @author You // @match https://your-video-stream-url.com/* // 替换成你的视频流页面URL // @grant GM_xmlhttpRequest // ==/UserScript== (function() { 'use strict'; // 每5分钟发送一次请求 const keepAliveInterval = 300000; // 保活请求的URL,一般用当前页面的URL或者网站的会话保持接口 const keepAliveUrl = window.location.href; setInterval(() => { // 使用GM_xmlhttpRequest在后台发送请求,不会影响当前页面 GM_xmlhttpRequest({ method: 'GET', url: keepAliveUrl, credentials: 'include', // 携带会话Cookie,确保服务器识别你的会话 onload: function(response) { console.log('保活请求发送成功:', response.status); }, onerror: function(error) { console.error('保活请求失败:', error); } }); }, keepAliveInterval); })();
注意事项:
- 同样要替换
@match的URL为目标页面地址 - 如果网站有特定的保活接口,可以把
keepAliveUrl改成那个接口的地址 - 有些网站会检查请求头,你可能需要添加
headers字段,比如headers: { 'X-Requested-With': 'XMLHttpRequest' }来模拟AJAX请求,避免被拦截
这两个方案都能解决你的问题,个人更推荐方案二,因为完全不会干扰当前的播放体验~
内容的提问来源于stack exchange,提问作者petert555
相关产品推荐
相关产品推荐

