link-status-page 0.0.38 → 0.0.42

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/404.html CHANGED
@@ -2,42 +2,26 @@
2
2
  <html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="color-scheme" content="light"><meta name="theme-color" content="#091426"><meta name="description" content="小星星爱导航永久访问入口"><meta name="referrer" content="no-referrer"><meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' https: data:; style-src 'unsafe-inline'; script-src 'unsafe-inline'; connect-src http: https:; base-uri 'none'; form-action 'none'"><link rel="icon" href="data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 64 64%22%3E%3Crect width=%2264%22 height=%2264%22 rx=%2216%22 fill=%22%233568e8%22/%3E%3Cpath d=%22M32 12l5 15 15 5-15 5-5 15-5-15-15-5 15-5z%22 fill=%22white%22/%3E%3C/svg%3E"><link rel="canonical" href="https://yongjiufabuye.chinazhangsan.ccwu.cc/"><title>小星星爱导航永久发布页</title><style>
3
3
  :root{color-scheme:light;font-family:"Segoe UI Variable","Microsoft YaHei UI","Microsoft YaHei",sans-serif;--ink:#091426;--muted:#5b687d;--paper:#f7f9fc;--surface:#fff;--line:#dce3ee;--blue:#3568e8;--blue-dark:#244fc0;--green:#16845b;--orange:#b45f06;--soft-blue:#edf3ff;--soft-orange:#fff4df}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100dvh;color:var(--ink);background:linear-gradient(180deg,#eaf1ff 0,#f7f9fc 340px);font-size:16px}a{color:inherit}button,a{touch-action:manipulation}.skip-link{position:fixed;left:16px;top:12px;z-index:20;transform:translateY(-150%);padding:10px 14px;border-radius:8px;background:var(--ink);color:#fff}.skip-link:focus{transform:none}.shell{width:min(920px,calc(100% - 32px));margin:0 auto;padding:54px 0 42px}.hero{display:grid;grid-template-columns:72px minmax(0,1fr);gap:20px;align-items:center}.brand-logo{width:64px;height:64px;border-radius:18px;object-fit:cover;background:var(--blue);box-shadow:0 12px 28px rgba(53,104,232,.18)}.brand-fallback{display:grid;place-items:center}.brand-fallback svg{width:34px;fill:#fff}.hero h1{margin:0;font-size:clamp(30px,6vw,50px);line-height:1.12;letter-spacing:-.035em;text-wrap:balance}.hero p{max-width:680px;margin:10px 0 0;color:var(--muted);line-height:1.75}.notice{margin:28px 0 0;padding:14px 17px;border-left:4px solid var(--orange);background:var(--soft-orange);color:#74420c;line-height:1.65}.route-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:34px 0 14px}.route-head h2,.saved h2{margin:0;font-size:21px}.route-head p{margin:0;color:var(--muted)}.routes{position:relative;border:1px solid var(--line);border-radius:20px;background:rgba(255,255,255,.94);overflow:hidden;box-shadow:0 18px 60px rgba(24,48,89,.08)}.route{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;padding:22px 22px 22px 42px;border-bottom:1px solid var(--line)}.route:last-child{border-bottom:0}.route-line{position:absolute;left:20px;top:0;bottom:0;width:2px;background:var(--line)}.route-line:after{content:"";position:absolute;top:31px;left:50%;width:10px;height:10px;border:3px solid var(--surface);border-radius:50%;background:var(--blue);transform:translateX(-50%);box-shadow:0 0 0 1px var(--blue)}.route-title{display:flex;align-items:center;gap:9px}.route h2{margin:0;font-size:18px}.official{padding:3px 7px;border-radius:999px;background:var(--soft-blue);color:var(--blue-dark);font-size:12px;font-weight:750}.route p{margin:6px 0;color:var(--muted);line-height:1.55}.route-url{display:block;color:#52617a;font-size:13px;overflow-wrap:anywhere}.route-actions{display:flex;align-items:center;gap:10px}.route-status{min-width:70px;color:var(--muted);font-size:13px;text-align:center}.route-status.online{color:var(--green);font-weight:750}.route-status.offline{color:var(--orange);font-weight:750}.visit,.saved-row button,.mail-link{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:9px 15px;border:1px solid transparent;border-radius:11px;background:var(--blue);color:#fff;font-weight:750;text-decoration:none;cursor:pointer}.visit:hover,.saved-row button:hover,.mail-link:hover{background:var(--blue-dark)}.visit:focus-visible,.saved-row button:focus-visible,.mail-link:focus-visible,.saved-row a:focus-visible{outline:3px solid rgba(53,104,232,.38);outline-offset:3px}.empty-state{margin:0;padding:34px;color:var(--muted);text-align:center;line-height:1.7}.saved{margin:28px 0 0;padding:24px;border:2px solid var(--blue);border-radius:20px;background:linear-gradient(135deg,#fff 0,#edf3ff 100%);box-shadow:0 18px 44px rgba(36,79,192,.14)}.saved-intro{margin:8px 0 18px;color:#44536b;line-height:1.65}.saved-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:15px 0;border-top:1px solid #cddafd}.saved-row div{min-width:0}.saved-row strong,.saved-row a,.saved-row span{display:block}.saved-row strong{margin-bottom:5px}.saved-row a{color:var(--blue-dark);font-weight:650;overflow-wrap:anywhere}.saved-row.unavailable span{color:var(--muted)}.contact{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:18px;padding:18px;border-radius:14px;background:var(--ink);color:#fff}.contact p{margin:4px 0 0;color:#bec9da;overflow-wrap:anywhere}.contact-actions{display:flex;gap:8px;flex:none}.mail-link,.contact-actions button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:9px 15px;border:1px solid transparent;border-radius:11px;background:#fff;color:var(--ink);font:inherit;font-weight:750;text-decoration:none;cursor:pointer}.mail-link:hover,.contact-actions button:hover{background:#edf3ff}.page-footer{display:flex;justify-content:space-between;gap:18px;margin-top:22px;color:var(--muted);font-size:13px}.page-footer p{margin:0}@media(max-width:650px){.shell{width:min(100% - 24px,920px);padding-top:32px}.hero{grid-template-columns:54px minmax(0,1fr);gap:14px}.brand-logo{width:52px;height:52px;border-radius:14px}.hero h1{font-size:30px}.route-head{display:block}.route-head p{margin-top:6px}.route{grid-template-columns:1fr;padding:20px 16px 20px 36px}.route-line{left:17px}.route-actions{justify-content:space-between}.visit{flex:1}.saved{padding:20px 16px}.saved-row{grid-template-columns:1fr}.saved-row button{width:100%}.contact{align-items:stretch;flex-direction:column}.contact-actions{display:grid;grid-template-columns:1fr 1fr}.mail-link,.contact-actions button{width:100%}.page-footer{display:block}.page-footer p+p{margin-top:5px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
4
4
  .saved>.saved-row:first-child{padding-top:0;border-top:0}
5
- </style></head><body><a class="skip-link" href="#main">跳到主要内容</a><main id="main" class="shell"><header class="hero"><span class="brand-logo brand-fallback" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M12 2.8l2.3 6.3 6.2 2.4-6.2 2.4-2.3 6.3-2.3-6.3-6.2-2.4 6.2-2.4L12 2.8z"/></svg></span><div><h1>小星星爱导航永久发布页</h1><p>小星星爱导航永久访问入口</p></div></header><aside class="notice" aria-label="站点通知">请同时收藏本页展示的两个永久发布地址,以便随时获取最新入口。</aside><section class="saved" aria-label="永久发布地址"><div class="saved-row"><div><strong>自定义永久发布域名</strong><a href="https://yongjiufabuye.chinazhangsan.ccwu.cc/" target="_blank" rel="noopener noreferrer">https://yongjiufabuye.chinazhangsan.ccwu.cc/</a></div><button type="button" data-copy="https://yongjiufabuye.chinazhangsan.ccwu.cc/">复制地址</button></div><div class="saved-row"><div><strong>GitHub Pages 发布地址</strong><a href="https://chinazhangsan999-crypto.github.io/control-center-fabuye" target="_blank" rel="noopener noreferrer">https://chinazhangsan999-crypto.github.io/control-center-fabuye</a></div><button type="button" data-copy="https://chinazhangsan999-crypto.github.io/control-center-fabuye">复制地址</button></div><div class="saved-row"><div><strong>npm CDN 发布地址</strong><a href="https://unpkg.com/link-status-page@latest/index.html" target="_blank" rel="noopener noreferrer">https://unpkg.com/link-status-page@latest/index.html</a></div><button type="button" data-copy="https://unpkg.com/link-status-page@latest/index.html">复制地址</button></div></section><div class="route-head"><div><h2>选择访问入口</h2><p>页面打开后会在后台并行检查各条线路,不阻塞您直接访问。</p></div><p id="check-summary" role="status" aria-atomic="true">准备检查线路</p></div><section id="routes" class="routes" aria-label="可用访问入口"><article class="route" data-route data-url="https://qiantai.chinazhangsan.ccwu.cc/" data-order="0">
5
+ </style></head><body><a class="skip-link" href="#main">跳到主要内容</a><main id="main" class="shell"><header class="hero"><span class="brand-logo brand-fallback" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M12 2.8l2.3 6.3 6.2 2.4-6.2 2.4-2.3 6.3-2.3-6.3-6.2-2.4 6.2-2.4L12 2.8z"/></svg></span><div><h1>小星星爱导航永久发布页</h1><p>小星星爱导航永久访问入口</p></div></header><aside class="notice" aria-label="站点通知">请同时收藏本页展示的两个永久发布地址,以便随时获取最新入口。</aside><section class="saved" aria-label="永久发布地址"><div class="saved-row"><div><strong>自定义永久发布域名</strong><a href="https://yongjiufabuye.chinazhangsan.ccwu.cc/" target="_blank" rel="noopener noreferrer">https://yongjiufabuye.chinazhangsan.ccwu.cc/</a></div><button type="button" data-copy="https://yongjiufabuye.chinazhangsan.ccwu.cc/">复制地址</button></div><div class="saved-row"><div><strong>GitHub Pages 发布地址</strong><a href="https://chinazhangsan999-crypto.github.io/control-center-fabuye" target="_blank" rel="noopener noreferrer">https://chinazhangsan999-crypto.github.io/control-center-fabuye</a></div><button type="button" data-copy="https://chinazhangsan999-crypto.github.io/control-center-fabuye">复制地址</button></div><div class="saved-row"><div><strong>主线路 · 推荐线路 · jsDelivr</strong><a href="https://cdn.jsdelivr.net/npm/link-status-page@latest/index.html" target="_blank" rel="noopener noreferrer">https://cdn.jsdelivr.net/npm/link-status-page@latest/index.html</a></div><button type="button" data-copy="https://cdn.jsdelivr.net/npm/link-status-page@latest/index.html">复制地址</button></div><div class="saved-row"><div><strong>备用线路 1 · UNPKG</strong><a href="https://unpkg.com/link-status-page@latest/index.html" target="_blank" rel="noopener noreferrer">https://unpkg.com/link-status-page@latest/index.html</a></div><button type="button" data-copy="https://unpkg.com/link-status-page@latest/index.html">复制地址</button></div></section><div class="route-head"><div><h2>选择访问入口</h2><p>页面打开后会在后台并行检查各条线路,不阻塞您直接访问。</p></div><p id="check-summary" role="status" aria-atomic="true">准备检查线路</p></div><section id="routes" class="routes" aria-label="可用访问入口"><article class="route" data-route data-url="https://qiantai.chinazhangsan.ccwu.cc/" data-order="0">
6
6
  <span class="route-line" aria-hidden="true"></span>
7
7
  <div class="route-copy"><div class="route-title"><h2>主站官方入口</h2><span class="official">主站</span></div><p>小星星爱导航</p><span class="route-url">https://qiantai.chinazhangsan.ccwu.cc/</span></div>
8
8
  <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://qiantai.chinazhangsan.ccwu.cc/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
9
- </article><article class="route" data-route data-url="https://www.sm.com/" data-order="1">
10
- <span class="route-line" aria-hidden="true"></span>
11
- <div class="route-copy"><div class="route-title"><h2>1213+64+64</h2></div><p>3.21E+08</p><span class="route-url">https://www.sm.com/</span></div>
12
- <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://www.sm.com/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
13
- </article><article class="route" data-route data-url="https://github.com/" data-order="2">
14
- <span class="route-line" aria-hidden="true"></span>
15
- <div class="route-copy"><div class="route-title"><h2>1234</h2></div><p>4321</p><span class="route-url">https://github.com/</span></div>
16
- <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://github.com/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
17
- </article><article class="route" data-route data-url="https://node3.example.com/" data-order="3">
9
+ </article><article class="route" data-route data-url="https://node3.example.com/" data-order="1">
18
10
  <span class="route-line" aria-hidden="true"></span>
19
11
  <div class="route-copy"><div class="route-title"><h2>亚太海外节点</h2></div><p>星环导航亚太站</p><span class="route-url">https://node3.example.com/</span></div>
20
12
  <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://node3.example.com/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
21
- </article><article class="route" data-route data-url="https://node1.example.com/" data-order="4">
13
+ </article><article class="route" data-route data-url="https://node1.example.com/" data-order="2">
22
14
  <span class="route-line" aria-hidden="true"></span>
23
15
  <div class="route-copy"><div class="route-title"><h2>华东高速节点</h2></div><p>星环导航华东站</p><span class="route-url">https://node1.example.com/</span></div>
24
16
  <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://node1.example.com/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
25
- </article><article class="route" data-route data-url="https://node2.example.com/" data-order="5">
17
+ </article><article class="route" data-route data-url="https://node2.example.com/" data-order="3">
26
18
  <span class="route-line" aria-hidden="true"></span>
27
19
  <div class="route-copy"><div class="route-title"><h2>华南备用节点</h2></div><p>星环导航华南站</p><span class="route-url">https://node2.example.com/</span></div>
28
20
  <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://node2.example.com/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
29
- </article><article class="route" data-route data-url="https://www.bing.com/" data-order="6">
30
- <span class="route-line" aria-hidden="true"></span>
31
- <div class="route-copy"><div class="route-title"><h2>阿大撒大撒</h2></div><p>啊大飒飒法发</p><span class="route-url">https://www.bing.com/</span></div>
32
- <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://www.bing.com/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
33
- </article><article class="route" data-route data-url="https://www.bilibili.com1/" data-order="7">
34
- <span class="route-line" aria-hidden="true"></span>
35
- <div class="route-copy"><div class="route-title"><h2>安抚</h2></div><p>是否是</p><span class="route-url">https://www.bilibili.com1/</span></div>
36
- <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://www.bilibili.com1/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
37
- </article><article class="route" data-route data-url="https://link.chinazhangsan.ccwu.cc/" data-order="8">
21
+ </article><article class="route" data-route data-url="https://link.chinazhangsan.ccwu.cc/" data-order="4">
38
22
  <span class="route-line" aria-hidden="true"></span>
39
23
  <div class="route-copy"><div class="route-title"><h2>小星星爱导航</h2><span class="official">主站</span></div><p>官方网站入口</p><span class="route-url">https://link.chinazhangsan.ccwu.cc/</span></div>
40
24
  <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://link.chinazhangsan.ccwu.cc/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
41
- </article></section><footer class="page-footer"><p>小星星爱导航 · 永久发布页</p><p>更新于 2026年9月1807:47(北京时间)</p></footer></main><script>
42
- (()=>{'use strict';const routes=[...document.querySelectorAll('[data-route]')],summary=document.querySelector('#check-summary'),container=document.querySelector('#routes');async function copy(value,button){try{await navigator.clipboard.writeText(value)}catch{const area=document.createElement('textarea');area.value=value;area.style.position='fixed';area.style.opacity='0';document.body.append(area);area.select();document.execCommand('copy');area.remove()}const old=button.textContent;button.textContent='已复制';setTimeout(()=>{button.textContent=old},1600)}function checkRoute(card,index){return new Promise(resolve=>{const status=card.querySelector('[data-status]'),probeUrl=new URL('/.well-known/route-health.gif',card.dataset.url),image=new Image(),started=performance.now();let finished=false;probeUrl.searchParams.set('_t',Date.now().toString());probeUrl.searchParams.set('_r',Math.random().toString(36).slice(2));function finish(ok,reason){if(finished)return;finished=true;clearTimeout(timer);const elapsed=Math.max(1,Math.round(performance.now()-started));status.textContent=ok?'正常 · '+elapsed+' ms':reason==='timeout'?'检测超时':'暂不可用';status.className='route-status '+(ok?'online':'offline');image.onload=null;image.onerror=null;resolve({card,ok,ms:ok?elapsed:999999,index,reason})}image.referrerPolicy='no-referrer';image.onload=()=>finish(image.naturalWidth===1&&image.naturalHeight===1,'invalid_image');image.onerror=()=>finish(false,'load_error');const timer=setTimeout(()=>finish(false,'timeout'),5000);image.src=probeUrl.href})}document.querySelectorAll('[data-copy]').forEach(button=>button.addEventListener('click',()=>copy(button.dataset.copy,button)));if(!routes.length){summary.textContent='当前无可检查线路';return}summary.textContent='正在检查 '+routes.length+' 条线路';Promise.all(routes.map(checkRoute)).then(results=>{results.sort((a,b)=>Number(b.ok)-Number(a.ok)||a.ms-b.ms||a.index-b.index).forEach(item=>container.append(item.card));const online=results.filter(item=>item.ok).length,timeouts=results.filter(item=>item.reason==='timeout').length,offline=results.length-online-timeouts;summary.textContent='访客线路检测完成:'+online+' 条正常,'+offline+' 条暂不可用,'+timeouts+' 条检测超时'})})();
25
+ </article></section><footer class="page-footer"><p>小星星爱导航 · 永久发布页</p><p>更新于 2026年9月2019:46(北京时间)</p></footer></main><script>
26
+ (()=>{'use strict';const routes=[...document.querySelectorAll('[data-route]')],summary=document.querySelector('#check-summary'),container=document.querySelector('#routes');async function copy(value,button){try{await navigator.clipboard.writeText(value)}catch{const area=document.createElement('textarea');area.value=value;area.style.position='fixed';area.style.opacity='0';document.body.append(area);area.select();document.execCommand('copy');area.remove()}const old=button.textContent;button.textContent='已复制';setTimeout(()=>{button.textContent=old},1600)}function checkRoute(card,index){return new Promise(resolve=>{const status=card.querySelector('[data-status]'),probeUrl=new URL('/.well-known/route-health.gif',card.dataset.url),image=new Image(),started=performance.now();let finished=false;probeUrl.searchParams.set('_t',Date.now().toString());probeUrl.searchParams.set('_r',Math.random().toString(36).slice(2));function finish(ok,reason){if(finished)return;finished=true;clearTimeout(timer);const elapsed=Math.max(1,Math.round(performance.now()-started));status.textContent=ok?'正常':'检查超时';status.className='route-status '+(ok?'online':'offline');image.onload=null;image.onerror=null;resolve({card,ok,ms:ok?elapsed:999999,index,reason})}image.referrerPolicy='no-referrer';image.onload=()=>finish(image.naturalWidth===1&&image.naturalHeight===1,'invalid_image');image.onerror=()=>finish(false,'load_error');const timer=setTimeout(()=>finish(false,'timeout'),5000);image.src=probeUrl.href})}document.querySelectorAll('[data-copy]').forEach(button=>button.addEventListener('click',()=>copy(button.dataset.copy,button)));if(!routes.length){summary.textContent='当前无可检查线路';return}summary.textContent='正在检查 '+routes.length+' 条线路';Promise.all(routes.map(checkRoute)).then(results=>{results.sort((a,b)=>Number(b.ok)-Number(a.ok)||a.ms-b.ms||a.index-b.index).forEach(item=>container.append(item.card));const online=results.filter(item=>item.ok).length,timeouts=results.length-online;summary.textContent='访客线路检测完成:'+online+' 条正常,'+timeouts+' 条检查超时'})})();
43
27
  </script></body></html>
package/index.html CHANGED
@@ -2,42 +2,26 @@
2
2
  <html lang="zh-CN"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="color-scheme" content="light"><meta name="theme-color" content="#091426"><meta name="description" content="小星星爱导航永久访问入口"><meta name="referrer" content="no-referrer"><meta http-equiv="Content-Security-Policy" content="default-src 'self'; img-src 'self' https: data:; style-src 'unsafe-inline'; script-src 'unsafe-inline'; connect-src http: https:; base-uri 'none'; form-action 'none'"><link rel="icon" href="data:image/svg+xml,%3Csvg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 64 64%22%3E%3Crect width=%2264%22 height=%2264%22 rx=%2216%22 fill=%22%233568e8%22/%3E%3Cpath d=%22M32 12l5 15 15 5-15 5-5 15-5-15-15-5 15-5z%22 fill=%22white%22/%3E%3C/svg%3E"><link rel="canonical" href="https://yongjiufabuye.chinazhangsan.ccwu.cc/"><title>小星星爱导航永久发布页</title><style>
3
3
  :root{color-scheme:light;font-family:"Segoe UI Variable","Microsoft YaHei UI","Microsoft YaHei",sans-serif;--ink:#091426;--muted:#5b687d;--paper:#f7f9fc;--surface:#fff;--line:#dce3ee;--blue:#3568e8;--blue-dark:#244fc0;--green:#16845b;--orange:#b45f06;--soft-blue:#edf3ff;--soft-orange:#fff4df}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100dvh;color:var(--ink);background:linear-gradient(180deg,#eaf1ff 0,#f7f9fc 340px);font-size:16px}a{color:inherit}button,a{touch-action:manipulation}.skip-link{position:fixed;left:16px;top:12px;z-index:20;transform:translateY(-150%);padding:10px 14px;border-radius:8px;background:var(--ink);color:#fff}.skip-link:focus{transform:none}.shell{width:min(920px,calc(100% - 32px));margin:0 auto;padding:54px 0 42px}.hero{display:grid;grid-template-columns:72px minmax(0,1fr);gap:20px;align-items:center}.brand-logo{width:64px;height:64px;border-radius:18px;object-fit:cover;background:var(--blue);box-shadow:0 12px 28px rgba(53,104,232,.18)}.brand-fallback{display:grid;place-items:center}.brand-fallback svg{width:34px;fill:#fff}.hero h1{margin:0;font-size:clamp(30px,6vw,50px);line-height:1.12;letter-spacing:-.035em;text-wrap:balance}.hero p{max-width:680px;margin:10px 0 0;color:var(--muted);line-height:1.75}.notice{margin:28px 0 0;padding:14px 17px;border-left:4px solid var(--orange);background:var(--soft-orange);color:#74420c;line-height:1.65}.route-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:34px 0 14px}.route-head h2,.saved h2{margin:0;font-size:21px}.route-head p{margin:0;color:var(--muted)}.routes{position:relative;border:1px solid var(--line);border-radius:20px;background:rgba(255,255,255,.94);overflow:hidden;box-shadow:0 18px 60px rgba(24,48,89,.08)}.route{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;padding:22px 22px 22px 42px;border-bottom:1px solid var(--line)}.route:last-child{border-bottom:0}.route-line{position:absolute;left:20px;top:0;bottom:0;width:2px;background:var(--line)}.route-line:after{content:"";position:absolute;top:31px;left:50%;width:10px;height:10px;border:3px solid var(--surface);border-radius:50%;background:var(--blue);transform:translateX(-50%);box-shadow:0 0 0 1px var(--blue)}.route-title{display:flex;align-items:center;gap:9px}.route h2{margin:0;font-size:18px}.official{padding:3px 7px;border-radius:999px;background:var(--soft-blue);color:var(--blue-dark);font-size:12px;font-weight:750}.route p{margin:6px 0;color:var(--muted);line-height:1.55}.route-url{display:block;color:#52617a;font-size:13px;overflow-wrap:anywhere}.route-actions{display:flex;align-items:center;gap:10px}.route-status{min-width:70px;color:var(--muted);font-size:13px;text-align:center}.route-status.online{color:var(--green);font-weight:750}.route-status.offline{color:var(--orange);font-weight:750}.visit,.saved-row button,.mail-link{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:9px 15px;border:1px solid transparent;border-radius:11px;background:var(--blue);color:#fff;font-weight:750;text-decoration:none;cursor:pointer}.visit:hover,.saved-row button:hover,.mail-link:hover{background:var(--blue-dark)}.visit:focus-visible,.saved-row button:focus-visible,.mail-link:focus-visible,.saved-row a:focus-visible{outline:3px solid rgba(53,104,232,.38);outline-offset:3px}.empty-state{margin:0;padding:34px;color:var(--muted);text-align:center;line-height:1.7}.saved{margin:28px 0 0;padding:24px;border:2px solid var(--blue);border-radius:20px;background:linear-gradient(135deg,#fff 0,#edf3ff 100%);box-shadow:0 18px 44px rgba(36,79,192,.14)}.saved-intro{margin:8px 0 18px;color:#44536b;line-height:1.65}.saved-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;align-items:center;padding:15px 0;border-top:1px solid #cddafd}.saved-row div{min-width:0}.saved-row strong,.saved-row a,.saved-row span{display:block}.saved-row strong{margin-bottom:5px}.saved-row a{color:var(--blue-dark);font-weight:650;overflow-wrap:anywhere}.saved-row.unavailable span{color:var(--muted)}.contact{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-top:18px;padding:18px;border-radius:14px;background:var(--ink);color:#fff}.contact p{margin:4px 0 0;color:#bec9da;overflow-wrap:anywhere}.contact-actions{display:flex;gap:8px;flex:none}.mail-link,.contact-actions button{min-height:44px;display:inline-flex;align-items:center;justify-content:center;padding:9px 15px;border:1px solid transparent;border-radius:11px;background:#fff;color:var(--ink);font:inherit;font-weight:750;text-decoration:none;cursor:pointer}.mail-link:hover,.contact-actions button:hover{background:#edf3ff}.page-footer{display:flex;justify-content:space-between;gap:18px;margin-top:22px;color:var(--muted);font-size:13px}.page-footer p{margin:0}@media(max-width:650px){.shell{width:min(100% - 24px,920px);padding-top:32px}.hero{grid-template-columns:54px minmax(0,1fr);gap:14px}.brand-logo{width:52px;height:52px;border-radius:14px}.hero h1{font-size:30px}.route-head{display:block}.route-head p{margin-top:6px}.route{grid-template-columns:1fr;padding:20px 16px 20px 36px}.route-line{left:17px}.route-actions{justify-content:space-between}.visit{flex:1}.saved{padding:20px 16px}.saved-row{grid-template-columns:1fr}.saved-row button{width:100%}.contact{align-items:stretch;flex-direction:column}.contact-actions{display:grid;grid-template-columns:1fr 1fr}.mail-link,.contact-actions button{width:100%}.page-footer{display:block}.page-footer p+p{margin-top:5px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
4
4
  .saved>.saved-row:first-child{padding-top:0;border-top:0}
5
- </style></head><body><a class="skip-link" href="#main">跳到主要内容</a><main id="main" class="shell"><header class="hero"><span class="brand-logo brand-fallback" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M12 2.8l2.3 6.3 6.2 2.4-6.2 2.4-2.3 6.3-2.3-6.3-6.2-2.4 6.2-2.4L12 2.8z"/></svg></span><div><h1>小星星爱导航永久发布页</h1><p>小星星爱导航永久访问入口</p></div></header><aside class="notice" aria-label="站点通知">请同时收藏本页展示的两个永久发布地址,以便随时获取最新入口。</aside><section class="saved" aria-label="永久发布地址"><div class="saved-row"><div><strong>自定义永久发布域名</strong><a href="https://yongjiufabuye.chinazhangsan.ccwu.cc/" target="_blank" rel="noopener noreferrer">https://yongjiufabuye.chinazhangsan.ccwu.cc/</a></div><button type="button" data-copy="https://yongjiufabuye.chinazhangsan.ccwu.cc/">复制地址</button></div><div class="saved-row"><div><strong>GitHub Pages 发布地址</strong><a href="https://chinazhangsan999-crypto.github.io/control-center-fabuye" target="_blank" rel="noopener noreferrer">https://chinazhangsan999-crypto.github.io/control-center-fabuye</a></div><button type="button" data-copy="https://chinazhangsan999-crypto.github.io/control-center-fabuye">复制地址</button></div><div class="saved-row"><div><strong>npm CDN 发布地址</strong><a href="https://unpkg.com/link-status-page@latest/index.html" target="_blank" rel="noopener noreferrer">https://unpkg.com/link-status-page@latest/index.html</a></div><button type="button" data-copy="https://unpkg.com/link-status-page@latest/index.html">复制地址</button></div></section><div class="route-head"><div><h2>选择访问入口</h2><p>页面打开后会在后台并行检查各条线路,不阻塞您直接访问。</p></div><p id="check-summary" role="status" aria-atomic="true">准备检查线路</p></div><section id="routes" class="routes" aria-label="可用访问入口"><article class="route" data-route data-url="https://qiantai.chinazhangsan.ccwu.cc/" data-order="0">
5
+ </style></head><body><a class="skip-link" href="#main">跳到主要内容</a><main id="main" class="shell"><header class="hero"><span class="brand-logo brand-fallback" aria-hidden="true"><svg viewBox="0 0 24 24"><path d="M12 2.8l2.3 6.3 6.2 2.4-6.2 2.4-2.3 6.3-2.3-6.3-6.2-2.4 6.2-2.4L12 2.8z"/></svg></span><div><h1>小星星爱导航永久发布页</h1><p>小星星爱导航永久访问入口</p></div></header><aside class="notice" aria-label="站点通知">请同时收藏本页展示的两个永久发布地址,以便随时获取最新入口。</aside><section class="saved" aria-label="永久发布地址"><div class="saved-row"><div><strong>自定义永久发布域名</strong><a href="https://yongjiufabuye.chinazhangsan.ccwu.cc/" target="_blank" rel="noopener noreferrer">https://yongjiufabuye.chinazhangsan.ccwu.cc/</a></div><button type="button" data-copy="https://yongjiufabuye.chinazhangsan.ccwu.cc/">复制地址</button></div><div class="saved-row"><div><strong>GitHub Pages 发布地址</strong><a href="https://chinazhangsan999-crypto.github.io/control-center-fabuye" target="_blank" rel="noopener noreferrer">https://chinazhangsan999-crypto.github.io/control-center-fabuye</a></div><button type="button" data-copy="https://chinazhangsan999-crypto.github.io/control-center-fabuye">复制地址</button></div><div class="saved-row"><div><strong>主线路 · 推荐线路 · jsDelivr</strong><a href="https://cdn.jsdelivr.net/npm/link-status-page@latest/index.html" target="_blank" rel="noopener noreferrer">https://cdn.jsdelivr.net/npm/link-status-page@latest/index.html</a></div><button type="button" data-copy="https://cdn.jsdelivr.net/npm/link-status-page@latest/index.html">复制地址</button></div><div class="saved-row"><div><strong>备用线路 1 · UNPKG</strong><a href="https://unpkg.com/link-status-page@latest/index.html" target="_blank" rel="noopener noreferrer">https://unpkg.com/link-status-page@latest/index.html</a></div><button type="button" data-copy="https://unpkg.com/link-status-page@latest/index.html">复制地址</button></div></section><div class="route-head"><div><h2>选择访问入口</h2><p>页面打开后会在后台并行检查各条线路,不阻塞您直接访问。</p></div><p id="check-summary" role="status" aria-atomic="true">准备检查线路</p></div><section id="routes" class="routes" aria-label="可用访问入口"><article class="route" data-route data-url="https://qiantai.chinazhangsan.ccwu.cc/" data-order="0">
6
6
  <span class="route-line" aria-hidden="true"></span>
7
7
  <div class="route-copy"><div class="route-title"><h2>主站官方入口</h2><span class="official">主站</span></div><p>小星星爱导航</p><span class="route-url">https://qiantai.chinazhangsan.ccwu.cc/</span></div>
8
8
  <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://qiantai.chinazhangsan.ccwu.cc/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
9
- </article><article class="route" data-route data-url="https://www.sm.com/" data-order="1">
10
- <span class="route-line" aria-hidden="true"></span>
11
- <div class="route-copy"><div class="route-title"><h2>1213+64+64</h2></div><p>3.21E+08</p><span class="route-url">https://www.sm.com/</span></div>
12
- <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://www.sm.com/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
13
- </article><article class="route" data-route data-url="https://github.com/" data-order="2">
14
- <span class="route-line" aria-hidden="true"></span>
15
- <div class="route-copy"><div class="route-title"><h2>1234</h2></div><p>4321</p><span class="route-url">https://github.com/</span></div>
16
- <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://github.com/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
17
- </article><article class="route" data-route data-url="https://node3.example.com/" data-order="3">
9
+ </article><article class="route" data-route data-url="https://node3.example.com/" data-order="1">
18
10
  <span class="route-line" aria-hidden="true"></span>
19
11
  <div class="route-copy"><div class="route-title"><h2>亚太海外节点</h2></div><p>星环导航亚太站</p><span class="route-url">https://node3.example.com/</span></div>
20
12
  <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://node3.example.com/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
21
- </article><article class="route" data-route data-url="https://node1.example.com/" data-order="4">
13
+ </article><article class="route" data-route data-url="https://node1.example.com/" data-order="2">
22
14
  <span class="route-line" aria-hidden="true"></span>
23
15
  <div class="route-copy"><div class="route-title"><h2>华东高速节点</h2></div><p>星环导航华东站</p><span class="route-url">https://node1.example.com/</span></div>
24
16
  <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://node1.example.com/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
25
- </article><article class="route" data-route data-url="https://node2.example.com/" data-order="5">
17
+ </article><article class="route" data-route data-url="https://node2.example.com/" data-order="3">
26
18
  <span class="route-line" aria-hidden="true"></span>
27
19
  <div class="route-copy"><div class="route-title"><h2>华南备用节点</h2></div><p>星环导航华南站</p><span class="route-url">https://node2.example.com/</span></div>
28
20
  <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://node2.example.com/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
29
- </article><article class="route" data-route data-url="https://www.bing.com/" data-order="6">
30
- <span class="route-line" aria-hidden="true"></span>
31
- <div class="route-copy"><div class="route-title"><h2>阿大撒大撒</h2></div><p>啊大飒飒法发</p><span class="route-url">https://www.bing.com/</span></div>
32
- <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://www.bing.com/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
33
- </article><article class="route" data-route data-url="https://www.bilibili.com1/" data-order="7">
34
- <span class="route-line" aria-hidden="true"></span>
35
- <div class="route-copy"><div class="route-title"><h2>安抚</h2></div><p>是否是</p><span class="route-url">https://www.bilibili.com1/</span></div>
36
- <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://www.bilibili.com1/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
37
- </article><article class="route" data-route data-url="https://link.chinazhangsan.ccwu.cc/" data-order="8">
21
+ </article><article class="route" data-route data-url="https://link.chinazhangsan.ccwu.cc/" data-order="4">
38
22
  <span class="route-line" aria-hidden="true"></span>
39
23
  <div class="route-copy"><div class="route-title"><h2>小星星爱导航</h2><span class="official">主站</span></div><p>官方网站入口</p><span class="route-url">https://link.chinazhangsan.ccwu.cc/</span></div>
40
24
  <div class="route-actions"><span class="route-status checking" data-status>待检查</span><a class="visit" href="https://link.chinazhangsan.ccwu.cc/" target="_blank" rel="noopener noreferrer" referrerpolicy="no-referrer">打开入口</a></div>
41
- </article></section><footer class="page-footer"><p>小星星爱导航 · 永久发布页</p><p>更新于 2026年9月1807:47(北京时间)</p></footer></main><script>
42
- (()=>{'use strict';const routes=[...document.querySelectorAll('[data-route]')],summary=document.querySelector('#check-summary'),container=document.querySelector('#routes');async function copy(value,button){try{await navigator.clipboard.writeText(value)}catch{const area=document.createElement('textarea');area.value=value;area.style.position='fixed';area.style.opacity='0';document.body.append(area);area.select();document.execCommand('copy');area.remove()}const old=button.textContent;button.textContent='已复制';setTimeout(()=>{button.textContent=old},1600)}function checkRoute(card,index){return new Promise(resolve=>{const status=card.querySelector('[data-status]'),probeUrl=new URL('/.well-known/route-health.gif',card.dataset.url),image=new Image(),started=performance.now();let finished=false;probeUrl.searchParams.set('_t',Date.now().toString());probeUrl.searchParams.set('_r',Math.random().toString(36).slice(2));function finish(ok,reason){if(finished)return;finished=true;clearTimeout(timer);const elapsed=Math.max(1,Math.round(performance.now()-started));status.textContent=ok?'正常 · '+elapsed+' ms':reason==='timeout'?'检测超时':'暂不可用';status.className='route-status '+(ok?'online':'offline');image.onload=null;image.onerror=null;resolve({card,ok,ms:ok?elapsed:999999,index,reason})}image.referrerPolicy='no-referrer';image.onload=()=>finish(image.naturalWidth===1&&image.naturalHeight===1,'invalid_image');image.onerror=()=>finish(false,'load_error');const timer=setTimeout(()=>finish(false,'timeout'),5000);image.src=probeUrl.href})}document.querySelectorAll('[data-copy]').forEach(button=>button.addEventListener('click',()=>copy(button.dataset.copy,button)));if(!routes.length){summary.textContent='当前无可检查线路';return}summary.textContent='正在检查 '+routes.length+' 条线路';Promise.all(routes.map(checkRoute)).then(results=>{results.sort((a,b)=>Number(b.ok)-Number(a.ok)||a.ms-b.ms||a.index-b.index).forEach(item=>container.append(item.card));const online=results.filter(item=>item.ok).length,timeouts=results.filter(item=>item.reason==='timeout').length,offline=results.length-online-timeouts;summary.textContent='访客线路检测完成:'+online+' 条正常,'+offline+' 条暂不可用,'+timeouts+' 条检测超时'})})();
25
+ </article></section><footer class="page-footer"><p>小星星爱导航 · 永久发布页</p><p>更新于 2026年9月2019:46(北京时间)</p></footer></main><script>
26
+ (()=>{'use strict';const routes=[...document.querySelectorAll('[data-route]')],summary=document.querySelector('#check-summary'),container=document.querySelector('#routes');async function copy(value,button){try{await navigator.clipboard.writeText(value)}catch{const area=document.createElement('textarea');area.value=value;area.style.position='fixed';area.style.opacity='0';document.body.append(area);area.select();document.execCommand('copy');area.remove()}const old=button.textContent;button.textContent='已复制';setTimeout(()=>{button.textContent=old},1600)}function checkRoute(card,index){return new Promise(resolve=>{const status=card.querySelector('[data-status]'),probeUrl=new URL('/.well-known/route-health.gif',card.dataset.url),image=new Image(),started=performance.now();let finished=false;probeUrl.searchParams.set('_t',Date.now().toString());probeUrl.searchParams.set('_r',Math.random().toString(36).slice(2));function finish(ok,reason){if(finished)return;finished=true;clearTimeout(timer);const elapsed=Math.max(1,Math.round(performance.now()-started));status.textContent=ok?'正常':'检查超时';status.className='route-status '+(ok?'online':'offline');image.onload=null;image.onerror=null;resolve({card,ok,ms:ok?elapsed:999999,index,reason})}image.referrerPolicy='no-referrer';image.onload=()=>finish(image.naturalWidth===1&&image.naturalHeight===1,'invalid_image');image.onerror=()=>finish(false,'load_error');const timer=setTimeout(()=>finish(false,'timeout'),5000);image.src=probeUrl.href})}document.querySelectorAll('[data-copy]').forEach(button=>button.addEventListener('click',()=>copy(button.dataset.copy,button)));if(!routes.length){summary.textContent='当前无可检查线路';return}summary.textContent='正在检查 '+routes.length+' 条线路';Promise.all(routes.map(checkRoute)).then(results=>{results.sort((a,b)=>Number(b.ok)-Number(a.ok)||a.ms-b.ms||a.index-b.index).forEach(item=>container.append(item.card));const online=results.filter(item=>item.ok).length,timeouts=results.length-online;summary.textContent='访客线路检测完成:'+online+' 条正常,'+timeouts+' 条检查超时'})})();
43
27
  </script></body></html>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "link-status-page",
3
- "version": "0.0.38",
3
+ "version": "0.0.42",
4
4
  "description": "小星星爱导航 npm 完整永久发布页",
5
5
  "private": false,
6
6
  "license": "UNLICENSED",
@@ -1,11 +1,21 @@
1
1
  {
2
2
  "format": "webring-publish-page-v1",
3
3
  "site": "小星星爱导航",
4
- "generated_at": "2026-09-17T23:47:43.925Z",
5
- "sha256": "102c1c9ac43971558e4ef6e1d7e7b95576dded3dcb45739a433eaa864eedf249",
4
+ "generated_at": "2026-09-20T11:46:46.853Z",
5
+ "sha256": "a8ae7a6105e62ae0cd2ba97565292bf2655c535c76de28e49e439d5260b97d29",
6
6
  "addresses": {
7
7
  "permanent": "https://yongjiufabuye.chinazhangsan.ccwu.cc/",
8
8
  "github_pages": "https://chinazhangsan999-crypto.github.io/control-center-fabuye",
9
- "npm_cdn": "https://unpkg.com/link-status-page@latest/index.html"
9
+ "npm_cdn": "https://cdn.jsdelivr.net/npm/link-status-page@latest/index.html",
10
+ "npm_cdns": [
11
+ {
12
+ "provider": "jsdelivr",
13
+ "url": "https://cdn.jsdelivr.net/npm/link-status-page@latest/index.html"
14
+ },
15
+ {
16
+ "provider": "unpkg",
17
+ "url": "https://unpkg.com/link-status-page@latest/index.html"
18
+ }
19
+ ]
10
20
  }
11
21
  }