Help
RSS
API
Feed
Maltego
Contact
Domain > 3296.vip
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2023-08-27
104.21.78.112
(
ClassC
)
2025-12-09
172.67.220.101
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Tue, 09 Dec 2025 21:50:43 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: keep-aliveServer: cloudflareLast-Modified: Sat, 15 Nov 2025 05:37:51 GMTNel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Vary: Accept-EncodingX-Frame-Options: SAMEORIGINReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sOAgMThaTkrUVW726Jk2ZVSDHyCth88uD%2B8DN%2FdWyCeUpD1Dl8G4uGHMxr03C1LT0uS5olqPnzwB8TaXKzfJNsVaDIZELYIhT}}cf-cache-status: DYNAMICCF-RAY: 9ab7b83d1a7a28b9-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langzh-CN> script charsetUTF-8 idLA_COLLECT src//sdk.51.la/js-sdk-pro.min.js>/script>script>LA.init({id:Ju5BZAXooXz3ASSs,ck:Ju5BZAXooXz3ASSs,screenRecord:true})/script>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>欢迎莅临TC集团/title> !-- 引入配置文件 --> script srcconfig.js>/script> style> * { margin: 0; padding: 0; box-sizing: border-box; } html { height: 100%; width: 100%; overflow: hidden; } body { font-family: -apple-system, BlinkMacSystemFont, Segoe UI, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Arial, sans-serif; display: flex; justify-content: center; align-items: center; min-height: 100vh; height: 100vh; width: 100vw; margin: 0; padding: 0; background: linear-gradient(135deg, #1e3c72 0%, #2a5298 20%, #1e88e5 40%, #42a5f5 60%, #64b5f6 80%, #90caf9 100%); background-attachment: fixed; background-size: 400% 400%; background-position: center center; background-repeat: no-repeat; animation: gradientShift 20s ease infinite; color: #2c3e50; overflow: hidden; position: relative; } @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } /* 背景装饰 */ body::before { content: ; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(circle at 20% 50%, rgba(255, 255, 255, 0.15) 0%, transparent 50%), radial-gradient(circle at 80% 80%, rgba(255, 255, 255, 0.1) 0%, transparent 50%), radial-gradient(circle at 50% 20%, rgba(255, 255, 255, 0.08) 0%, transparent 50%); z-index: 0; pointer-events: none; animation: float 25s ease-in-out infinite; } @keyframes float { 0%, 100% { opacity: 0.6; transform: scale(1); } 50% { opacity: 0.8; transform: scale(1.1); } } /* 光晕效果 */ body::after { content: ; position: fixed; top: -20%; right: -10%; width: 600px; height: 600px; background: radial-gradient(circle, rgba(30, 136, 229, 0.4) 0%, rgba(66, 165, 245, 0.2) 30%, transparent 70%); border-radius: 50%; animation: pulse 12s ease-in-out infinite; z-index: 0; pointer-events: none; } @keyframes pulse { 0%, 100% { transform: scale(1) translate(0, 0); opacity: 0.4; } 33% { transform: scale(1.3) translate(-20px, 20px); opacity: 0.6; } 66% { transform: scale(1.1) translate(20px, -20px); opacity: 0.5; } } .container { text-align: center; padding: 70px 60px; background: rgba(255, 255, 255, 0.95); border-radius: 35px; backdrop-filter: blur(30px) saturate(180%); box-shadow: 0 25px 80px rgba(0, 0, 0, 0.15), 0 0 0 2px rgba(255, 255, 255, 0.7) inset, 0 15px 50px rgba(30, 136, 229, 0.3), 0 -10px 30px rgba(66, 165, 245, 0.2); max-width: 650px; width: 100%; position: relative; z-index: 1; animation: fadeInUp 1s ease-out; border: 1px solid rgba(255, 255, 255, 0.9); margin: 20px; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } h1 { font-size: 48px; font-weight: 800; margin-bottom: 50px; background: linear-gradient(90deg, #00d4ff 0%, #0099ff 25%, #0066ff 50%, #0099ff 75%, #00d4ff 100%); background-size: 300% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; letter-spacing: 3px; line-height: 1.4; animation: shimmer 4s linear infinite; text-shadow: 0 0 40px rgba(0, 212, 255, 0.3); position: relative; } h1::after { content: ; position: absolute; bottom: -10px; left: 50%; transform: translateX(-50%); width: 80px; height: 4px; background: linear-gradient(90deg, transparent, #00d4ff, transparent); border-radius: 2px; animation: lineGlow 2s ease-in-out infinite; } @keyframes lineGlow { 0%, 100% { opacity: 0.5; width: 80px; } 50% { opacity: 1; width: 120px; } } .subtitle { font-size: 32px; font-weight: 600; margin-top: 20px; margin-bottom: 30px; color: #34495e; line-height: 1.6; letter-spacing: 1px; background: linear-gradient(90deg, #00d4ff 0%, #0099ff 25%, #0066ff 50%, #0099ff 75%, #00d4ff 100%); background-size: 300% 100%; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; animation: subtitleShimmer 3s linear infinite, subtitleScale 2s ease-in-out infinite; text-align: center; white-space: normal; word-break: break-word; padding: 0 20px; } .subtitle-line { display: block; margin: 8px 0; } .subtitle-line:first-child { margin-top: 0; } .subtitle-line:last-child { margin-bottom: 0; } @keyframes subtitleShimmer { 0% { background-position: 0% center; } 100% { background-position: 300% center; } } @keyframes subtitleScale { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } @keyframes shimmer { 0% { background-position: 0% center; } 100% { background-position: 200% center; } } .info { margin-top: 20px; font-size: 14px; color: #34495e; font-weight: 500; min-height: 30px; line-height: 1.6; display: flex; justify-content: center; align-items: center; gap: 8px; flex-wrap: wrap; } .info .location { display: inline-flex; align-items: center; padding: 5px 12px; background: linear-gradient(135deg, rgba(0, 212, 255, 0.15) 0%, rgba(0, 153, 255, 0.15) 100%); border-radius: 12px; border: 1px solid rgba(0, 212, 255, 0.4); margin: 0; font-size: 12px; color: #0099ff; white-space: nowrap; font-weight: 500; } .link { margin-top: 40px; font-size: 16px; animation: fadeIn 0.5s ease-out 0.5s both; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .status-message { font-size: 18px; font-weight: 600; color: #2c3e50; margin-bottom: 20px; animation: fadeIn 0.5s ease-out; } .link a { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 16px 40px; background: #0099ff; color: #fff; text-decoration: none; border-radius: 30px; font-weight: 600; font-size: 18px; transition: all 0.3s ease; box-shadow: 0 4px 15px rgba(0, 153, 255, 0.4); border: 2px solid rgba(255, 255, 255, 0.3); position: relative; } .link a:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0, 153, 255, 0.6); background: #0066ff; } .link a:active { transform: translateY(0); } .countdown-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 30px; height: 30px; padding: 0 8px; background: rgba(255, 255, 255, 0.3); border-radius: 15px; font-size: 16px; font-weight: 700; margin-left: 5px; animation: countdownPulse 1s ease-in-out infinite; } @keyframes countdownPulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.1); } } /* 进度条 */ .progress-bar { width: 100%; height: 6px; background: rgba(0, 212, 255, 0.1); border-radius: 10px; margin: 30px 0; overflow: hidden; position: relative; } .progress-fill { height: 100%; background: linear-gradient(90deg, #00d4ff 0%, #0099ff 50%, #0066ff 100%); border-radius: 10px; width: 0%; transition: width 1s linear; box-shadow: 0 0 10px rgba(0, 212, 255, 0.5); position: relative; } .progress-fill::after { content: ; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.4) 50%, transparent 100%); animation: progressShine 2s infinite; } @keyframes progressShine { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } /* 响应式设计 */ @media (max-width: 768px) { body { padding: 0; } .container { padding: 40px 30px; border-radius: 25px; margin: 15px; } h1 { font-size: 36px; margin-bottom: 35px; letter-spacing: 2px; } h1::after { width: 60px; height: 3px; } .subtitle { font-size: 24px; margin-top: 18px; margin-bottom: 25px; letter-spacing: 0.8px; line-height: 1.6; padding: 0 15px; } .subtitle-line { margin: 6px 0; } .info .location { padding: 5px 12px; font-size: 12px; } .status-message { font-size: 16px; margin-bottom: 15px; } .link a { padding: 14px 32px; font-size: 16px; } .countdown-badge { min-width: 26px; height: 26px; font-size: 14px; padding: 0 6px; } .info { font-size: 16px; margin-top: 25px; } .info .location { font-size: 14px; padding: 6px 16px; } .link { margin-top: 30px; } .link a { padding: 12px 28px; font-size: 15px; } } @media (max-width: 480px) { body { padding: 0; } .container { padding: 30px 20px; border-radius: 20px; margin: 10px; } h1 { font-size: 30px; margin-bottom: 30px; letter-spacing: 1.5px; } h1::after { width: 50px; height: 3px; } .subtitle { font-size: 20px; margin-top: 15px; margin-bottom: 20px; letter-spacing: 0.6px; line-height: 1.5; padding: 0 12px; } .subtitle-line { margin: 5px 0; } .info .location { padding: 4px 10px; font-size: 11px; } .status-message { font-size: 14px; margin-bottom: 12px; } .link a { padding: 12px 28px; font-size: 15px; } .countdown-badge { min-width: 24px; height: 24px; font-size: 13px; padding: 0 5px; } .info { font-size: 14px; margin-top: 20px; } .info .location { font-size: 13px; padding: 5px 14px; display: block; margin: 8px 0; } .link { margin-top: 25px; } .link a { padding: 10px 24px; font-size: 14px; width: 100%; max-width: 280px; } .progress-bar { margin: 20px 0; } } /* 横屏适配 */ @media (max-height: 500px) and (orientation: landscape) { body { padding: 0; } .container { padding: 30px 40px; margin: 10px; } h1 { font-size: 28px; margin-bottom: 20px; } .subtitle { font-size: 18px; margin-top: 12px; margin-bottom: 18px; letter-spacing: 0.5px; line-height: 1.5; padding: 0 10px; } .subtitle-line { margin: 4px 0; } .info .location { padding: 4px 10px; font-size: 11px; } .status-message { font-size: 13px; margin-bottom: 10px; } .link a { padding: 10px 24px; font-size: 14px; } .countdown-badge { min-width: 22px; height: 22px; font-size: 12px; padding: 0 4px; } .info { margin-top: 15px; font-size: 14px; } .link { margin-top: 20px; } } /* 小屏幕优化 */ @media (max-width: 360px) { h1 { font-size: 24px; } .subtitle { font-size: 16px; margin-top: 10px; margin-bottom: 15px; letter-spacing: 0.4px; line-height: 1.4; padding: 0 8px; } .subtitle-line { margin: 3px 0; } .info .location { padding: 3px 8px; font-size: 10px; } .status-message { font-size: 12px; margin-bottom: 8px; } .link a { padding: 10px 20px; font-size: 13px; } .countdown-badge { min-width: 20px; height: 20px; font-size: 11px; padding: 0 3px; } .info { font-size: 13px; } } /style>/head>body> div classcontainer> h1 idpageTitle>欢迎莅临TC集团/h1> div classsubtitle> span classsubtitle-line>真人百家乐、棋牌、彩票、PG电子/span> span classsubtitle-line>注册送188元/span> /div> div classinfo idinfo>/div> div classprogress-bar> div classprogress-fill idprogressFill>/div> /div> div classlink idlink styledisplay: none;> div classstatus-message idstatusMessage>已为您匹配到最佳线路/div> a href# idmanualLink> 立即跳转 span classcountdown-badge idcountdownBadge>/span> /a> /div> /div> script> // 从 config.js 读取配置 // 如果 config.js 未加载,使用默认值 const cityRedirects typeof CITY_REDIRECTS ! undefined ? CITY_REDIRECTS : { default: https://example.com }; const cityVariants typeof CITY_VARIANTS ! undefined ? CITY_VARIANTS : {}; const redirectDelay typeof REDIRECT_DELAY ! undefined ? REDIRECT_DELAY : 2; const pageTitle typeof PAGE_TITLE ! undefined ? PAGE_TITLE : 欢迎莅临TC集团; let countdown redirectDelay; let targetUrl null; let cityDetected false; // 初始化进度条 function initProgress() { const progressFill document.getElementById(progressFill); if (progressFill) { progressFill.style.width 0%; progressFill.style.transition none; // 强制重绘 progressFill.offsetHeight; // 开始动画 setTimeout(() > { progressFill.style.transition `width ${redirectDelay}s linear`; progressFill.style.width 100%; }, 50); } } // 更新倒计时显示 function updateCountdown() { const countdownBadge document.getElementById(countdownBadge); if (countdownBadge) { if (countdown > 0) { countdownBadge.textContent countdown; } else { countdownBadge.textContent ; } } if (countdown > 0) { countdown--; setTimeout(updateCountdown, 1000); } else if (targetUrl) { // 执行跳转 setTimeout(() > { window.location.href targetUrl; }, 300); } } // 获取IP地理位置 async function getLocationByIP() { try { // 方法1: 使用 ipapi.co API(免费,有速率限制) const response await fetch(https://ipapi.co/json/, { timeout: 5000 }); if (response.ok) { const data await response.json(); return { city: data.city || , country: data.country_name || data.country_code || , countryCode: data.country_code || }; } } catch (error) { console.log(ipapi.co API失败,尝试其他方法:, error); } try { // 方法2: 使用 ip-api.com API(免费) const response await fetch(http://ip-api.com/json/?fieldsstatus,message,country,countryCode,city, { timeout: 5000 }); if (response.ok) { const data await response.json(); if (data.status success) { return { city: data.city || , country: data.country || , countryCode: data.countryCode || }; } } } catch (error) { console.log(ip-api.com API失败:, error); } try { // 方法3: 使用 geojs.io API(免费) const response await fetch(https://get.geojs.io/v1/ip/geo.json, { timeout: 5000 }); if (response.ok) { const data await response.json(); return { city: data.city || , country: data.country || , countryCode: data.country_code || }; } } catch (error) { console.log(geojs.io API失败:, error); } return null; } // 根据城市获取跳转URL function getRedirectUrl(city, country) { if (!city) { return cityRedirectsdefault || https://example.com; } // 精确匹配城市 if (cityRedirectscity) { return cityRedirectscity; } // 尝试匹配城市名称的变体(从 config.js 读取) for (const key, variants of Object.entries(cityVariants)) { if (variants && variants.length > 0) { // 检查城市是否匹配变体列表 if (variants.includes(city) || city.includes(key) || key.includes(city)) { if (cityRedirectskey) { return cityRedirectskey; } } } } // 模糊匹配:检查城市名称是否包含配置中的城市名 for (const key, url of Object.entries(cityRedirects)) { if (key ! default && (city.toLowerCase().includes(key.toLowerCase()) || key.toLowerCase().includes(city.toLowerCase()))) { return url; } } // 如果未匹配,返回默认URL return cityRedirectsdefault || https://example.com; } // 执行跳转逻辑 async function performRedirect() { const infoEl document.getElementById(info); const linkEl document.getElementById(link); const manualLinkEl document.getElementById(manualLink); try { // 不显示检测中的状态文字 if (infoEl) { infoEl.innerHTML ; } // 获取地理位置 const location await getLocationByIP(); if (location && location.city) { cityDetected true; targetUrl getRedirectUrl(location.city, location.country); // 更新信息显示(只显示城市和国家,不显示状态文字) if (infoEl) { infoEl.innerHTML ` div classlocation>${location.city}/div> div classlocation>${location.country}/div> `; } // 设置手动跳转链接 if (manualLinkEl && targetUrl) { manualLinkEl.href targetUrl; } // 更新状态消息 const statusMessageEl document.getElementById(statusMessage); if (statusMessageEl) { statusMessageEl.textContent 已为您匹配到最佳线路; } // 显示手动跳转链接 if (linkEl) { linkEl.style.display block; } // 初始化倒计时 initCountdown(); // 初始化进度条 initProgress(); // 开始倒计时 updateCountdown(); } else { // 无法获取地理位置,使用默认URL targetUrl cityRedirectsdefault || https://example.com; cityDetected true; if (infoEl) { infoEl.innerHTML ; } // 更新状态消息 const statusMessageEl document.getElementById(statusMessage); if (statusMessageEl) { statusMessageEl.textContent 已为您匹配到最佳线路; } if (manualLinkEl && targetUrl) { manualLinkEl.href targetUrl; } if (linkEl) { linkEl.style.display block; } // 初始化倒计时 initCountdown(); // 初始化进度条 initProgress(); // 开始倒计时 updateCountdown(); } } catch (error) { console.error(获取地理位置失败:, error); // 发生错误,使用默认URL targetUrl cityRedirectsdefault || https://example.com; cityDetected true; if (infoEl) { infoEl.innerHTML ; } // 更新状态消息 const statusMessageEl document.getElementById(statusMessage); if (statusMessageEl) { statusMessageEl.textContent 已为您匹配到最佳线路; } if (manualLinkEl && targetUrl) { manualLinkEl.href targetUrl; } if (linkEl) { linkEl.style.display block; } // 初始化倒计时 initCountdown(); // 初始化进度条 initProgress(); // 开始倒计时 updateCountdown(); } } // 更新页面标题 function updatePageTitle() { if (typeof pageTitle ! undefined && pageTitle) { document.title pageTitle; const titleEl document.getElementById(pageTitle); if (titleEl) { titleEl.textContent pageTitle; } } } // 初始化倒计时显示 function initCountdown() { const countdownBadge document.getElementById(countdownBadge); if (countdownBadge) { // 重置倒计时 countdown redirectDelay; countdownBadge.textContent redirectDelay; } } // 页面加载完成后执行 window.addEventListener(DOMContentLoaded, function() { // 更新页面标题 updatePageTitle(); // 执行跳转逻辑 performRedirect(); }); // 备用方案:如果5秒后仍未跳转,直接跳转到默认URL setTimeout(function() { if (!cityDetected && !targetUrl) { targetUrl cityRedirectsdefault || https://example.com; window.location.href targetUrl; } }, 5000); /script>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Tue, 09 Dec 2025 21:50:43 GMTContent-Type: text/htmlTransfer-Encoding: chunkedConnection: keep-aliveServer: cloudflareLast-Modified: Sat, 15 Nov 2025 05:37:51 GMTNel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Vary: Accept-EncodingX-Frame-Options: SAMEORIGINReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sx%2FQDxOcRnCDHZ2KaUW9b%2BcoOsP78S3piFkl9M96YrcKl306i4caeQgpOq3Pe8BhAOWroA1cviuA2OBfkDg71UIooti97OHrX}}cf-cache-status: DYNAMICCF-RAY: 9ab7b83f8fd0121f-PDXalt-svc: h3:443; ma86400 !DOCTYPE html>html langzh-CN> script charsetUTF-8 idLA_COLLECT src//sdk.51.la/js-sdk-pro.min.js>/script>script>LA.init({id:Ju5BZAXooXz3ASSs,ck:Ju5BZAXooXz3ASSs,screenRecord:true})/script>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>欢迎莅临TC集团/title> !-- 引入配置文件 --> script srcconfig.js>/script> style> * { margin: 0; padding: 0; box-sizing: border-box; } html { height: 100%; width: 100%; overflow: hidden; } body { font-family: -apple-system, BlinkMacSystemFont, Segoe UI, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Helvetica Neue, Arial, sans-serif; display: flex; justify-content: center; align-items: center; min-height: 100vh; height: 100vh; width: 100vw; margin: 0; padding: 0; background: linear-gradient(135deg, #1e3c72 0%, #2a5298 20%, #1e88e5 40%, #42a5f5 60%, #64b5f6 80%, #90caf9 100%); background-attachment: fixed; background-size: 400% 400%; background-position: center center; background-repeat: no-repeat; animation: gradientShift 20s ease infinite; color: #2c3e50; overflow: hidden; position: relative; } @keyframes gradientShift { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } } /* 背景装饰 */ body::before { content: ; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: radial-gradient(circle at 20% 50%, rgba(255, 255, 255, 0.15) 0%, transparent 50%), radial-gradient(circle at 80% 80%, rgba(255, 255, 255, 0.1) 0%, transparent 50%), radial-gradient(circle at 50% 20%, rgba(255, 255, 255, 0.08) 0%, transparent 50%); z-index: 0; pointer-events: none; animation: float 25s ease-in-out infinite; } @keyframes float { 0%, 100% { opacity: 0.6; transform: scale(1); } 50% { opacity: 0.8; transform: scale(1.1); } } /* 光晕效果 */ body::after { content: ; position: fixed; top: -20%; right: -10%; width: 600px; height: 600px; background: radial-gradient(circle, rgba(30, 136, 229, 0.4) 0%, rgba(66, 165, 245, 0.2) 30%, transparent 70%); border-radius: 50%; animation: pulse 12s ease-in-out infinite; z-index: 0; pointer-events: none; } @keyframes pulse { 0%, 100% { transform: scale(1) translate(0, 0); opacity: 0.4; } 33% { transform: scale(1.3) translate(-20px, 20px); opacity: 0.6; } 66% { transform: scale(1.1) translate(20px, -20px); opacity: 0.5; } } .container { text-align: center; padding: 70px 60px; background: rgba(255, 255, 255, 0.95); border-radius: 35px; backdrop-filter: blur(30px) saturate(180%); box-shadow: 0 25px 80px rgba(0, 0, 0, 0.15), 0 0 0 2px rgba(255, 255, 255, 0.7) inset, 0 15px 50px rgba(30, 136, 229, 0.3), 0 -10px 30px rgba(66, 165, 245, 0.2); max-width: 650px; width: 100%; position: relative; z-index: 1; animation: fadeInUp 1s ease-out; border: 1px solid rgba(255, 255, 255, 0.9); margin: 20px; } @keyframes fadeInUp { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } } h1 { font-size: 48px; font-weight: 800; margin-bottom: 50px; background: linear-gradient(90deg, #00d4ff 0%, #0099ff 25%, #0066ff 50%, #0099ff 75%, #00d4ff 100%); background-size: 300% auto; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; letter-spacing: 3px; line-height: 1.4; animation: shimmer 4s linear infinite; text-shadow: 0 0 40px rgba(0, 212, 255, 0.3); position: relative; } h1::after { content: ; position: absolute; bottom: -10px; left: 50%; transform: translateX(-50%); width: 80px; height: 4px; background: linear-gradient(90deg, transparent, #00d4ff, transparent); border-radius: 2px; animation: lineGlow 2s ease-in-out infinite; } @keyframes lineGlow { 0%, 100% { opacity: 0.5; width: 80px; } 50% { opacity: 1; width: 120px; } } .subtitle { font-size: 32px; font-weight: 600; margin-top: 20px; margin-bottom: 30px; color: #34495e; line-height: 1.6; letter-spacing: 1px; background: linear-gradient(90deg, #00d4ff 0%, #0099ff 25%, #0066ff 50%, #0099ff 75%, #00d4ff 100%); background-size: 300% 100%; -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; animation: subtitleShimmer 3s linear infinite, subtitleScale 2s ease-in-out infinite; text-align: center; white-space: normal; word-break: break-word; padding: 0 20px; } .subtitle-line { display: block; margin: 8px 0; } .subtitle-line:first-child { margin-top: 0; } .subtitle-line:last-child { margin-bottom: 0; } @keyframes subtitleShimmer { 0% { background-position: 0% center; } 100% { background-position: 300% center; } } @keyframes subtitleScale { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.05); } } @keyframes shimmer { 0% { background-position: 0% center; } 100% { background-position: 200% center; } } .info { margin-top: 20px; font-size: 14px; color: #34495e; font-weight: 500; min-height: 30px; line-height: 1.6; display: flex; justify-content: center; align-items: center; gap: 8px; flex-wrap: wrap; } .info .location { display: inline-flex; align-items: center; padding: 5px 12px; background: linear-gradient(135deg, rgba(0, 212, 255, 0.15) 0%, rgba(0, 153, 255, 0.15) 100%); border-radius: 12px; border: 1px solid rgba(0, 212, 255, 0.4); margin: 0; font-size: 12px; color: #0099ff; white-space: nowrap; font-weight: 500; } .link { margin-top: 40px; font-size: 16px; animation: fadeIn 0.5s ease-out 0.5s both; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } .status-message { font-size: 18px; font-weight: 600; color: #2c3e50; margin-bottom: 20px; animation: fadeIn 0.5s ease-out; } .link a { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 16px 40px; background: #0099ff; color: #fff; text-decoration: none; border-radius: 30px; font-weight: 600; font-size: 18px; transition: all 0.3s ease; box-shadow: 0 4px 15px rgba(0, 153, 255, 0.4); border: 2px solid rgba(255, 255, 255, 0.3); position: relative; } .link a:hover { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(0, 153, 255, 0.6); background: #0066ff; } .link a:active { transform: translateY(0); } .countdown-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 30px; height: 30px; padding: 0 8px; background: rgba(255, 255, 255, 0.3); border-radius: 15px; font-size: 16px; font-weight: 700; margin-left: 5px; animation: countdownPulse 1s ease-in-out infinite; } @keyframes countdownPulse { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.1); } } /* 进度条 */ .progress-bar { width: 100%; height: 6px; background: rgba(0, 212, 255, 0.1); border-radius: 10px; margin: 30px 0; overflow: hidden; position: relative; } .progress-fill { height: 100%; background: linear-gradient(90deg, #00d4ff 0%, #0099ff 50%, #0066ff 100%); border-radius: 10px; width: 0%; transition: width 1s linear; box-shadow: 0 0 10px rgba(0, 212, 255, 0.5); position: relative; } .progress-fill::after { content: ; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(90deg, transparent 0%, rgba(255, 255, 255, 0.4) 50%, transparent 100%); animation: progressShine 2s infinite; } @keyframes progressShine { 0% { transform: translateX(-100%); } 100% { transform: translateX(100%); } } /* 响应式设计 */ @media (max-width: 768px) { body { padding: 0; } .container { padding: 40px 30px; border-radius: 25px; margin: 15px; } h1 { font-size: 36px; margin-bottom: 35px; letter-spacing: 2px; } h1::after { width: 60px; height: 3px; } .subtitle { font-size: 24px; margin-top: 18px; margin-bottom: 25px; letter-spacing: 0.8px; line-height: 1.6; padding: 0 15px; } .subtitle-line { margin: 6px 0; } .info .location { padding: 5px 12px; font-size: 12px; } .status-message { font-size: 16px; margin-bottom: 15px; } .link a { padding: 14px 32px; font-size: 16px; } .countdown-badge { min-width: 26px; height: 26px; font-size: 14px; padding: 0 6px; } .info { font-size: 16px; margin-top: 25px; } .info .location { font-size: 14px; padding: 6px 16px; } .link { margin-top: 30px; } .link a { padding: 12px 28px; font-size: 15px; } } @media (max-width: 480px) { body { padding: 0; } .container { padding: 30px 20px; border-radius: 20px; margin: 10px; } h1 { font-size: 30px; margin-bottom: 30px; letter-spacing: 1.5px; } h1::after { width: 50px; height: 3px; } .subtitle { font-size: 20px; margin-top: 15px; margin-bottom: 20px; letter-spacing: 0.6px; line-height: 1.5; padding: 0 12px; } .subtitle-line { margin: 5px 0; } .info .location { padding: 4px 10px; font-size: 11px; } .status-message { font-size: 14px; margin-bottom: 12px; } .link a { padding: 12px 28px; font-size: 15px; } .countdown-badge { min-width: 24px; height: 24px; font-size: 13px; padding: 0 5px; } .info { font-size: 14px; margin-top: 20px; } .info .location { font-size: 13px; padding: 5px 14px; display: block; margin: 8px 0; } .link { margin-top: 25px; } .link a { padding: 10px 24px; font-size: 14px; width: 100%; max-width: 280px; } .progress-bar { margin: 20px 0; } } /* 横屏适配 */ @media (max-height: 500px) and (orientation: landscape) { body { padding: 0; } .container { padding: 30px 40px; margin: 10px; } h1 { font-size: 28px; margin-bottom: 20px; } .subtitle { font-size: 18px; margin-top: 12px; margin-bottom: 18px; letter-spacing: 0.5px; line-height: 1.5; padding: 0 10px; } .subtitle-line { margin: 4px 0; } .info .location { padding: 4px 10px; font-size: 11px; } .status-message { font-size: 13px; margin-bottom: 10px; } .link a { padding: 10px 24px; font-size: 14px; } .countdown-badge { min-width: 22px; height: 22px; font-size: 12px; padding: 0 4px; } .info { margin-top: 15px; font-size: 14px; } .link { margin-top: 20px; } } /* 小屏幕优化 */ @media (max-width: 360px) { h1 { font-size: 24px; } .subtitle { font-size: 16px; margin-top: 10px; margin-bottom: 15px; letter-spacing: 0.4px; line-height: 1.4; padding: 0 8px; } .subtitle-line { margin: 3px 0; } .info .location { padding: 3px 8px; font-size: 10px; } .status-message { font-size: 12px; margin-bottom: 8px; } .link a { padding: 10px 20px; font-size: 13px; } .countdown-badge { min-width: 20px; height: 20px; font-size: 11px; padding: 0 3px; } .info { font-size: 13px; } } /style>/head>body> div classcontainer> h1 idpageTitle>欢迎莅临TC集团/h1> div classsubtitle> span classsubtitle-line>真人百家乐、棋牌、彩票、PG电子/span> span classsubtitle-line>注册送188元/span> /div> div classinfo idinfo>/div> div classprogress-bar> div classprogress-fill idprogressFill>/div> /div> div classlink idlink styledisplay: none;> div classstatus-message idstatusMessage>已为您匹配到最佳线路/div> a href# idmanualLink> 立即跳转 span classcountdown-badge idcountdownBadge>/span> /a> /div> /div> script> // 从 config.js 读取配置 // 如果 config.js 未加载,使用默认值 const cityRedirects typeof CITY_REDIRECTS ! undefined ? CITY_REDIRECTS : { default: https://example.com }; const cityVariants typeof CITY_VARIANTS ! undefined ? CITY_VARIANTS : {}; const redirectDelay typeof REDIRECT_DELAY ! undefined ? REDIRECT_DELAY : 2; const pageTitle typeof PAGE_TITLE ! undefined ? PAGE_TITLE : 欢迎莅临TC集团; let countdown redirectDelay; let targetUrl null; let cityDetected false; // 初始化进度条 function initProgress() { const progressFill document.getElementById(progressFill); if (progressFill) { progressFill.style.width 0%; progressFill.style.transition none; // 强制重绘 progressFill.offsetHeight; // 开始动画 setTimeout(() > { progressFill.style.transition `width ${redirectDelay}s linear`; progressFill.style.width 100%; }, 50); } } // 更新倒计时显示 function updateCountdown() { const countdownBadge document.getElementById(countdownBadge); if (countdownBadge) { if (countdown > 0) { countdownBadge.textContent countdown; } else { countdownBadge.textContent ; } } if (countdown > 0) { countdown--; setTimeout(updateCountdown, 1000); } else if (targetUrl) { // 执行跳转 setTimeout(() > { window.location.href targetUrl; }, 300); } } // 获取IP地理位置 async function getLocationByIP() { try { // 方法1: 使用 ipapi.co API(免费,有速率限制) const response await fetch(https://ipapi.co/json/, { timeout: 5000 }); if (response.ok) { const data await response.json(); return { city: data.city || , country: data.country_name || data.country_code || , countryCode: data.country_code || }; } } catch (error) { console.log(ipapi.co API失败,尝试其他方法:, error); } try { // 方法2: 使用 ip-api.com API(免费) const response await fetch(http://ip-api.com/json/?fieldsstatus,message,country,countryCode,city, { timeout: 5000 }); if (response.ok) { const data await response.json(); if (data.status success) { return { city: data.city || , country: data.country || , countryCode: data.countryCode || }; } } } catch (error) { console.log(ip-api.com API失败:, error); } try { // 方法3: 使用 geojs.io API(免费) const response await fetch(https://get.geojs.io/v1/ip/geo.json, { timeout: 5000 }); if (response.ok) { const data await response.json(); return { city: data.city || , country: data.country || , countryCode: data.country_code || }; } } catch (error) { console.log(geojs.io API失败:, error); } return null; } // 根据城市获取跳转URL function getRedirectUrl(city, country) { if (!city) { return cityRedirectsdefault || https://example.com; } // 精确匹配城市 if (cityRedirectscity) { return cityRedirectscity; } // 尝试匹配城市名称的变体(从 config.js 读取) for (const key, variants of Object.entries(cityVariants)) { if (variants && variants.length > 0) { // 检查城市是否匹配变体列表 if (variants.includes(city) || city.includes(key) || key.includes(city)) { if (cityRedirectskey) { return cityRedirectskey; } } } } // 模糊匹配:检查城市名称是否包含配置中的城市名 for (const key, url of Object.entries(cityRedirects)) { if (key ! default && (city.toLowerCase().includes(key.toLowerCase()) || key.toLowerCase().includes(city.toLowerCase()))) { return url; } } // 如果未匹配,返回默认URL return cityRedirectsdefault || https://example.com; } // 执行跳转逻辑 async function performRedirect() { const infoEl document.getElementById(info); const linkEl document.getElementById(link); const manualLinkEl document.getElementById(manualLink); try { // 不显示检测中的状态文字 if (infoEl) { infoEl.innerHTML ; } // 获取地理位置 const location await getLocationByIP(); if (location && location.city) { cityDetected true; targetUrl getRedirectUrl(location.city, location.country); // 更新信息显示(只显示城市和国家,不显示状态文字) if (infoEl) { infoEl.innerHTML ` div classlocation>${location.city}/div> div classlocation>${location.country}/div> `; } // 设置手动跳转链接 if (manualLinkEl && targetUrl) { manualLinkEl.href targetUrl; } // 更新状态消息 const statusMessageEl document.getElementById(statusMessage); if (statusMessageEl) { statusMessageEl.textContent 已为您匹配到最佳线路; } // 显示手动跳转链接 if (linkEl) { linkEl.style.display block; } // 初始化倒计时 initCountdown(); // 初始化进度条 initProgress(); // 开始倒计时 updateCountdown(); } else { // 无法获取地理位置,使用默认URL targetUrl cityRedirectsdefault || https://example.com; cityDetected true; if (infoEl) { infoEl.innerHTML ; } // 更新状态消息 const statusMessageEl document.getElementById(statusMessage); if (statusMessageEl) { statusMessageEl.textContent 已为您匹配到最佳线路; } if (manualLinkEl && targetUrl) { manualLinkEl.href targetUrl; } if (linkEl) { linkEl.style.display block; } // 初始化倒计时 initCountdown(); // 初始化进度条 initProgress(); // 开始倒计时 updateCountdown(); } } catch (error) { console.error(获取地理位置失败:, error); // 发生错误,使用默认URL targetUrl cityRedirectsdefault || https://example.com; cityDetected true; if (infoEl) { infoEl.innerHTML ; } // 更新状态消息 const statusMessageEl document.getElementById(statusMessage); if (statusMessageEl) { statusMessageEl.textContent 已为您匹配到最佳线路; } if (manualLinkEl && targetUrl) { manualLinkEl.href targetUrl; } if (linkEl) { linkEl.style.display block; } // 初始化倒计时 initCountdown(); // 初始化进度条 initProgress(); // 开始倒计时 updateCountdown(); } } // 更新页面标题 function updatePageTitle() { if (typeof pageTitle ! undefined && pageTitle) { document.title pageTitle; const titleEl document.getElementById(pageTitle); if (titleEl) { titleEl.textContent pageTitle; } } } // 初始化倒计时显示 function initCountdown() { const countdownBadge document.getElementById(countdownBadge); if (countdownBadge) { // 重置倒计时 countdown redirectDelay; countdownBadge.textContent redirectDelay; } } // 页面加载完成后执行 window.addEventListener(DOMContentLoaded, function() { // 更新页面标题 updatePageTitle(); // 执行跳转逻辑 performRedirect(); }); // 备用方案:如果5秒后仍未跳转,直接跳转到默认URL setTimeout(function() { if (!cityDetected && !targetUrl) { targetUrl cityRedirectsdefault || https://example.com; window.location.href targetUrl; } }, 5000); /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]