1import{d as et,r as g,q as st,c as x,o as at,y as d,z as e,Y as h,A as r,E as f,F as P,C as U,H as b,B as T,D as l}from"./vendor-vue-Du3XgG1t.js";const rt={class:"min-h-screen bg-gray-50 px-4 py-8 text-gray-800 dark:bg-dark-900 dark:text-dark-100"},ot={class:"mx-auto max-w-3xl space-y-6"},nt={class:"rounded-xl border-2 border-red-400 bg-white p-5 shadow-md dark:border-red-500/70 dark:bg-dark-800"},dt={class:"mb-3 flex items-center justify-between"},lt=["disabled"],it={class:"font-semibold"},ct={class:"ml-1"},ut={class:"overflow-hidden rounded-lg border border-gray-200 dark:border-dark-600"},xt={class:"w-full text-sm"},bt={class:"px-3 py-2 font-medium text-gray-700 dark:text-gray-200"},mt={class:"px-3 py-2 text-right tabular-nums text-gray-600 dark:text-gray-300"},gt={class:"px-3 py-2 text-right"},pt={key:0,class:"text-xs text-gray-400"},kt={key:1,class:"text-xs text-green-600 dark:text-green-400"},yt={key:2,class:"text-xs text-red-600 dark:text-red-400"},ft={key:3,class:"text-xs text-gray-400"},vt={class:"rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-dark-700 dark:bg-dark-800"},ht={class:"mb-1 flex items-center justify-between"},$t=["disabled"],_t={class:"font-semibold"},wt={class:"ml-1"},Ct={class:"grid grid-cols-2 gap-3 sm:grid-cols-4"},Tt={class:"rounded-lg bg-gray-50 p-3 dark:bg-dark-700/50"},Mt={class:"rounded-lg bg-gray-50 p-3 dark:bg-dark-700/50"},St={class:"mt-0.5 text-sm font-medium tabular-nums text-gray-700 dark:text-gray-300"},Nt={class:"rounded-lg bg-gray-50 p-3 dark:bg-dark-700/50"},Lt={key:0,class:"text-xs font-normal text-gray-400"},It={class:"rounded-lg bg-gray-50 p-3 dark:bg-dark-700/50"},Bt={class:"mt-0.5 text-sm font-medium text-gray-700 dark:text-gray-300"},Pt={class:"mt-3 rounded-lg border border-dashed border-gray-300 p-3 text-sm dark:border-dark-600"},Ut={class:"flex flex-wrap items-center gap-x-4 gap-y-1"},Ft={class:"text-gray-500 dark:text-dark-400"},Wt={class:"font-mono text-gray-800 dark:text-gray-200"},jt={class:"text-gray-500 dark:text-dark-400"},At={key:0,class:"mt-2 text-xs leading-relaxed text-red-600 dark:text-red-400"},Dt={key:1,class:"mt-2 text-xs text-green-600 dark:text-green-400"},Ot={class:"rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-dark-700 dark:bg-dark-800"},Ht={class:"mt-4 inline-flex rounded-lg bg-gray-100 p-1 dark:bg-dark-700"},Et=["onClick"],Kt={class:"mt-4 space-y-4"},Rt={class:"mb-1.5 flex items-center gap-2 text-sm font-medium text-gray-700 dark:text-gray-200"},Vt={key:0,class:"rounded-full bg-primary-50 px-2 py-0.5 text-xs font-medium text-primary-600 dark:bg-primary-900/30 dark:text-primary-300"},qt={class:"mb-2 text-xs text-gray-500 dark:text-dark-400"},zt={class:"overflow-hidden rounded-lg border border-gray-700/50 shadow-sm"},Yt={class:"flex items-center justify-between border-b border-gray-700/50 bg-gray-800 px-3 py-2"},Gt={class:"flex items-center gap-1.5"},Qt={class:"ml-2 text-xs text-gray-400"},Jt=["onClick"],Xt={class:"overflow-x-auto bg-gray-900 p-3.5 text-xs leading-relaxed text-gray-100"},Zt={key:0,class:"mt-4 rounded-lg border-l-4 border-amber-500 bg-amber-50 p-3 text-xs leading-relaxed text-amber-900 dark:bg-amber-900/20 dark:text-amber-200"},te="/api/net-check",D="https://xfastapi.ai/api/net-check",O=10,ee=8e3,se="/api/net-check/payload",ae=2e4,re=`U="https://xfastapi.ai/api/net-check"; N=10; ok=0; ts=""; for i in $(seq 1 $N); do r=$(curl -o /dev/null -s -w "%{http_code} %{time_total}" "$U?t=$i"); c=\${r%% *}; t=\${r##* }; if [ "$c" = "200" ]; then ok=$((ok+1)); ts="$ts $t"; echo "第 $i/$N 次: \${t}s"; else echo "第 $i/$N 次: 失败($c)"; fi; done; echo "----"; j=$(curl -s "$U"); ip=$(printf "%s" "$j" | tr ',' '\\n' | grep your_ip | cut -d'"' -f4); cc=$(printf "%s" "$j" | tr ',' '\\n' | grep country | cut -d'"' -f4); echo "$ts" | awk -v n=$N -v ok=$ok -v ip="$ip" -v cc="$cc" '{min=1e9;max=0;s=0;for(i=1;i<=NF;i++){v=$i*1000;s+=v;if(v<min)min=v;if(v>max)max=v} if(ok>0)printf "å¹³åå»¶è¿: %.0fms æå¿«: %.0fms ææ
¢: %.0fms æå¨: %.0fms\\n",s/ok,min,max,max-min; printf "丢å
ç: %d%% æå: %d/%d\\n",(n-ok)*100/n,ok,n; printf "åºå£IP: %s å½å®¶: %s\\n",(ip=="")?"-":ip,(cc=="")?"-":cc}'`,oe='[Console]::OutputEncoding=[System.Text.Encoding]::UTF8; $u="https://xfastapi.ai/api/net-check"; $n=10; $t=@(); for($i=1;$i -le $n;$i++){ $ms=(Measure-Command { curl.exe -s -o NUL ($u + "?t=$i") }).TotalMilliseconds; if($LASTEXITCODE -eq 0){ $r=[math]::Round($ms); $t+=$r; Write-Host "第 $i/$n 次: $($r)ms" } else { Write-Host "第 $i/$n 次: 失败" } }; Write-Host "----"; $j=curl.exe -s $u | ConvertFrom-Json; if($t.Count){ $avg=[int](($t|measure -Average).Average); $mn=($t|measure -Minimum).Minimum; $mx=($t|measure -Maximum).Maximum; "å¹³åå»¶è¿: $($avg)ms æå¿«: $($mn)ms ææ
¢: $($mx)ms æå¨: $($mx-$mn)ms" }; "丢å
ç: $([int]((($n-$t.Count)/$n)*100))% æå: $($t.Count)/$n"; "åºå£IP: $($j.your_ip) å½å®¶: $($j.country)"',ne=`U="https://xfastapi.ai/api/net-check/payload"; for s in 65536 262144 1048576 4194304; do curl -o /dev/null -s -w "$((s/1024)) %{time_total} %{speed_download}\\n" "$U?bytes=$s&t=$s"; done | awk '{printf "å
ä½:%6sKB èæ¶:%6.2fs é度:%7.2f Mbps\\n",$1,$2,$3*8/1000000}'`,de='[Console]::OutputEncoding=[System.Text.Encoding]::UTF8; $u="https://xfastapi.ai/api/net-check/payload"; foreach($s in 65536,262144,1048576,4194304){ $sec=(Measure-Command { curl.exe -s -o NUL ($u+"?bytes=$s&t=$s") }).TotalSeconds; $mbps=if($sec -gt 0){[math]::Round($s*8/1000000/$sec,2)}else{0}; Write-Host ("å
ä½:{0,6}KB èæ¶:{1,6:F2}s é度:{2,7} Mbps" -f [int]($s/1024),$sec,$mbps) }',ce=et({__name:"NetCheckView",setup(le){const v=g(!1),M=g([]),$=g(0),S=g(0),n=st({your_ip:"",country:"",cf_colo:""}),o=x(()=>{const s=M.value,t=s.length+$.value;if(s.length===0)return{total:t,success:0,avg:null,min:null,max:null,jitter:null};const a=Math.min(...s),u=Math.max(...s),i=Math.round(s.reduce((p,m)=>p+m,0)/s.length);return{total:t,success:s.length,avg:i,min:Math.round(a),max:Math.round(u),jitter:Math.round(u-
1a)}}),F=x(()=>o.value.total?o.value.success/o.value.total:0),N=x(()=>o.value.total?Math.round((1-F.value)*100):0),L=x(()=>v.value&&o.value.total===0?{title:"æ£æµä¸â¦",detail:"æ£å¨æµè¯æµè§å¨å°æ¬ç«çè¿éæ§ã",boxClass:"bg-gray-100 text-gray-600 dark:bg-dark-700 dark:text-dark-300"}:o.value.success===0?{title:"â æµè§å¨æ æ³è¿éæ¬ç«",detail:"ä½ çæµè§å¨é½è¿ä¸ä¸ï¼è¯·å
确认梯å/ç½ç»ï¼åéè¯ã",boxClass:"bg-red-50 text-red-700 dark:bg-red-900/20 dark:text-red-300"}:F.value<1||(o.value.avg??0)>1200?{title:"â³ æµè§å¨å¯è¿éï¼ä½ä¸ç¨³å®",detail:"åå¨ä¸¢å
æé«å»¶è¿ï¼ç½ç»è´¨éè¾å·®ï¼å®¢æ·ç«¯æ´æè¶
æ¶ã",boxClass:"bg-amber-50 text-amber-800 dark:bg-amber-900/20 dark:text-amber-300"}:{title:"â æµè§å¨å¯è¿é",detail:"æµè§å¨è¿æ¡è·¯æ£å¸¸ãè¥å®¢æ·ç«¯ä»å¤±è´¥ï¼è¯·ç䏿¹ç»ç«¯èªæ£ã",boxClass:"bg-green-50 text-green-700 dark:bg-green-900/20 dark:text-green-300"}),H=x(()=>{const s=o.value.avg;return s==null?"text-gray-400":s<=300?"text-green-600 dark:text-green-400":s<=800?"text-amber-600 dark:text-amber-400":"text-red-600 dark:text-red-400"}),E=x(()=>N.value===0?"text-green-600 dark:text-green-400":N.value<100?"text-amber-600 dark:text-amber-400":"text-red-600 dark:text-red-400"),K=x(()=>n.country?n.country==="CN"?"ä¸å½å¤§é (CN)":n.country:"æªç¥"),R=x(()=>n.country==="CN"?"text-red-600 dark:text-red-400":n.country?"text-green-600 dark:text-green-400":"text-gray-500"),_=[{label:"64 KB",bytes:64*1024},{label:"256 KB",bytes:256*1024},{label:"1 MB",bytes:1024*1024},{label:"4 MB",bytes:4*1024*1024}],k=g(!1),I=g(0),y=g([]);function V(s){return s==null?"text-gray-400":s>=8?"text-green-600 dark:text-green-400":s>=2?"text-amber-600 dark:text-amber-400":"text-red-600 dark:text-red-400"}const q=x(()=>_.map(s=>{const t=y.value.find(u=>u.bytes===s.bytes),a=k.value&&!t;return{label:s.label,bytes:s.bytes,ms:t?t.ms:null,mbpsText:t&&t.mbps!=null?t.mbps.toFixed(2)+" Mbps":a?"â¦":"â",speedColor:V(t?t.mbps:null),ok:!!t&&t.ok,failed:!!t&&t.failed,err:t?t.err:"",pending:a}})),B=x(()=>{if(k.value&&y.value.length===0)return{title:"æµéä¸â¦",detail:"æ£å¨ä»å°å°å¤§æµè¯ä¸è½½å¸¦å®½ã",boxClass:"bg-gray-100 text-gray-600 dark:bg-dark-700 dark:text-dark-300"};const s=y.value;if(s.length===0)return{title:"å¾
æµé",detail:"ç¹å»å³ä¸è§å¼å§å¸¦å®½æµéã",boxClass:"bg-gray-100 text-gray-600 dark:bg-dark-700 dark:text-dark-300"};const t=s.filter(c=>c.ok&&c.mbps!=null),a=t.some(c=>c.bytes<=256*1024),u=s.some(c=>c.failed&&c.bytes>=1024*1024);if(a&&u)return{title:"â ç似被ééï¼å¤§æµé被æå®ï¼",detail:"å°å
è½ä¸è½½ï¼ä½å¤§å
è¶
æ¶/䏿ââè¿æ£æ¯å¤§é被ééçå
¸å表ç°ï¼çå®å¯¹è¯ï¼é¿å夿µå¼ï¼ä¼é¢ç¹å¡æã请ä¼å
ç»ç»ç«¯é
å
¨å±/TUN 代çã",boxClass:"bg-red-50 text-red-700 dark:bg-red-900/20 dark:text-red-300"};if(t.length<2)return{title:"â³ å¸¦å®½æ°æ®ä¸è¶³",detail:"æåæ ·æ¬å¤ªå°ï¼æ æ³å¤æééï¼è¯·éè¯ææ¹åç½ç»ã",boxClass:"bg-amber-50 text-amber-800 dark:bg-amber-900/20 dark:text-amber-300"};const i=Math.max(...t.map(c=>c.mbps)),p=t.reduce((c,A)=>c.bytes>=A.bytes?c:A);return p.mbps/i<.4?{title:"Ⳡ大å
é度骤éï¼ç似被éé",detail:`å³°å¼ ${i.toFixed(1)} Mbpsï¼ä½å¤§å
åªå© ${p.mbps.toFixed(1)} Mbpsï¼ä¸å°å³°å¼ 40%ï¼ã大æµéä¸è¢«ææ¾ééï¼çå®å¯¹è¯ä½éªä¼å·®å¾å¤ã`,boxClass:"bg-amber-50 text-amber-800 dark:bg-amber-900/20 dark:text-amber-300"}:i<2?{title:"â³ æ´ä½å¸¦å®½åä½",detail:`å³°å¼ä»
${i.toFixed(1)} Mbpsï¼è½æªè§ææ¾é¶æ¢¯å¼ééï¼ä½ç»å¯¹å¸¦å®½è¾ä½ï¼é¿åå¤å¯è½åæ
¢ã`,boxClass:"bg-amber-50 text-amber-800 dark:bg-amber-900/20 dark:text-amber-300"}:{title:"â 带宽稳å®ï¼æªè§ææ¾éé",detail:`å³°å¼ ${i.toFixed(1)} Mbpsï¼å¤§å
éåº¦ä¿æè¯å¥½ãæµè§å¨è¿æ¡è·¯å¸¦å®½æ£å¸¸ï¼è¥å®¢æ·ç«¯ä»æ
¢ï¼è§ä¸æ¹ç»ç«¯èªæ£ã`,boxClass:"bg-green-50 text-green-700 dark:bg-green-900/20 dark:text-green-300"}});async function z(s){const t=new AbortController,a=setTimeout(()=>t.abort(),ae),u=performance.now();try{const i=await fetch(`${se}?bytes=${s.bytes}&t=${Date.now()}`,{cache:"no-store",signal:t.signal});if(!i.ok){y.value.push({bytes:s.bytes,ms:null,mbps:null,ok:!1,failed:!0,err:"HTTP "+i.status});return}const p=await i.arrayBuffer(),m=performance.now()-u,c=p.byteLength*8/(m/1e3)/1e6;y.value.push({bytes:s.bytes,ms:Math.round(m),mbps:c,ok:!0,failed:!1,err:""})}catch{y.value.push({bytes:s.bytes,ms:null,mbps:null,ok:!1,failed:!0,err:"è¶
æ¶/䏿"})}finally{clearTimeout(a)}}async function W(){if(!k.value){k.value=!0,y.value=[],I.value=0;try{for(let s=0;s<_.length;s++)await z(_[s]),I.value=s+1}finally{k.value=!1}}}const Y=`curl -o /dev/null -s -w "DNS:%{time_namelookup}s Connect:%{time_connect}s TLS:%{time_appconnect}s TTFB:%{time_starttransfer}s Total:%{time_total}s HTTP:%{http_code}\\n" ${D}`,G=`curl.exe -o NUL -s -w "DNS:%{time_namelookup}s Connect:%{time_connect}s TLS:%{time_appconnect}s TTFB:%{time_starttransfer}s Total:%{time_total}s HTTP:%{http_code}\\n" ${D}`,Q=[{k:"win",l:"Windows"},{k:"unix",l:"macOS / Linux"}],J=/Windows|Win32|Win64/i.test(typeof navigator<"u"&&(navigator.userAgent||navigator.platform)||""),w=g(J?"win":"unix"),X=x(()=>w.value==="win"?[{key:"win-bw",title:"带宽 / ééèªæ£",badge:"æå
³é® · å
è·è¿ä¸ª",term:"PowerShell",desc:"ä»å°å°å¤§ä¸è½½ 64KBâ4MBï¼çé度æ¯å¦éå
ä½éª¤éï¼=被ééï¼çå®å¯¹è¯ä¼å¡ï¼ã",text:de},{key:"win-full",title:"宿´èªæ£",badge:"æ¨è",term:"PowerShell",desc:"è¿æµ 10 次ï¼è¾åºä¸æçå¹³åå»¶è¿ / 丢å
ç / æå¨ / åºå£IPï¼ä¸æ¬é¡µä¸è´ï¼ã",text:oe},{key:"win-quick",title:"å¿«é忬¡",badge:"",term:"CMD / PowerShell",desc:"ç忬¡è¯·æ±ç DNS / è¿æ¥ / TLS / é¦åèåæ®µèæ¶ã",text:G}]:[{key:"unix-bw",title:"带宽 / ééèªæ£",badge:"æå
³é® · å
è·è¿ä¸ª",term:"bash / zsh",desc:"ä»å°å°å¤§ä¸è½½ 64KBâ4MBï¼çé度æ¯å¦éå
ä½éª¤éï¼=被ééï¼çå®å¯¹è¯ä¼å¡ï¼ã",text:ne},{key:"unix-full",title:"宿´èªæ£",badge:"æ¨è",term:"bash / zsh",desc:"è¿æµ 10 次ï¼è¾åºä¸æçå¹³åå»¶è¿ / 丢å
ç / æå¨ / åºå£IPï¼ä¸æ¬é¡µä¸è´ï¼ã",text:re},{key:"unix-quick",title:"å¿«é忬¡",badge:"",term:"bash / zsh",desc:"ç忬¡è¯·æ±ç DNS / è¿æ¥ / TLS / é¦åèåæ®µèæ¶ã",text:Y}]),C=g("");async function Z(s,t){try{await navigator.clipboard.writeText(s),C.value=t,setTimeout(()=>{C.value===t&&(C.value="")},1500)}catch{}}async function tt(s){const t=new AbortController,a=setTimeout(()=>t.abort(),ee),u=performance.now();try{const i=await fetch(`${te}?t=${Date.now()}_${s}`,{cache:"no-store",signal:t.signal}),p=performance.now()-u;if(!i.ok){$.value++;return}if(M.value.push(p),!n.your_ip)try{const m=await i.json();n.your_ip=m.your_ip||"",n.country=m.country||"",n.cf_colo=m.cf_colo||""}catch{}}catch{$.value++}finally{clearTimeout(a)}}async function j(){if(!v.value){v.value=!0,M.value=[],$.value=0,S.value=0,n.your_ip="",n.country="",n.cf_colo="";try{for(let s=0;s<O;s++)await tt(s),S.value=s+1}finally{v.value=!1}}}return at(async()=>{await W(),await j()}),(s,t)=>
1(l(),d("div",rt,[e("div",ot,[t[23]||(t[23]=h('<div class="flex items-center justify-between"><div class="flex items-baseline gap-2"><span class="text-xl font-bold text-primary-600 dark:text-primary-400">xfastapi</span><span class="text-sm text-gray-400">ç½ç»èªæ£ · Network Self-Check</span></div><a href="https://xfastapi.ai" class="text-xs text-gray-400 hover:text-primary-500">xfastapi.ai</a></div><div class="rounded-lg border-l-4 border-amber-500 bg-amber-50 p-4 dark:bg-amber-900/20"><div class="flex items-start gap-2"><span class="text-lg">â ï¸</span><div class="text-sm leading-relaxed text-amber-900 dark:text-amber-200"><p class="font-semibold">æ¬é¡µå¨ãæµè§å¨ãä¸è¿è¡ï¼åªä»£è¡¨ä½ çæµè§å¨ç½ç»ã</p><p class="mt-1"> æµè§å¨è½è¿é <b>â </b> ä½ ç <b>CLI / 客æ·ç«¯ / ç»ç«¯</b> è½è¿éââæ¢¯åï¼ä»£çï¼ç»å¸¸åªè¦çæµè§å¨ï¼ èä¸è¦çç»ç«¯ãè¥ç½é¡µæ£å¸¸ä½å®¢æ·ç«¯ä»è¶
æ¶ï¼è¯·å¡å¿
ç䏿¹ç <b>ãç»ç«¯èªæ£ã</b>ã </p><p class="mt-1 text-xs text-amber-700 dark:text-amber-300/80"> This page tests your <b>browser</b> only. A working browser does not mean your CLI / terminal can connect. </p></div></div></div>',2)),e("div",nt,[e("div",dt,[t[2]||(t[2]=e("h2",{class:"flex items-center gap-2 text-base font-semibold"},[e("span",null,"â 带宽 / ééèªæ£"),e("span",{class:"rounded-full bg-red-500 px-2 py-0.5 text-xs font-semibold text-white"},"æå
³é® · ä¼å
çè¿é")],-1)),e("button",{class:"rounded-md bg-primary-600 px-3 py-1.5 text-sm font-medium text-white transition hover:bg-primary-700 disabled:opacity-50",disabled:k.value,onClick:t[0]||(t[0]=a=>W())},r(k.value?"æµéä¸ "+I.value+"/"+_.length+"â¦":"éæ°æµé"),9,lt)]),t[4]||(t[4]=h('<div class="mb-3 rounded-lg border-l-4 border-red-400 bg-red-50 p-3 text-xs leading-relaxed text-red-800 dark:bg-red-900/20 dark:text-red-200"><b>为ä»ä¹è¿ä¸ªæéè¦ï¼</b>ãè½è¿éã<b>â </b>ãä¸è¢«ééãã大éçé²ç«å¢/CF å¹²æ°ä¸»åæ¯<b>éé</b>èé黿ââ å°å
è½ç§åï¼å¯ä¸æ¦<b>æç»æå¤§æµé</b>ï¼çå®å¯¹è¯=é¿å夿µå¼ååã大 prompt ä¸ä¼ ï¼å°±ä¼è¢«æå°é¾éçè³å¡æ»ã ä¸é¢ä»å°å°å¤§é墿µ<b>ææå¸¦å®½</b>ï¼<b>å°å
å¿«ã大å
骤é = å
¸å被éé</b>ã <span class="mt-1 block"><b>â ï¸ ç½é¡µæµçåªæ¯æµè§å¨è¿æ¡ç½ç»ï¼ç»æä»
ä¾åèââå®é
è¯·ä»¥ä¸æ¹ ⢠ç»ç«¯èªæ£ä¸ºå</b>ï¼ä½ ç CLI / 客æ·ç«¯èµ°çæ¯ç»ç«¯ç½ç»ï¼ã</span></div>',1)),e("div",{class:f(["mb-3 rounded-lg p-3 text-sm",B.value.boxClass])},[e("span",it,r(B.value.title),1),e("span",ct,r(B.value.detail),1)],2),e("div",ut,[e("table",xt,[t[3]||(t[3]=e("thead",null,[e("tr",{class:"bg-gray-50 text-xs text-gray-500 dark:bg-dark-700/50 dark:text-dark-400"},[e("th",{class:"px-3 py-2 text-left font-medium"},"å
ä½å¤§å°"),e("th",{class:"px-3 py-2 text-right font-medium"},"èæ¶"),e("th",{class:"px-3 py-2 text-right font-medium"},"é度"),e("th",{class:"px-3 py-2 text-right font-medium"},"ç¶æ")])],-1)),e("tbody",null,[(l(!0),d(P,null,U(q.value,a=>(l(),d("tr",{key:a.bytes,class:"border-t border-gray-100 dark:border-dark-700"},[e("td",bt,r(a.label),1),e("td",mt,r(a.ms!=null?a.ms+" ms":"â"),1),e("td",{class:f(["px-3 py-2 text-right tabular-nums font-semibold",a.speedColor])},r(a.mbpsText),3),e("td",gt,[a.pending?(l(),d("span",pt,"æµéä¸â¦")):a.ok?(l(),d("span",kt,"â")):a.failed?(l(),d("span",yt,"â "+r(a.err),1)):(l(),d("span",ft,"â"))])]))),128))])])]),t[5]||(t[5]=e("p",{class:"mt-2 text-xs leading-relaxed text-gray-500 dark:text-dark-400"},[b(" é度为æµè§å¨å®æµä¸è½½å¸¦å®½ï¼Mbpsï¼ãåæ ·å°ï¼è¿ä»æ¯"),e("b",null,"æµè§å¨"),b("è¿æ¡ç½ç»ï¼ä½ ç CLI/ç»ç«¯è¥æ²¡èµ°å䏿¡ä»£çï¼å®é
伿´å·®ââ请åç䏿¹ ⢠ç»ç«¯èªæ£ã ")],-1))]),e("div",vt,[e("div",ht,[t[6]||(t[6]=e("h2",{class:"text-base font-semibold"},"â¡ æµè§å¨å°æ¬ç«çè¿éæ§",-1)),e("button",{class:"rounded-md bg-primary-600 px-3 py-1.5 text-sm font-medium text-white transition hover:bg-primary-700 disabled:opacity-50",disabled:v.value,onClick:t[1]||(t[1]=a=>j())},r(v.value?"æ£æµä¸ "+S.value+"/"+O+"â¦":"éæ°æ£æµ"),9,$t)]),t[16]||(t[16]=e("p",{class:"mb-3 text-xs font-medium text-amber-600 dar
1k:text-amber-400"}," â ï¸ ç½é¡µç»æä» ä¾åèââå®é è¯·ä»¥ä¸æ¹ ⢠ç»ç«¯èªæ£ä¸ºåï¼CLI / 客æ·ç«¯èµ°çæ¯ç»ç«¯ç½ç»ï¼ä¸æ¯æµè§å¨ï¼ã ",-1)),e("div",{class:f(["mb-4 rounded-lg p-3 text-sm",L.value.boxClass])},[e("span",_t,r(L.value.title),1),e("span",wt,r(L.value.detail),1)],2),e("div",Ct,[e("div",Tt,[t[7]||(t[7]=e("div",{class:"text-xs text-gray-500 dark:text-dark-400"},"å¹³åå»¶è¿",-1)),e("div",{class:f(["mt-0.5 text-lg font-semibold tabular-nums",H.value])},r(o.value.avg!=null?o.value.avg+" ms":"â"),3)]),e("div",Mt,[t[8]||(t[8]=e("div",{class:"text-xs text-gray-500 dark:text-dark-400"},"æå¨ / æå¿« / ææ ¢",-1)),e("div",St,r(o.value.jitter!=null?`±${o.value.jitter} / ${o.value.min} / ${o.value.max}`:"â"),1)]),e("div",Nt,[t[9]||(t[9]=e("div",{class:"text-xs text-gray-500 dark:text-dark-400"},"丢å ç",-1)),e("div",{class:f(["mt-0.5 text-lg font-semibold tabular-nums",E.value])},[b(r(o.value.total?`${N.value}%`:"â")+" ",1),o.value.total?(l(),d("span",Lt,"ï¼æå "+r(o.value.success)+"/"+r(o.value.total)+"ï¼",1)):T("",!0)],2)]),e("div",It,[t[10]||(t[10]=e("div",{class:"text-xs text-gray-500 dark:text-dark-400"},"CF æ¥å ¥èç¹",-1)),e("div",Bt,r(n.cf_colo||"â"),1)])]),e("div",Pt,[e("div",Ut,[e("span",Ft,[t[11]||(t[11]=b("ä½ çåºå£ IPï¼",-1)),e("b",Wt,r(n.your_ip||"â"),1)]),e("span",jt,[t[12]||(t[12]=b("å½å±å½å®¶ï¼",-1)),e("b",{class:f(R.value)},r(K.value),3)])]),n.country==="CN"?(l(),d("p",At,[...t[13]||(t[13]=[b(" æ£æµå°ä½ æ£ä»",-1),e("b",null,"ä¸å½å¤§é",-1),b("ç´è¿ãè¥ä½ å¨ç¨æ¢¯å/代çï¼è¯´æå®",-1),e("b",null,"没æå¯¹æ¬é¡µçæ",-1),b("ï¼ ä½ ç CLI/ç»ç«¯å¤§æ¦çä¹èµ°çæ¯ç´è¿ï¼ä¼æ´å®¹æè¶ æ¶ã请确认代ç为ãå ¨å± / TUNãæ¨¡å¼ï¼æç»ç»ç«¯åç¬é 置代çã ",-1)])])):n.country?(l(),d("p",Dt,[t[14]||(t[14]=b(" ä½ å½åä»",-1)),e("b",null,"å¢å¤ï¼"+r(n.country)+"ï¼",1),t[15]||(t[15]=b("访é®ï¼æµè§å¨è¿æ¡ç½ç»æ¯éçãè¥å®¢æ·ç«¯ä»å¤±è´¥ï¼é®é¢å¤åå¨ç»ç«¯æªèµ°ä»£çââè§ä¸æ¹ç»ç«¯èªæ£ã ",-1))])):T("",!0)])]),e("div",Ot,[t[21]||(t[21]=h('<h2 class="flex items-center gap-2 text-base font-semibold"><span>⢠ç»ç«¯ / 客æ·ç«¯èªæ£</span><span class="rounded-full bg-red-500 px-2 py-0.5 text-xs font-semibold text-white">å®é 以æ¤ä¸ºå</span></h2><p class="mt-1 text-sm leading-relaxed text-gray-600 dark:text-dark-300"> æä¸é¢å½ä»¤å¤å¶å°<b>ä½ CLI å®é 使ç¨çé£ä¸ªç»ç«¯</b>éè¿è¡ï¼åä¸ä¸ªçªå£ãåä¸å¥ä»£ç设置ï¼ã <b class="text-red-600 dark:text-red-400">è¥ä¸é¢æµè§å¨æ£æµæ£å¸¸ãä½è¿æ¡å½ä»¤è¶ æ¶æå¤±è´¥ï¼å°±è¯´æä½ çç»ç«¯æ²¡æèµ°ä»£ç</b>ââè¿æ£æ¯æå¸¸è§çåå ã </p><div class="mt-3 rounded-lg border-l-4 border-sky-400 bg-sky-50 p-3 text-xs leading-relaxed text-sky-900 dark:bg-sky-900/20 dark:text-sky-200"><b>â¹ï¸ å ³äºå»¶è¿ï¼ç»ç«¯æµåºçå»¶è¿é常æ¯ç½é¡µé«ï¼è¿æ¯æ£å¸¸ç°è±¡ã</b> ç»ç«¯æ¯æ¬¡é½ä¼æ°å»ºè¿æ¥ï¼å« DNS è§£æãTLS æ¡æï¼ï¼æ´è´´è¿ä½ CLI / 客æ·ç«¯<b>çå®å¯¹è¯è°ç¨</b>æ¶çä½æï¼ ç½é¡µå¤ç¨å䏿¡è¿æ¥ï¼æä»¥æ°å¼æ´ä½ã请éç¹ç<b>è½å¦è¿éã丢å çãæ¯å¦ç¨³å®</b>ï¼ç»å¯¹æ°å¼ä» ä¾åèã </div>',3)),e("div",Ht,[(l(),d(P,null,U(Q,a=>e("button",{key:a.k,class:f(["rounded-md px-4 py-1.5 text-sm font-medium transition-colors",w.value===a.k?"bg-white text-gray-900 shadow-sm dark:bg-dark-600 dark:text-white":"text-gray-500 hover:text-gray-700 dark:text-dark-400 dark:hover:text-dark-200"]),onClick:u=>w.value=a.k},r(a.l),11,Et)),64))]),e("div",Kt,[(l(!0),d(P,null,U(X.value,a=>(l(),d("div",{key:a.key},[e("div",Rt,[e("span",null,r(a.title),1),a.badge?(l(),d("span",Vt,r(a.badge),1)):T("",!0)]),e("p",qt,r(a.desc),1),e("div",zt,[e("div",Yt,[e("div",Gt,[t[17]||(t[17]=e("span",{class:"h-2.5 w-2.5 rounded-full bg-red-400/80"},null,-1)),t[18]||(t[18]=e("span",{class:"h-2.5 w-2.5 rounded-full bg-amber-400/80"},null,-1)),t[19]||(t[19]=e("span",{class:"h-2.5 w-2.5 rounded-full bg-green-400/80"},null,-1)),e("span",Qt,r(a.term),1)]),e("button",{class:"rounded px-2 py-0.5 text-xs text-gray-300 transition hover:bg-gray-700 hover:text-white",onClick:u=>Z(a.text,a.key)},r(C.value===a.key?"å·²å¤å¶ â":"å¤å¶"),9,Jt)]),e("pre",Xt,[e("code",null,r(a.text),1)])])]))),128))]),w.value==="win"?(l(),d("div",Zt,[...t[20]||(t[20]=[h('<b>Windows ç¨æ·å¡å¿ 注æï¼</b>å½ä»¤éæ¯ <code class="rounded bg-amber-100 px-1 dark:bg-amber-900/40">curl.exe</code>ï¼å¸¦ <b>.exe</b>ï¼ï¼ä¸è½åªå <code>curl</code>ã å¨ PowerShell é <code>curl</code> æ¯ <code>Invoke-WebRequest</code> çå«åï¼ç´æ¥å伿¥ã缺å°åæ° SessionVariableãä¹ç±»çéãWindows 10/11 å·²èªå¸¦ <code>curl.exe</code>ã ',14)])])):T("",!0),t[22]||(t[22]=h('<div class="mt-4 rounded-lg bg-gray-50 p-4 text-xs leading-relaxed text-gray-600 dark:bg-dark-700/50 dark:text-dark-300"><p class="font-medium text-gray-700 dark:text-gray-200">æä¹çç»æï¼</p><ul class="mt-1.5 list-disc space-y-1 pl-4"><li>è½æå°åº <code>å¹³åå»¶è¿ / 丢å ç / åºå£IP</code>ï¼æ <code>HTTP:200</code>ï¼â ç»ç«¯ç½ç»éï¼é®é¢ä¸å¨ç½ç»ã</li><li><code>丢å ç 100%</code> / <code>Could not resolve host</code> â DNS 被污æãä»£çæªçæã</li><li>å¡ä½ä¸å¨ / <code>timed out</code> / <code>connection reset</code> â 被å¢ï¼æç»ç«¯æ²¡èµ°ä»£çã</li></ul></div>',1))]),t[24]||(t[24]=h(`<div class="rounded-xl border border-gray-200 bg-white p-5 shadow-sm dark:border-dark-700 dark:bg-dark-800"><h2 class="mb-2 text-base font-semibold">⣠ç»ç«¯è¿ä¸ä¸æä¹å</h2><ul class="list-disc space-y-2 pl-5 text-sm leading-relaxed text-gray-600 dark:text-dark-300"><li>ææ¢¯å/代ç软件åå° <b>å ¨å±æ¨¡å¼</b> æ <b>TUN / èæç½å¡æ¨¡å¼</b>ï¼è¿æ ·ç»ç«¯æµéä¹ä¼èµ°ä»£çï¼ã</li><li>æç»ç»ç«¯åç¬è®¾ä»£çç¯å¢åéï¼æ <code>7890</code> æ¢æä½ ä»£ççå®é 端å£ï¼ï¼ <pre class="mt-1.5 overflow-x-auto rounded-lg bg-gray-900 p-3 text-xs text-gray-100"><code>export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 # macOS / Linux 2set https_proxy=http://127.0.0.1:7890 & :: Windows CMD</code></pre></li><li>设好åï¼å éè·ä¸é¢ç¬¬â¢æ¥çå½ä»¤ç¡®è®¤éäºï¼åå¯å¨ä½ ç CLI / 客æ·ç«¯ã</li></ul></div><p class="pb-4 text-center text-xs text-gray-400"> æ¬é¡µä» æ£æµãä½ çè®¾å¤ â xfastapiãçç½ç»è¿éæ§ï¼ä¸æ¶åè´¦å·ï¼å¯æ¾å¿å ¬å¼ä½¿ç¨ã · ææ¯æ¯æ [email protected] </p>`,2))])]))}});
2export{ce as default};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.