diff --git a/metamogu.js b/metamogu.js
index b6e9d58..282cf05 100644
--- a/metamogu.js
+++ b/metamogu.js
@@ -1,124 +1,124 @@
-// ==UserScript==
-// @name Metamogu 补货自动检测 (Fetch 终极版)
-// @namespace http://tampermonkey.net/
-// @version 3.0
-// @description 使用原生 Fetch 突破拦截,响应非 500 时直接替换页面或重定向,避免重复访问消耗兑换码。
-// @author Gemini
-// @match https://metamogu.sa-vrc-media.com/redeem-code/redirect*
-// @grant GM_notification
-// @run-at document-idle
-// ==/UserScript==
-
-(function() {
- 'use strict';
-
- let checkCount = 0;
- let countdownTimer = null;
-
- // 1. 创建右下角浮窗 UI
- const ui = document.createElement('div');
- ui.style.cssText = `
- position: fixed;
- bottom: 20px;
- right: 20px;
- padding: 15px 20px;
- background-color: rgba(0, 0, 0, 0.75);
- color: #00FF00;
- font-family: 'Microsoft YaHei', sans-serif;
- font-size: 14px;
- border-radius: 8px;
- z-index: 2147483647;
- box-shadow: 0 4px 10px rgba(0,0,0,0.3);
- pointer-events: none;
- backdrop-filter: blur(4px);
- line-height: 1.6;
- transition: all 0.3s ease;
- `;
- if (document.body) {
- document.body.appendChild(ui);
- } else {
- document.documentElement.appendChild(ui);
- }
-
- // 更新浮窗内容
- function updateUI(text, color = "#00FF00") {
- ui.style.color = color;
- ui.innerHTML = text;
- }
-
- // 2. 核心检测逻辑 (原生 async/await fetch)
- async function doCheck() {
- checkCount++;
- updateUI(`🔄 第 ${checkCount} 次检测中...`, "#FFD700");
-
- try {
- // 使用原生 fetch,完美伪装成正常的页面加载请求
- const response = await fetch(window.location.href, {
- method: "GET",
- cache: "no-store", // 强制不缓存,确保获取最新状态
- headers: {
- // 模拟常见的浏览器请求头,避免被 WAF 拦截
- "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
- }
- });
-
- const status = response.status;
- // 如果发生了 301/302 重定向,fetch 默认会跟随,response.redirected 会变为 true
- const finalUrl = response.url;
- const isRedirected = response.redirected;
-
- if (status === 500) {
- // 缺货状态:随机 5~30 秒倒计时
- const delaySec = Math.floor(Math.random() * (30 - 5 + 1)) + 5;
- let currentSec = delaySec;
-
- updateUI(`❌ 状态: 缺货中 (500)
⏱️ 倒计时: ${currentSec} 秒后检测
📊 累计检测: ${checkCount} 次`, "#FF4500");
- document.title = `[等待 ${currentSec}s] 监控中...`;
-
- countdownTimer = setInterval(() => {
- currentSec--;
- if (currentSec <= 0) {
- clearInterval(countdownTimer);
- doCheck();
- } else {
- updateUI(`❌ 状态: 缺货中 (500)
⏱️ 倒计时: ${currentSec} 秒后检测
📊 累计检测: ${checkCount} 次`, "#FF4500");
- document.title = `[等待 ${currentSec}s] 监控中...`;
- }
- }, 1000);
-
- } else {
- // 已补货!状态不再是 500
- updateUI(`✅ 状态: ${status}
🎉 已补货,正在处理...
📊 累计检测: ${checkCount} 次`, "#00FF00");
- document.title = `[已补货!] 状态 ${status}`;
-
- GM_notification({
- title: "🌟 Metamogu 补货啦!",
- text: `检测到状态变化,已为您渲染最新页面!`,
- timeout: 10000,
- highlight: true,
- onclick: () => window.focus()
- });
-
- // 处理 302 重定向或 200 成功
- if (isRedirected || finalUrl !== window.location.href) {
- console.log("检测到重定向,正在跳转至:", finalUrl);
- window.location.replace(finalUrl); // 使用 replace 避免产生多余的历史记录
- } else {
- console.log("状态 200,正在替换页面 DOM...");
- const htmlText = await response.text();
- document.open();
- document.write(htmlText);
- document.close();
- }
- }
- } catch (error) {
- // 请求出错处理 (例如断网或跨域异常)
- console.error("Fetch 请求出错:", error);
- updateUI(`⚠️ 网络请求异常
⏱️ 10秒后重试...
📊 累计检测: ${checkCount} 次`, "#FF6347");
- setTimeout(doCheck, 10000);
- }
- }
-
- // 启动检测
- doCheck();
+// ==UserScript==
+// @name Metamogu 补货自动检测
+// @namespace http://tampermonkey.net/
+// @version 3.0
+// @description 响应非 500 时直接替换页面或重定向。
+// @author Gemini
+// @match https://metamogu.sa-vrc-media.com/redeem-code/redirect*
+// @grant GM_notification
+// @run-at document-idle
+// ==/UserScript==
+
+(function() {
+ 'use strict';
+
+ let checkCount = 0;
+ let countdownTimer = null;
+
+ // 1. 创建右下角浮窗 UI
+ const ui = document.createElement('div');
+ ui.style.cssText = `
+ position: fixed;
+ bottom: 20px;
+ right: 20px;
+ padding: 15px 20px;
+ background-color: rgba(0, 0, 0, 0.75);
+ color: #00FF00;
+ font-family: 'Microsoft YaHei', sans-serif;
+ font-size: 14px;
+ border-radius: 8px;
+ z-index: 2147483647;
+ box-shadow: 0 4px 10px rgba(0,0,0,0.3);
+ pointer-events: none;
+ backdrop-filter: blur(4px);
+ line-height: 1.6;
+ transition: all 0.3s ease;
+ `;
+ if (document.body) {
+ document.body.appendChild(ui);
+ } else {
+ document.documentElement.appendChild(ui);
+ }
+
+ // 更新浮窗内容
+ function updateUI(text, color = "#00FF00") {
+ ui.style.color = color;
+ ui.innerHTML = text;
+ }
+
+ // 2. 核心检测逻辑 (原生 async/await fetch)
+ async function doCheck() {
+ checkCount++;
+ updateUI(`🔄 第 ${checkCount} 次检测中...`, "#FFD700");
+
+ try {
+ // 使用原生 fetch,完美伪装成正常的页面加载请求
+ const response = await fetch(window.location.href, {
+ method: "GET",
+ cache: "no-store", // 强制不缓存,确保获取最新状态
+ headers: {
+ // 模拟常见的浏览器请求头,避免被 WAF 拦截
+ "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8"
+ }
+ });
+
+ const status = response.status;
+ // 如果发生了 301/302 重定向,fetch 默认会跟随,response.redirected 会变为 true
+ const finalUrl = response.url;
+ const isRedirected = response.redirected;
+
+ if (status === 500) {
+ // 缺货状态:随机 5~30 秒倒计时
+ const delaySec = Math.floor(Math.random() * (30 - 5 + 1)) + 5;
+ let currentSec = delaySec;
+
+ updateUI(`❌ 状态: 缺货中 (500)
⏱️ 倒计时: ${currentSec} 秒后检测
📊 累计检测: ${checkCount} 次`, "#FF4500");
+ document.title = `[等待 ${currentSec}s] 监控中...`;
+
+ countdownTimer = setInterval(() => {
+ currentSec--;
+ if (currentSec <= 0) {
+ clearInterval(countdownTimer);
+ doCheck();
+ } else {
+ updateUI(`❌ 状态: 缺货中 (500)
⏱️ 倒计时: ${currentSec} 秒后检测
📊 累计检测: ${checkCount} 次`, "#FF4500");
+ document.title = `[等待 ${currentSec}s] 监控中...`;
+ }
+ }, 1000);
+
+ } else {
+ // 已补货!状态不再是 500
+ updateUI(`✅ 状态: ${status}
🎉 已补货,正在处理...
📊 累计检测: ${checkCount} 次`, "#00FF00");
+ document.title = `[已补货!] 状态 ${status}`;
+
+ GM_notification({
+ title: "🌟 Metamogu 补货啦!",
+ text: `检测到状态变化,已为您渲染最新页面!`,
+ timeout: 10000,
+ highlight: true,
+ onclick: () => window.focus()
+ });
+
+ // 处理 302 重定向或 200 成功
+ if (isRedirected || finalUrl !== window.location.href) {
+ console.log("检测到重定向,正在跳转至:", finalUrl);
+ window.location.replace(finalUrl); // 使用 replace 避免产生多余的历史记录
+ } else {
+ console.log("状态 200,正在替换页面 DOM...");
+ const htmlText = await response.text();
+ document.open();
+ document.write(htmlText);
+ document.close();
+ }
+ }
+ } catch (error) {
+ // 请求出错处理 (例如断网或跨域异常)
+ console.error("Fetch 请求出错:", error);
+ updateUI(`⚠️ 网络请求异常
⏱️ 10秒后重试...
📊 累计检测: ${checkCount} 次`, "#FF6347");
+ setTimeout(doCheck, 10000);
+ }
+ }
+
+ // 启动检测
+ doCheck();
})();
\ No newline at end of file