Help
RSS
API
Feed
Maltego
Contact
Domain > 38893889.com
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2025-12-03
104.21.7.3
(
ClassC
)
2026-01-23
172.67.135.139
(
ClassC
)
Port 443
HTTP/1.1 200 OKDate: Fri, 23 Jan 2026 06:17:15 GMTContent-Type: text/html; charsetutf-8Transfer-Encoding: chunkedConnection: keep-aliveAccess-Control-Allow-Origin: *Cache-Control: public, max-age0, must-revalidateLink: https://unpkg.com>; relpreconnectreferrer-policy: strict-origin-when-cross-originx-content-type-options: nosniffVary: accept-encodingReport-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sfztQQZ0v1CL3zXmsqdAkMFofiaD2c46cfsSb3rHu4%2F%2Ff2wv%2FPL0fciEBgfst5TOMITCQ%2BliF72qP8F%2FqLM0qskzta8Rq%2FBavVCZDag%3D%3D}}Nel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Server: cloudflarecf-cache-status: DYNAMICCF-RAY: 9c252ac29c6d1319-PDXalt-svc: h3:443; ma86400 !doctype html>html langzh-CN>head> meta charsetutf-8 /> meta nameviewport contentwidthdevice-width, initial-scale1, viewport-fitcover /> meta namecolor-scheme contentlight dark /> title>Crypto Portal·Entry Navigation/title> meta namedescription contentEncrypted site entry · Intelligent speed test · One-click access to the best route /> link relpreconnect hrefhttps://unpkg.com /> style> @media (min-width: 768px) { .app { width: 430px; /* 固定宽度(可改为 390/414/480 等) */ max-width: 100vw; /* 防止极小窗口溢出 */ margin: 24px auto; /* 居中 */ border-radius: 20px; border: 1px solid var(--border); box-shadow: 0 24px 80px rgba(0, 0, 0, .35), 0 2px 0 rgba(255, 255, 255, .04) inset; overflow: hidden; /* 顶部圆角 & 防止内部溢出 */ } .header { border-radius: 20px 20px 0 0; } .footer { border-radius: 0 0 20px 20px; } } :root { --bg: #061224; --bg2: #071a33; --card: rgba(255, 255, 255, 0.06); --border: rgba(255, 255, 255, 0.10); --text: #e8f1ff; --muted: #a9bddb; --blue1: #2d73ff; --blue2: #00b1ff; --accent: #14e2ff; --good: #22e1a0; --warn: #ffd057; --bad: #ff6f9a; } * { box-sizing: border-box; } html, body { height: 100%; } body { margin: 0; font-family: ui-sans-serif, -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, PingFang SC, Noto Sans CJK SC, Microsoft YaHei, system-ui, sans-serif; color: var(--text); background: radial-gradient(1200px 600px at 80% -10%, rgba(0, 177, 255, .15), transparent 60%), linear-gradient(180deg, var(--bg), var(--bg2)); } .app { min-height: 100%; display: flex; flex-direction: column; } /* 顶部 */ .header { position: sticky; top: 0; z-index: 5; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px 16px; backdrop-filter: blur(8px); background: linear-gradient(180deg, rgba(6, 18, 36, .92), rgba(6, 18, 36, .6)); border-bottom: 1px solid var(--border); } .brand { display: flex; align-items: center; gap: 10px; width: 100%; text-align: center; justify-content: center; } .logo { width: 36px; height: 36px; border-radius: 10px; display: grid; place-items: center; color: #061224; font-weight: 900; letter-spacing: .2px; box-shadow: 0 8px 24px rgba(0, 177, 255, .28), inset 0 0 22px rgba(255, 255, 255, .14); } .titles { /* width: 60%; */ } .titles h1 { margin: 0; font-size: 16px; font-weight: 800; } .titles p { margin: 5px 0 0; font-size: 12px; color: var(--muted); } .refresh { appearance: none; border: 1px solid var(--border); background: var(--card); color: var(--text); padding: 8px 12px; border-radius: 12px; font-weight: 700; } .refresh:disabled { opacity: .6; } /* 顶部提示区 */ .tip { padding: 16px; display: grid; gap: 12px; } .chip { display: inline-flex; align-items: center; gap: 8px; padding: 10px 12px; /* border-radius: 16px; */ border: 1px solid #ffffff; background: rgba(255, 255, 255, .05); font-size: 14px; font-weight: 500; margin-bottom: 10px; } .chip img { border-radius: 16px; } .dot { width: 10px; height: 10px; border-radius: 999px; box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.06) inset; } .state-idle { background: #6f84a1; } .state-good { background: var(--good); box-shadow: 0 0 12px rgba(34, 225, 160, .5); } .state-warn { background: var(--warn); box-shadow: 0 0 12px rgba(255, 208, 87, .45); } .state-bad { background: var(--bad); box-shadow: 0 0 12px rgba(255, 111, 154, .45); } .primary { width: 100%; padding: 12px; border: 0; border-radius: 14px; font-weight: 800; letter-spacing: .2px; color: #061224; background: linear-gradient(135deg, var(--blue1), var(--accent)); box-shadow: 0 10px 30px rgba(45, 115, 255, .25), 0 10px 30px rgba(0, 177, 255, .25); } .primary:disabled { filter: grayscale(1) brightness(.75); box-shadow: none; } /* 列表 */ .list { display: grid; /* gap: 12px; */ padding: 20px; } .card { /* background: linear-gradient(180deg, rgba(255, 255, 255, .08), rgba(255, 255, 255, .04)); */ background-color: #ffffff; /* border: 1px solid var(--border); */ border-radius: 16px; /* padding: 14px; */ box-shadow: 0 8px 24px rgba(0, 0, 0, .22), inset 0 1px 0 rgba(255, 255, 255, .07); margin: 0 0 30px 0; overflow: hidden; } .row { display: flex; align-items: stretch; justify-content: space-between; gap: 12px; height: 55px; } .left { flex: 2; display: flex; align-items: center; justify-content: space-around; padding: 0 10px; color: #000000; font-weight: 500; } .name { margin: 6px 0 4px; font-size: 16px; font-weight: 800; } .url { margin: 0; color: var(--muted); font-size: 12px; word-break: break-all; } .right { flex: 1; display: flex; flex-direction: column; font-size: 16px; font-weight: 500; align-items: center; letter-spacing: 1px; justify-content: center; background: #1E6AED; box-shadow: 0 8px 24px rgba(0, 177, 255, .28), inset 0 0 22px rgba(255, 255, 255, .14); } .metric { text-align: right; } .metric .value { font-size: 18px; font-weight: 900; } .metric .label { font-size: 11px; color: var(--muted); } .actions { margin-top: 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; } .ghost { background: transparent; border: 1px solid var(--border); color: var(--text); padding: 10px 12px; border-radius: 12px; font-weight: 800; } .enter { background: linear-gradient(135deg, var(--blue1), var(--blue2)); color: #061224; border: 0; padding: 10px 12px; border-radius: 12px; font-weight: 900; box-shadow: 0 8px 22px rgba(0, 177, 255, .3); } .badge { display: inline-flex; align-items: center; gap: 6px; font-size: 11px; font-weight: 900; letter-spacing: .3px; border-radius: 999px; padding: 4px 8px; text-transform: uppercase; /* width: 30px; */ height: 30px; } .badge.neutral { background: rgba(169, 189, 219, .18); color: #e3eeff; } .badge.best { background: rgba(0, 249, 0, 0.8); color: #9ff4db; } .badge.good { background: rgba(34, 225, 160, .16); color: #9ff4db; } .badge.warn { background: rgba(255, 208, 87, .16); color: #ffe9a3; } .badge.bad { background: rgba(255, 111, 154, .16); color: #ffc0d2; } .footer { text-align: center; color: var(--muted); padding: 8px 16px 20px; font-size: 12px; } .copy { opacity: .85; margin-top: 2px; } @media (max-width: 360px) { .metric .value { font-size: 16px; } .titles h1 { font-size: 15px; } } v-cloak { display: none; } .splash { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; flex-direction: column; gap: 14px; background: linear-gradient(180deg, var(--bg), var(--bg2)); z-index: 999; } .spinner { width: 48px; height: 48px; border-radius: 50%; border: 3px solid rgba(255, 255, 255, .15); border-top-color: var(--blue1); animation: spin 1s linear infinite; } .mini-spinner { width: 14px; height: 14px; border-radius: 50%; border: 2px solid rgba(255, 255, 255, .25); border-top-color: var(--blue2); animation: spin .8s linear infinite; display: inline-block; margin-right: 6px; } .splash-text { color: var(--muted); font-size: 13px; } .tools { display: flex; align-items: center; gap: 10px; } #translate { position: fixed; right: 10px; top: 20px; z-index: 150; width: 100px; } #translateSelectLanguage { width: 100%; appearance: none; border: 1px solid var(--border); background: var(--card); color: var(--text); padding: 8px 10px; border-radius: 10px; font-weight: 600; } .actions.single { grid-template-columns: 1fr; } @keyframes spin { to { transform: rotate(360deg); } } /* 三条杠基础形态 */ .signal3 { display: inline-flex; align-items: flex-end; gap: 4px; } .signal3 i { width: 4px; border-radius: 2px; background: #c9d3e3; /* 未点亮的灰色 */ display: inline-block; } /* 三条不同高度 */ .signal3 i:nth-child(1) { height: 12px; } .signal3 i:nth-child(2) { height: 16px; } .signal3 i:nth-child(3) { height: 20px; } /* best:3条绿色 */ .signal3data-statebest i { background: #17d85a; } /* good:前2条黄色,其余灰 */ .signal3data-stategood i:nth-child(-n+2) { background: #ffb317; } /* bad:仅第1条红色,其余灰 */ .signal3data-statebad i:nth-child(1) { background: #ff4d6d; } .best { color: #17d85a; } .good { color: #ffb317; } .bad { color: #ff4d6d; } /style>/head>body> div idapp classapp v-cloak> div classsplash v-if!isReady> div classspinner>/div> div classsplash-text>Loading.../div> /div> header classheader> div classbrand> !-- div classlogo> img srclogo.png width100% /> /div> --> div classtitles> h1>Entry Navigation/h1> p>Select the best network to access the official website/p> /div> /div> /header> !-- section classtip> div classchip> Please select the best network to enter the exchange /div> /section> --> main classlist> article @clickenterto(site.domain) classcard v-for(site, i) in targets :keysite.url> div classrow v-ifsite.metrics> div classleft> div>Networkspan>{{i+1}}/span> /div> div styledisplay: flex;align-items: center;> div classsignal3 :data-statebadgeClass(site)> i>/i>i>/i>i>/i> /div> span stylemargin-left: 10px; :classbadgeClass(site)>{{ site.metrics?.latency ?? 0 }}s/span> /div> /div> div classright> span>Enter/span> span>Official/span> /div> /div> div v-else styledisplay: flex;flex-direction: column;align-items: center;justify-content: center; padding: 10px;> div classspinner>/div> /div> /article> /main> footer classfooter> /footer> /div> !-- Vue CDN --> script srcvue.global.prod.js>/script> script> const { createApp, reactive, ref, computed, onMounted, nextTick } Vue createApp({ setup() { const targets reactive() const loading ref(false) const isReady ref(false) function qualityText(site) { const l site.metrics?.latency // if (l null) return zxc.png; // if (l 120) return huojian.png; // if (l 250) return feiji.png; // if (l 400) return qiche.png; // return zxc.png; if (l null) return Neutral; if (l 200) return Best; if (l 500) return Good; if (l 1000) return Warn; return neutral; } function badgeClass(site) { const l site.metrics?.latency if (l null) return bad if (l 1000) return best if (l 2000) return good if (l 3000) return bad return bad } /** * 测试目标 url 的延迟与抖动(返回 { latency, jitter }) * @param {string} url - 例如 https://example.com * @param {number} count5 - 测试次数 * @param {number} timeout4000 - 每次请求超时(ms) */ async function testLatencyJitter(url, count 1, timeout 4000) { function normalizeUrl(u) { return /^https?:\/\//i.test(u) ? u : https:// + u; } function fetchWithTimeout(resource, timeout) { const controller new AbortController(); const id setTimeout(() > controller.abort(), timeout); return fetch(resource, { mode: no-cors, signal: controller.signal }) .finally(() > clearTimeout(id)); } async function probe(u) { const target normalizeUrl(u).replace(/\/$/, ) + /favicon.ico?ts + Date.now(); const start performance.now(); try { await fetchWithTimeout(target, timeout); return performance.now() - start; } catch { // fallback to Image() 测速避免 CORS return await new Promise(resolve > { const img new Image(); const t0 performance.now(); const timer setTimeout(() > resolve(timeout), timeout); img.onload img.onerror () > { clearTimeout(timer); resolve(performance.now() - t0); }; img.src target; }); } } const samples ; for (let i 0; i count; i++) { const ms await probe(url).catch(() > null); if (typeof ms number) samples.push(ms); } if (!samples.length) return { latency: null, jitter: null }; samples.sort((a, b) > a - b); const p50 samplesMath.floor(samples.length * 0.5); const p90 samplesMath.floor(samples.length * 0.9); return { latency: (p50 / 1000).toFixed(3), jitter: Math.max(0, Math.round(p90 - p50)) }; } // 取延迟(ms),没值返回 Infinity 让它排到最后 function getLatencyMs(site) { const ms site?.metrics?.latency; return (typeof ms number && isFinite(ms)) ? ms : Infinity; } // 改进后的测速 + 排序 async function cesu() { // 1) 并发测速 await Promise.all( targets.map(async (item) > { const res await testLatencyJitter(item.domain).catch(() > null); if (res) item.metrics res; // { latency, jitter } else item.metrics { latency: null, jitter: null }; }) ); // 2) 统一排序(低延迟在前,未测/失败在后) targets.sort((a, b) > getLatencyMs(a) - getLatencyMs(b)); // 如果你想在某些环境确保触发更新(一般不需要): // targets.splice(0, targets.length, ...targets); } /** * 向后端上报当前访问域名 * @param {string} apiUrl - 你的接口地址,如 https://api.example.com/collect * @param {object} opts - 可选:{ method, headers, timeout, extra } * @returns {Promiseany>} - 返回服务端 JSON 或文本 */ async function reportCurrentDomain(apiUrl, opts {}) { const method (opts.method || POST).toUpperCase(); const timeout Number(opts.timeout || 8000); const headers Object.assign({ Content-Type: application/json }, opts.headers || {}); const payload Object.assign({ domain: window.location.hostname, ts: Date.now() }, opts.extra || {}); const controller new AbortController(); const t setTimeout(() > controller.abort(), timeout); try { const res await fetch(apiUrl, { method, headers, body: method GET ? undefined : JSON.stringify(payload), signal: controller.signal, // GET 模式下也可通过 query 拼接 }); clearTimeout(t); const ct res.headers.get(content-type) || ; if (!res.ok) throw new Error(HTTP + res.status); return ct.includes(application/json) ? res.json() : res.text(); } finally { clearTimeout(t); } } function useOnShow(fn) { const onPageShow (e) > fn({ type: pageshow, persisted: e.persisted true }); const onVisible () > { if (document.visibilityState visible) fn({ type: visibility }); }; window.addEventListener(pageshow, onPageShow); document.addEventListener(visibilitychange, onVisible); // 可返回卸载函数(如果你以后会销毁组件) return () > { window.removeEventListener(pageshow, onPageShow); document.removeEventListener(visibilitychange, onVisible); }; } async function init() { //获取当前域名 const domain window.location.hostname; console.log(domain); // example.com // ★ 使用示例(按需启用): let res await reportCurrentDomain(https://api.jys168188.com/api/domain/getDomainList, { method: POST, }) if (res.code 1) { targets.length 0; targets.push(...res.data); } } async function enterto(domain) { if (!domain) return; const source window.location.hostname; // 如果没有协议,自动补上 https:// let url domain; if (!/^https?:\/\//i.test(url)) { url https:// + url; } if (window.location.href url) return; // 已在当前域名则不跳转 isReady.value false await addLog(domain) window.location.href url + /#/?source + encodeURIComponent(source); // isReady.value true } async function addLog(url) { const domain window.location.hostname; let res await reportCurrentDomain(https://api.jys168188.com/api/domain/addDomainLog, { method: POST, extra: { zhuDomain: domain, domain: url } }) } onMounted(async () > { await init(); await nextTick(); // 避免首屏闪烁,待节点挂载后再移除遮罩 isReady.value true await cesu() // 后续每次“显示”时再跑 useOnShow(() > { isReady.value true }); window.translate.execute(); }) return { targets, loading, isReady, badgeClass, qualityText, enterto } } }).mount(#app) /script> !-- 引入多语言切换的js --> script srctranslate.js?v1>/script> script> // 1) 读取浏览器语言并规范化到 translate.js 的键 function pickTranslateLang() { const raw (navigator.languages && navigator.languages0) || navigator.language || en; const s raw.toLowerCase(); // 映射到 translate.js 的语言标识 if (s.startsWith(zh)) { // 繁体:TW/HK/MO/Hant if (s.includes(tw) || s.includes(hk) || s.includes(mo) || s.includes(hant)) { return chinese_traditional; } // 其他一律当简体 return chinese_simplified; } if (s.startsWith(en)) return english; if (s.startsWith(ja)) return japanese; if (s.startsWith(ko)) return korean; if (s.startsWith(fr)) return french; if (s.startsWith(de)) return german; if (s.startsWith(es)) return spanish; // …按需继续补充 return english; // 兜底 } // 2) 初始化 translate.js const target pickTranslateLang(); console.log(target) translate.ignore.class.push(notranslate); // 保持与你现有写法一致(忽略特定元素) translate.language.setLocal(english); // 页面原文英文 translate.language.setDefaultTo(target); // 默认目标浏览器推断语言 translate.selectLanguageTag.show false; // 显示语言选择器(方便用户手动改) translate.service.use(client.edge); // 你现用的服务 /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
]