cloudflare
tcp/443 tcp/80 tcp/8443
Exposing Swagger/OpenAPI documentation is primarily a risk if your API has underlying security flaws, as it gives attackers a precise roadmap to find them.
Those detail every endpoint, parameter, and data model, making it easier to discover and exploit vulnerabilities like broken access control or injection points.
While a perfectly secure API mitigates the danger, protecting your documentation is a critical layer of defense that forces attackers to work without a map.
Severity: info
Fingerprint: 5733ddf49ff49cd1926e27d0926e27d0926e27d0926e27d0926e27d0926e27d0
Public Swagger UI/API detected at path: /webjars/swagger-ui/index.html
Exposing Swagger/OpenAPI documentation is primarily a risk if your API has underlying security flaws, as it gives attackers a precise roadmap to find them.
Those detail every endpoint, parameter, and data model, making it easier to discover and exploit vulnerabilities like broken access control or injection points.
While a perfectly secure API mitigates the danger, protecting your documentation is a critical layer of defense that forces attackers to work without a map.
Severity: info
Fingerprint: 5733ddf49ff49cd1926e27d0926e27d0926e27d0926e27d0926e27d0926e27d0
Public Swagger UI/API detected at path: /webjars/swagger-ui/index.html
Exposing Swagger/OpenAPI documentation is primarily a risk if your API has underlying security flaws, as it gives attackers a precise roadmap to find them.
Those detail every endpoint, parameter, and data model, making it easier to discover and exploit vulnerabilities like broken access control or injection points.
While a perfectly secure API mitigates the danger, protecting your documentation is a critical layer of defense that forces attackers to work without a map.
Severity: info
Fingerprint: 5733ddf49ff49cd1926e27d0926e27d0926e27d0926e27d0926e27d0926e27d0
Public Swagger UI/API detected at path: /webjars/swagger-ui/index.html
Open service 2a06:98c1:3120::3:8443 · gsq3.gaoops.com
2026-01-23 13:48
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 13:48:08 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Cache-Control: no-cache, no-store, must-revalidate
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=FzuxTAQyvqBsquUD8QZqDzvbvEMwhTXEceNKLqDx%2BZMKiuz%2FEB8GnvjtrDWuSZq3zvad%2BLuDvSOm%2BYAM4tbWE8eeoP7%2BIzQrFcrHpQNo%2Be5cD6oeaBTxg47bpA%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=18,cfOrigin;dur=144
cf-cache-status: DYNAMIC
CF-RAY: 9c27bf3918e3fe11-SIN
alt-svc: h3=":8443"; ma=86400
Page title: 冰雪传奇 - 经典复刻,散人天堂
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<link rel="shortcut icon" href="https://image.gaoops.com/favicon.ico">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>冰雪传奇 - 经典复刻,散人天堂</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700;900&display=swap');
body {
font-family: 'Noto Sans SC', sans-serif;
background-color: #020617;
color: #e2e8f0;
margin: 0;
overflow-x: hidden;
-webkit-tap-highlight-color: transparent;
}
.bg-ice {
background: radial-gradient(circle at top, #1e3a8a 0%, #020617 70%);
}
.text-glow {
text-shadow: 0 0 15px rgba(59, 130, 246, 0.8), 0 0 30px rgba(59, 130, 246, 0.4);
}
.btn-shimmer {
position: relative;
overflow: hidden;
}
.btn-shimmer::after {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: linear-gradient(45deg, transparent, rgba(255,255,255,0.3), transparent);
transform: rotate(45deg);
animation: shimmer 3s infinite;
}
@keyframes shimmer {
0% { transform: translateX(-100%) rotate(45deg); }
100% { transform: translateX(100%) rotate(45deg); }
}
.snowflake {
position: fixed;
top: -10px;
background: white;
border-radius: 50%;
pointer-events: none;
opacity: 0.6;
z-index: 1;
animation: fall linear infinite;
}
@keyframes fall {
to { transform: translateY(105vh); }
}
</style>
<link rel="stylesheet" href="/index.css">
</head>
<body>
<div id="root"></div>
<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@18.2.0",
"react-dom": "https://esm.sh/react-dom@18.2.0/client",
"htm": "https://esm.sh/htm@3.1.1",
"lucide-react": "https://esm.sh/lucide-react@0.263.1"
}
}
</script>
<script type="module">
import React, { useState, useEffect } from 'react';
import ReactDOM from 'react-dom';
import htm from 'htm';
import * as lucide from 'lucide-react';
const html = htm.bind(React.createElement);
const GAME_URL = "http://47.108.202.100/";
const WECHAT_QR = "https://image.gaoops.com/wechat2.png";
const SnowBackground = () => {
const [flakes, setFlakes] = useState([]);
useEffect(() => {
const count = 120;
setFlakes(Array.from({ length: count }).map((_, i) => ({
id: i,
left: Math.random() * 100 + '%',
duration: (Math.random() * 10 + 10) + 's',
delay: (Math.random() * 8) + 's',
size: (Math.random() * 3 + 1.5) + 'px',
opacity: Math.random() * 0.5 + 0.2
})));
}, []);
return html`
<div className="fixed inset-0 pointer-events-none z-0">
${flakes.map(f => html`
<div key=${f.id} className="snowflake" style=${{
left: f.left,
animationDuration: f.duration,
animationDelay: f.delay,
width: f.size,
height: f.size,
opacity: f.opacity
}}></div>
`)}
</div>
`;
};
const WeChatContact = () => {
const [show, setShow] = useState(false);
const [imgError, setImgError] = useState(f
Open service 2a06:98c1:3120::3:80 · gsq3.gaoops.com
2026-01-23 13:48
HTTP/1.1 301 Moved Permanently
Date: Fri, 23 Jan 2026 13:48:08 GMT
Content-Length: 0
Connection: close
Location: https://gsq3.gaoops.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=YCdBWIoehbuC9%2FmqJGn1gWSyMNTb%2Bd4uwb3VZZWdzmRD0r3kdiqv9I6pzqPAUipPZojXiVS%2F3caOvFcqVg8t%2B3WzDVJgDtV2hlQ0qpl1zllR0bhQ2UM6aV6Zdg%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=25,cfOrigin;dur=17
cf-cache-status: DYNAMIC
CF-RAY: 9c27bf382ee9eba0-SIN
alt-svc: h3=":443"; ma=86400
Open service 188.114.97.3:443 · gsq3.gaoops.com
2026-01-23 13:48
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 13:48:09 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Cache-Control: no-cache, no-store, must-revalidate
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=FLTIRrJzhVjQTuut4N9b7qlj4ZSyT7WxmaIYkdSKiOpTtKbE84AOORfEwS1AFM2aVgOIBEGI3weya7nlCnSujzfdekC2JOe1O%2BD6lQQDNQ%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=12,cfOrigin;dur=951
cf-cache-status: DYNAMIC
CF-RAY: 9c27bf3b6a2d29f2-BOM
alt-svc: h3=":443"; ma=86400
Page title: 冰雪传奇 - 经典复刻,散人天堂
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<link rel="shortcut icon" href="https://image.gaoops.com/favicon.ico">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>冰雪传奇 - 经典复刻,散人天堂</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700;900&display=swap');
body {
font-family: 'Noto Sans SC', sans-serif;
background-color: #020617;
color: #e2e8f0;
margin: 0;
overflow-x: hidden;
-webkit-tap-highlight-color: transparent;
}
.bg-ice {
background: radial-gradient(circle at top, #1e3a8a 0%, #020617 70%);
}
.text-glow {
text-shadow: 0 0 15px rgba(59, 130, 246, 0.8), 0 0 30px rgba(59, 130, 246, 0.4);
}
.btn-shimmer {
position: relative;
overflow: hidden;
}
.btn-shimmer::after {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: linear-gradient(45deg, transparent, rgba(255,255,255,0.3), transparent);
transform: rotate(45deg);
animation: shimmer 3s infinite;
}
@keyframes shimmer {
0% { transform: translateX(-100%) rotate(45deg); }
100% { transform: translateX(100%) rotate(45deg); }
}
.snowflake {
position: fixed;
top: -10px;
background: white;
border-radius: 50%;
pointer-events: none;
opacity: 0.6;
z-index: 1;
animation: fall linear infinite;
}
@keyframes fall {
to { transform: translateY(105vh); }
}
</style>
<link rel="stylesheet" href="/index.css">
</head>
<body>
<div id="root"></div>
<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@18.2.0",
"react-dom": "https://esm.sh/react-dom@18.2.0/client",
"htm": "https://esm.sh/htm@3.1.1",
"lucide-react": "https://esm.sh/lucide-react@0.263.1"
}
}
</script>
<script type="module">
import React, { useState, useEffect } from 'react';
import ReactDOM from 'react-dom';
import htm from 'htm';
import * as lucide from 'lucide-react';
const html = htm.bind(React.createElement);
const GAME_URL = "http://47.108.202.100/";
const WECHAT_QR = "https://image.gaoops.com/wechat2.png";
const SnowBackground = () => {
const [flakes, setFlakes] = useState([]);
useEffect(() => {
const count = 120;
setFlakes(Array.from({ length: count }).map((_, i) => ({
id: i,
left: Math.random() * 100 + '%',
duration: (Math.random() * 10 + 10) + 's',
delay: (Math.random() * 8) + 's',
size: (Math.random() * 3 + 1.5) + 'px',
opacity: Math.random() * 0.5 + 0.2
})));
}, []);
return html`
<div className="fixed inset-0 pointer-events-none z-0">
${flakes.map(f => html`
<div key=${f.id} className="snowflake" style=${{
left: f.left,
animationDuration: f.duration,
animationDelay: f.delay,
width: f.size,
height: f.size,
opacity: f.opacity
}}></div>
`)}
</div>
`;
};
const WeChatContact = () => {
const [show, setShow] = useState(false);
const [imgError, setImgError] = useState(f
Open service 2a06:98c1:3121::3:8443 · gsq3.gaoops.com
2026-01-23 13:48
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 13:48:08 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Cache-Control: no-cache, no-store, must-revalidate
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=K9iq7x3EcmFtOt4ZZIR3Vah9rw%2B3MB%2BrUzWnELeEwqaOtQnl25Zehieab8oI8tC10mG6RB%2Fmdml4PfPuB%2BP6mquhCkxUmXicZvY5Qcv38AigKpBRko1%2BtfR8EQ%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c27bf38d8db975c-FRA
alt-svc: h3=":8443"; ma=86400
Page title: 冰雪传奇 - 经典复刻,散人天堂
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<link rel="shortcut icon" href="https://image.gaoops.com/favicon.ico">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>冰雪传奇 - 经典复刻,散人天堂</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700;900&display=swap');
body {
font-family: 'Noto Sans SC', sans-serif;
background-color: #020617;
color: #e2e8f0;
margin: 0;
overflow-x: hidden;
-webkit-tap-highlight-color: transparent;
}
.bg-ice {
background: radial-gradient(circle at top, #1e3a8a 0%, #020617 70%);
}
.text-glow {
text-shadow: 0 0 15px rgba(59, 130, 246, 0.8), 0 0 30px rgba(59, 130, 246, 0.4);
}
.btn-shimmer {
position: relative;
overflow: hidden;
}
.btn-shimmer::after {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: linear-gradient(45deg, transparent, rgba(255,255,255,0.3), transparent);
transform: rotate(45deg);
animation: shimmer 3s infinite;
}
@keyframes shimmer {
0% { transform: translateX(-100%) rotate(45deg); }
100% { transform: translateX(100%) rotate(45deg); }
}
.snowflake {
position: fixed;
top: -10px;
background: white;
border-radius: 50%;
pointer-events: none;
opacity: 0.6;
z-index: 1;
animation: fall linear infinite;
}
@keyframes fall {
to { transform: translateY(105vh); }
}
</style>
<link rel="stylesheet" href="/index.css">
</head>
<body>
<div id="root"></div>
<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@18.2.0",
"react-dom": "https://esm.sh/react-dom@18.2.0/client",
"htm": "https://esm.sh/htm@3.1.1",
"lucide-react": "https://esm.sh/lucide-react@0.263.1"
}
}
</script>
<script type="module">
import React, { useState, useEffect } from 'react';
import ReactDOM from 'react-dom';
import htm from 'htm';
import * as lucide from 'lucide-react';
const html = htm.bind(React.createElement);
const GAME_URL = "http://47.108.202.100/";
const WECHAT_QR = "https://image.gaoops.com/wechat2.png";
const SnowBackground = () => {
const [flakes, setFlakes] = useState([]);
useEffect(() => {
const count = 120;
setFlakes(Array.from({ length: count }).map((_, i) => ({
id: i,
left: Math.random() * 100 + '%',
duration: (Math.random() * 10 + 10) + 's',
delay: (Math.random() * 8) + 's',
size: (Math.random() * 3 + 1.5) + 'px',
opacity: Math.random() * 0.5 + 0.2
})));
}, []);
return html`
<div className="fixed inset-0 pointer-events-none z-0">
${flakes.map(f => html`
<div key=${f.id} className="snowflake" style=${{
left: f.left,
animationDuration: f.duration,
animationDelay: f.delay,
width: f.size,
height: f.size,
opacity: f.opacity
}}></div>
`)}
</div>
`;
};
const WeChatContact = () => {
const [show, setShow] = useState(false);
const [imgError, setImgError] = useState(f
Open service 188.114.97.3:80 · gsq3.gaoops.com
2026-01-23 13:48
HTTP/1.1 301 Moved Permanently
Date: Fri, 23 Jan 2026 13:48:08 GMT
Content-Length: 0
Connection: close
Location: https://gsq3.gaoops.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=Cfg3VQylukNzwb8khW0wF8Fv9j36NCz6DBXPoiZtWHVY7j1hsJOfSgt1kO7YxV2jXswlhYTm1RX64wxZzKd1a4QIxzRZUJcDTrEaW7XPeg%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c27bf36bdbedef8-AMS
alt-svc: h3=":443"; ma=86400
Open service 188.114.97.3:8443 · gsq3.gaoops.com
2026-01-23 13:48
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 13:48:08 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Cache-Control: no-cache, no-store, must-revalidate
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=sKsnzSMwNcWfpyTJ7yCtlFjS8nvD9NLGFTDYdsBh5CbhKuWBXWf8dIBJwcULRPORIsixaH7Jbzclp1qvMdy5NauXOApdkLCvZvnZUp65rw%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=13,cfOrigin;dur=217
cf-cache-status: DYNAMIC
CF-RAY: 9c27bf388d46ab7e-YYZ
alt-svc: h3=":8443"; ma=86400
Page title: 冰雪传奇 - 经典复刻,散人天堂
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<link rel="shortcut icon" href="https://image.gaoops.com/favicon.ico">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>冰雪传奇 - 经典复刻,散人天堂</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700;900&display=swap');
body {
font-family: 'Noto Sans SC', sans-serif;
background-color: #020617;
color: #e2e8f0;
margin: 0;
overflow-x: hidden;
-webkit-tap-highlight-color: transparent;
}
.bg-ice {
background: radial-gradient(circle at top, #1e3a8a 0%, #020617 70%);
}
.text-glow {
text-shadow: 0 0 15px rgba(59, 130, 246, 0.8), 0 0 30px rgba(59, 130, 246, 0.4);
}
.btn-shimmer {
position: relative;
overflow: hidden;
}
.btn-shimmer::after {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: linear-gradient(45deg, transparent, rgba(255,255,255,0.3), transparent);
transform: rotate(45deg);
animation: shimmer 3s infinite;
}
@keyframes shimmer {
0% { transform: translateX(-100%) rotate(45deg); }
100% { transform: translateX(100%) rotate(45deg); }
}
.snowflake {
position: fixed;
top: -10px;
background: white;
border-radius: 50%;
pointer-events: none;
opacity: 0.6;
z-index: 1;
animation: fall linear infinite;
}
@keyframes fall {
to { transform: translateY(105vh); }
}
</style>
<link rel="stylesheet" href="/index.css">
</head>
<body>
<div id="root"></div>
<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@18.2.0",
"react-dom": "https://esm.sh/react-dom@18.2.0/client",
"htm": "https://esm.sh/htm@3.1.1",
"lucide-react": "https://esm.sh/lucide-react@0.263.1"
}
}
</script>
<script type="module">
import React, { useState, useEffect } from 'react';
import ReactDOM from 'react-dom';
import htm from 'htm';
import * as lucide from 'lucide-react';
const html = htm.bind(React.createElement);
const GAME_URL = "http://47.108.202.100/";
const WECHAT_QR = "https://image.gaoops.com/wechat2.png";
const SnowBackground = () => {
const [flakes, setFlakes] = useState([]);
useEffect(() => {
const count = 120;
setFlakes(Array.from({ length: count }).map((_, i) => ({
id: i,
left: Math.random() * 100 + '%',
duration: (Math.random() * 10 + 10) + 's',
delay: (Math.random() * 8) + 's',
size: (Math.random() * 3 + 1.5) + 'px',
opacity: Math.random() * 0.5 + 0.2
})));
}, []);
return html`
<div className="fixed inset-0 pointer-events-none z-0">
${flakes.map(f => html`
<div key=${f.id} className="snowflake" style=${{
left: f.left,
animationDuration: f.duration,
animationDelay: f.delay,
width: f.size,
height: f.size,
opacity: f.opacity
}}></div>
`)}
</div>
`;
};
const WeChatContact = () => {
const [show, setShow] = useState(false);
const [imgError, setImgError] = useState(f
Open service 2a06:98c1:3120::3:443 · gsq3.gaoops.com
2026-01-23 13:48
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 13:48:08 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Cache-Control: no-cache, no-store, must-revalidate
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=yYvIHJVvbRIn%2Bx6STz8W%2ByfrFVmIsSBYYJvvwRDn8DCuWXO3jfTcOnhHu70%2Bq9LRKFDf2dYPXu4xNWQzAyj2uf072Q0FwCHSSC2m9owu5gI5uOjpi6Q0hO290w%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=13,cfOrigin;dur=153
cf-cache-status: DYNAMIC
CF-RAY: 9c27bf383d9ae150-EWR
alt-svc: h3=":443"; ma=86400
Page title: 冰雪传奇 - 经典复刻,散人天堂
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<link rel="shortcut icon" href="https://image.gaoops.com/favicon.ico">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>冰雪传奇 - 经典复刻,散人天堂</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700;900&display=swap');
body {
font-family: 'Noto Sans SC', sans-serif;
background-color: #020617;
color: #e2e8f0;
margin: 0;
overflow-x: hidden;
-webkit-tap-highlight-color: transparent;
}
.bg-ice {
background: radial-gradient(circle at top, #1e3a8a 0%, #020617 70%);
}
.text-glow {
text-shadow: 0 0 15px rgba(59, 130, 246, 0.8), 0 0 30px rgba(59, 130, 246, 0.4);
}
.btn-shimmer {
position: relative;
overflow: hidden;
}
.btn-shimmer::after {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: linear-gradient(45deg, transparent, rgba(255,255,255,0.3), transparent);
transform: rotate(45deg);
animation: shimmer 3s infinite;
}
@keyframes shimmer {
0% { transform: translateX(-100%) rotate(45deg); }
100% { transform: translateX(100%) rotate(45deg); }
}
.snowflake {
position: fixed;
top: -10px;
background: white;
border-radius: 50%;
pointer-events: none;
opacity: 0.6;
z-index: 1;
animation: fall linear infinite;
}
@keyframes fall {
to { transform: translateY(105vh); }
}
</style>
<link rel="stylesheet" href="/index.css">
</head>
<body>
<div id="root"></div>
<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@18.2.0",
"react-dom": "https://esm.sh/react-dom@18.2.0/client",
"htm": "https://esm.sh/htm@3.1.1",
"lucide-react": "https://esm.sh/lucide-react@0.263.1"
}
}
</script>
<script type="module">
import React, { useState, useEffect } from 'react';
import ReactDOM from 'react-dom';
import htm from 'htm';
import * as lucide from 'lucide-react';
const html = htm.bind(React.createElement);
const GAME_URL = "http://47.108.202.100/";
const WECHAT_QR = "https://image.gaoops.com/wechat2.png";
const SnowBackground = () => {
const [flakes, setFlakes] = useState([]);
useEffect(() => {
const count = 120;
setFlakes(Array.from({ length: count }).map((_, i) => ({
id: i,
left: Math.random() * 100 + '%',
duration: (Math.random() * 10 + 10) + 's',
delay: (Math.random() * 8) + 's',
size: (Math.random() * 3 + 1.5) + 'px',
opacity: Math.random() * 0.5 + 0.2
})));
}, []);
return html`
<div className="fixed inset-0 pointer-events-none z-0">
${flakes.map(f => html`
<div key=${f.id} className="snowflake" style=${{
left: f.left,
animationDuration: f.duration,
animationDelay: f.delay,
width: f.size,
height: f.size,
opacity: f.opacity
}}></div>
`)}
</div>
`;
};
const WeChatContact = () => {
const [show, setShow] = useState(false);
const [imgError, setImgError] = useState(f
Open service 2a06:98c1:3121::3:443 · gsq3.gaoops.com
2026-01-23 13:48
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 13:48:08 GMT
Content-Type: text/html; charset=utf-8
Transfer-Encoding: chunked
Connection: close
Cache-Control: no-cache, no-store, must-revalidate
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=kKwqInZKvDhZzozPoVl5Hu807LNRDZiLsRaefI%2B4zXwXvKtyi2rMlkdlvPhshBhI4Tx5wKTeyjp9Sl7zIoryqPFnoWkIBAcSnp7ttbneIUdL2cb5%2BDIXZkN9vg%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c27bf38ee7c1c60-FRA
alt-svc: h3=":443"; ma=86400
Page title: 冰雪传奇 - 经典复刻,散人天堂
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<link rel="shortcut icon" href="https://image.gaoops.com/favicon.ico">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<title>冰雪传奇 - 经典复刻,散人天堂</title>
<script src="https://cdn.tailwindcss.com"></script>
<style>
@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@400;700;900&display=swap');
body {
font-family: 'Noto Sans SC', sans-serif;
background-color: #020617;
color: #e2e8f0;
margin: 0;
overflow-x: hidden;
-webkit-tap-highlight-color: transparent;
}
.bg-ice {
background: radial-gradient(circle at top, #1e3a8a 0%, #020617 70%);
}
.text-glow {
text-shadow: 0 0 15px rgba(59, 130, 246, 0.8), 0 0 30px rgba(59, 130, 246, 0.4);
}
.btn-shimmer {
position: relative;
overflow: hidden;
}
.btn-shimmer::after {
content: '';
position: absolute;
top: -50%;
left: -50%;
width: 200%;
height: 200%;
background: linear-gradient(45deg, transparent, rgba(255,255,255,0.3), transparent);
transform: rotate(45deg);
animation: shimmer 3s infinite;
}
@keyframes shimmer {
0% { transform: translateX(-100%) rotate(45deg); }
100% { transform: translateX(100%) rotate(45deg); }
}
.snowflake {
position: fixed;
top: -10px;
background: white;
border-radius: 50%;
pointer-events: none;
opacity: 0.6;
z-index: 1;
animation: fall linear infinite;
}
@keyframes fall {
to { transform: translateY(105vh); }
}
</style>
<link rel="stylesheet" href="/index.css">
</head>
<body>
<div id="root"></div>
<script type="importmap">
{
"imports": {
"react": "https://esm.sh/react@18.2.0",
"react-dom": "https://esm.sh/react-dom@18.2.0/client",
"htm": "https://esm.sh/htm@3.1.1",
"lucide-react": "https://esm.sh/lucide-react@0.263.1"
}
}
</script>
<script type="module">
import React, { useState, useEffect } from 'react';
import ReactDOM from 'react-dom';
import htm from 'htm';
import * as lucide from 'lucide-react';
const html = htm.bind(React.createElement);
const GAME_URL = "http://47.108.202.100/";
const WECHAT_QR = "https://image.gaoops.com/wechat2.png";
const SnowBackground = () => {
const [flakes, setFlakes] = useState([]);
useEffect(() => {
const count = 120;
setFlakes(Array.from({ length: count }).map((_, i) => ({
id: i,
left: Math.random() * 100 + '%',
duration: (Math.random() * 10 + 10) + 's',
delay: (Math.random() * 8) + 's',
size: (Math.random() * 3 + 1.5) + 'px',
opacity: Math.random() * 0.5 + 0.2
})));
}, []);
return html`
<div className="fixed inset-0 pointer-events-none z-0">
${flakes.map(f => html`
<div key=${f.id} className="snowflake" style=${{
left: f.left,
animationDuration: f.duration,
animationDelay: f.delay,
width: f.size,
height: f.size,
opacity: f.opacity
}}></div>
`)}
</div>
`;
};
const WeChatContact = () => {
const [show, setShow] = useState(false);
const [imgError, setImgError] = useState(f
Open service 2a06:98c1:3121::3:80 · gsq3.gaoops.com
2026-01-23 13:48
HTTP/1.1 301 Moved Permanently
Date: Fri, 23 Jan 2026 13:48:08 GMT
Content-Length: 0
Connection: close
Location: https://gsq3.gaoops.com/
Vary: accept-encoding
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=36Ri3FoiMB6ZSvFNJUD8ImIkS8oNoVIwsoyS3Hh8UoBooC%2F92QNw%2FMoDHOYBIFGiRmhZkXgmYXhysMReNAuC12lRcFOxrTgJf27X%2FWS%2BmPTHzRvTb%2BykAl39aA%3D%3D"}]}
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
cf-cache-status: DYNAMIC
CF-RAY: 9c27bf362e2ed27d-FRA
alt-svc: h3=":443"; ma=86400
Open service 104.17.25.173:443 · gaoops.com
2026-01-23 07:06
HTTP/1.1 200 OK
Date: Fri, 23 Jan 2026 07:06:39 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
alt-svc: h3=":443"; ma=86400
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=YgguX3F0Z0qw9ohVEE9SLc112YK0IabJeouBZ68Tc9JMh3OIH5vQ%2FVjkpgcVxfqAFIQDOjyMZaEjDcewKzrLjJ8aEFwHD5LAA0A%3D"}]}
content-language: zh-CN
expires: 0
pragma: no-cache
referrer-policy: strict-origin-when-cross-origin
Set-Cookie: XSRF-TOKEN=1d260050-db76-44b3-9beb-43212ff804e6; Path=/; HTTPOnly
strict-transport-security: max-age=31536000
vary: Origin
vary: Access-Control-Request-Method
vary: Access-Control-Request-Headers
vary: accept-encoding
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 0
x-zeabur-ip-country:
x-zeabur-request-id: sjc1::91306f54-fdb9-4c1a-a772-e7adbb35e3cd
cf-cache-status: DYNAMIC
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=158,cfOrigin;dur=397
Server: cloudflare
CF-RAY: 9c257316fe5bcb3a-EWR
Open service 104.17.25.173:443 · gaoops.com
2026-01-10 00:07
HTTP/1.1 200 OK
Date: Sat, 10 Jan 2026 00:07:05 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: close
alt-svc: h3=":443"; ma=86400
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=J9aNKcLccZB4zRp3saJcJJ76RBdfEinDQ%2FtugWk6J1ORQf%2BznrNPfjfD0ctRTNfs8VW7ru8w5qjgzOsv7p%2BjCy%2Bw%2FPi7gXsNDUA%3D"}]}
content-language: zh-CN
expires: 0
pragma: no-cache
referrer-policy: strict-origin-when-cross-origin
Set-Cookie: XSRF-TOKEN=ecb6c449-811f-456e-a38e-62f9055797f9; Path=/; HTTPOnly
strict-transport-security: max-age=31536000
vary: Origin
vary: Access-Control-Request-Method
vary: Access-Control-Request-Headers
vary: accept-encoding
x-content-type-options: nosniff
x-frame-options: SAMEORIGIN
x-xss-protection: 0
x-zeabur-ip-country:
x-zeabur-request-id: sjc1::e84cef66-667e-4651-8ab8-be3a4bd6b0d9
cf-cache-status: DYNAMIC
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server: cloudflare
CF-RAY: 9bb7ee9d5887d272-FRA
Open service 2a06:98c1:3121::3:80 · tv.gaoops.com
2026-01-05 01:43
HTTP/1.1 308 Permanent Redirect
Date: Mon, 05 Jan 2026 01:43:33 GMT
Transfer-Encoding: chunked
Connection: close
Alt-Svc: h3=":443"; ma=86400
Location: https://tv.gaoops.com/
X-Zeabur-Request-Id: sjc1::ef12b57c-66a7-46a2-b209-e84add09375a
cf-cache-status: DYNAMIC
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=105,cfOrigin;dur=190
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=uzkwqTm0VtRsHhGt5Hi0RZLXdAIGcXouAdGT%2FfOtROh2F9KtgBmXp1gQeGg3k6uuWqxeE6ZqvQUKd51OnNJPDqlhElfNUbR43pNwJS6i8xIsQ6zZvcjSQcw%3D"}]}
Server: cloudflare
CF-RAY: 9b8f49133aec436a-EWR
Open service 2a06:98c1:3120::3:80 · tv.gaoops.com
2026-01-05 01:43
HTTP/1.1 308 Permanent Redirect
Date: Mon, 05 Jan 2026 01:43:33 GMT
Transfer-Encoding: chunked
Connection: close
Alt-Svc: h3=":443"; ma=86400
Location: https://tv.gaoops.com/
X-Zeabur-Request-Id: sjc1::bd9dadd5-eb48-4d5a-8305-72a34322671e
cf-cache-status: DYNAMIC
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=70,cfOrigin;dur=137
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=%2FU8%2B2yyJAf2lrHEZypeES48ApQF8zdbnVwbWTD9NiSJrM9nyB1uP6OqX5lPsJx%2FofdojPI5XRXLRAbiZA1%2Fvl%2B8j73OSl%2Ft2eG7ckn39I%2FUQlzMrm6zuuuM%3D"}]}
Server: cloudflare
CF-RAY: 9b8f4913498934dc-YYZ
Open service 188.114.97.3:8443 · tv.gaoops.com
2026-01-05 01:43
HTTP/1.1 522 <none> Date: Mon, 05 Jan 2026 01:43:54 GMT Content-Type: text/plain; charset=UTF-8 Content-Length: 15 Connection: close Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 01 Jan 1970 00:00:01 GMT Referrer-Policy: same-origin Server-Timing: cfEdge;dur=19700,cfOrigin;dur=0 X-Frame-Options: SAMEORIGIN Server: cloudflare CF-RAY: 9b8f4917ed3f87c9-SIN alt-svc: h3=":8443"; ma=86400 error code: 522
Open service 188.114.97.3:80 · tv.gaoops.com
2026-01-05 01:43
HTTP/1.1 308 Permanent Redirect
Date: Mon, 05 Jan 2026 01:43:34 GMT
Transfer-Encoding: chunked
Connection: close
Alt-Svc: h3=":443"; ma=86400
Location: https://tv.gaoops.com/
X-Zeabur-Request-Id: sjc1::0e2a2666-63a0-42fa-9c11-1cda42861b60
cf-cache-status: DYNAMIC
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=vrhwSYUlKixa2SkvVozyAuCgrNsipkwKJQrWQFoXmYWByUdLa2iyef2%2BG9RNPCcDRszBk2FZQaBMNUG5bTPaqJFJzvHwTunlESB95T8%3D"}]}
Server: cloudflare
CF-RAY: 9b8f4913cbd1d270-FRA
Open service 2a06:98c1:3121::3:443 · tv.gaoops.com
2026-01-05 01:43
HTTP/1.1 307 Temporary Redirect
Date: Mon, 05 Jan 2026 01:43:33 GMT
Transfer-Encoding: chunked
Connection: close
alt-svc: h3=":443"; ma=86400
location: /login?redirect=%2F
x-zeabur-ip-country:
x-zeabur-request-id: sjc1::a0080c6a-7ed4-403f-bcb0-f9375458d3c3
cf-cache-status: DYNAMIC
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=7,cfOrigin;dur=72
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=bEclwunWNYca%2F%2BInqHXYTIk1noC5ceP9aTbg%2Bcc9UyIZnNJg4xjAavGsmJ4xxJ4ubEFNkhLnJi%2B2w7RLV0T8Tjf0bk9uWtMT3c1ZMuK3pFmvFq3MRVz9"}]}
Server: cloudflare
CF-RAY: 9b8f49139e2dd73b-EWR
/login?redirect=%2F
Open service 2a06:98c1:3120::3:443 · tv.gaoops.com
2026-01-05 01:43
HTTP/1.1 307 Temporary Redirect
Date: Mon, 05 Jan 2026 01:43:33 GMT
Transfer-Encoding: chunked
Connection: close
alt-svc: h3=":443"; ma=86400
location: /login?redirect=%2F
x-zeabur-ip-country:
x-zeabur-request-id: sjc1::7d48add1-7101-4cac-93dc-0988dbcea555
cf-cache-status: DYNAMIC
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Server-Timing: cfCacheStatus;desc="DYNAMIC"
Server-Timing: cfEdge;dur=13,cfOrigin;dur=20
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=F7jJUhqUQ%2FLvEQwlWQ%2BDaope0PHzUI538RmBPnZSV1vY5%2Fr9jyQSoMBDddr9AC0AHPEVkT3ZYaDumAckL62CV97XaKOq6%2BeeZDt%2BfaotXMA6qoF%2FKuTzXHQ%3D"}]}
Server: cloudflare
CF-RAY: 9b8f49117b45eb2c-SJC
/login?redirect=%2F
Open service 2a06:98c1:3121::3:8443 · tv.gaoops.com
2026-01-05 01:43
HTTP/1.1 522 <none> Date: Mon, 05 Jan 2026 01:43:53 GMT Content-Type: text/plain; charset=UTF-8 Content-Length: 15 Connection: close Cache-Control: private, max-age=0, no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Expires: Thu, 01 Jan 1970 00:00:01 GMT Referrer-Policy: same-origin X-Frame-Options: SAMEORIGIN Server: cloudflare CF-RAY: 9b8f4916dc736352-LHR alt-svc: h3=":8443"; ma=86400 error code: 522
Open service 188.114.97.3:443 · tv.gaoops.com
2026-01-05 01:43
HTTP/1.1 307 Temporary Redirect
Date: Mon, 05 Jan 2026 01:43:34 GMT
Transfer-Encoding: chunked
Connection: close
alt-svc: h3=":443"; ma=86400
location: /login?redirect=%2F
x-zeabur-ip-country:
x-zeabur-request-id: sjc1::cd45f270-3eeb-40d4-b99f-c902add887c7
cf-cache-status: DYNAMIC
Nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
Report-To: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=tFnOShWsF1e48SxJ8pa8wsNmuqzoyFEdBHvIS5a0839DYul80R%2BuXxNUZ%2FfBcZbo6HZXThB%2FED9ZJtyJ0EwU27F%2F126pfCMUEwM60%2FY%3D"}]}
Server: cloudflare
CF-RAY: 9b8f4915ca6a9764-FRA
/login?redirect=%2F