Files
MyIP/index.html
T
2026-04-19 14:42:24 +08:00

160 lines
8.7 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="keywords"
content="MyIP, IP tool, IP check, IP lookup, DNS leak test, WebRTC test, speed test, DNS lookup, WHOIS lookup, ping test, privacy test" />
<meta name="description"
content="A better and open source IP Toolbox. Easy to check what's your IPs, IP information, check for DNS leaks, examine WebRTC connections, test website availability, lookup DNS record, lookup Whois, and test latency from around the world.">
<meta name="mobile-web-app-capable" content="yes" />
<meta name="theme-color" content="#f8f9fa" />
<meta name="background-color" content="#ffffff" />
<meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" />
<link rel="manifest" href="/manifest.webmanifest" />
<link rel="apple-touch-icon" href="/logos/ios-logo-512.png" />
<title>IPCheck.ing - Check My IP Address and Geolocation - Check WebRTC Connection IP - DNS Leak Test - Speed Test -
Ping/MTR Test - Jason Ng Open Source </title>
<link rel="icon" href="/logos/logo.svg">
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
<style>
*,
*::before,
*::after {
box-sizing: border-box;
}
html,
body {
margin: 0;
padding: 0;
}
html {
line-height: 1.5;
-webkit-text-size-adjust: 100%;
-webkit-tap-highlight-color: transparent;
tab-size: 4;
font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont,
"Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif,
"Apple Color Emoji", "Segoe UI Emoji";
scrollbar-gutter: stable;
background: #ffffff;
color: #0a0a0a;
}
@media (prefers-color-scheme: dark) {
html {
background: #0a0a0a;
color: #fafafa;
}
}
/* Boot screen — shown until App.vue's setup hides it
(see `frontend/App.vue`: `document.getElementById('jn-loading')`).
Anchored to the upper third of the viewport rather than dead-center
because phones eat ~50-60px at the top with their status bar / notch,
which pushed "centered" content visually low. 15vh top padding + flex
top alignment puts the logo around ~1/6 to 1/5 from the top on phone
and desktop alike. */
.jn-loading {
min-height: 100vh;
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
gap: 16px;
padding: 25vh 24px 24px;
text-align: center;
}
.jn-loading svg {
width: 96px;
height: 96px;
fill: currentColor;
}
.jn-loading p {
margin: 0;
font-size: 14px;
color: #6b7280;
line-height: 1.5;
}
.jn-loading a {
color: inherit;
text-decoration: underline;
}
/* Spinner — explicitly border-box so its rendered size stays 28×28 whether
Preflight has arrived or not. */
.jn-spinner {
width: 28px;
height: 28px;
border: 4px solid #16a34a;
border-left-color: transparent;
border-radius: 50%;
animation: jn-spin 1s linear infinite;
}
@keyframes jn-spin {
to {
transform: rotate(360deg);
}
}
</style>
<!-- Pre-Vue runtime:
1. Stash the PWA install-prompt event so the app can reuse it later
(the event fires exactly once, well before Vue mounts).
2. After 12s, reveal the slow-network fallback hint. -->
<script>
window.ipcheckInstallPromptEvent = null;
window.addEventListener('beforeinstallprompt', (event) => {
event.preventDefault();
window.ipcheckInstallPromptEvent = event;
});
setTimeout(() => {
const hint = document.getElementById('jn-loading-slow-hint');
if (hint) hint.hidden = false;
}, 12000);
</script>
</head>
<body>
<!-- Pre-Vue boot screen. App.vue hides this element in its setup() via
`document.getElementById('jn-loading').style.display = 'none'`, so the ID
name here is a load-bearing contract — keep them in sync. -->
<div id="jn-loading" class="jn-loading" role="status" aria-live="polite">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 511 512.35" aria-hidden="true"
shape-rendering="geometricPrecision" fill-rule="evenodd" clip-rule="evenodd">
<path id="Logo"
d="M162.62,21.9026663 C157.13,27.3326663 151.99,33.9226663 147.2,41.6126663 C129.83,69.4326663 116.87,111.602666 107.28,164.772666 C50.98,175.412666 16.22,198.912666 17.38,222.912666 C18.42,244.652666 45.84,261.322666 87.05,272.832666 C84.34,281.212666 84.98,282.652666 88.65,292.962666 C57.87,305.942666 25.71,345.362666 0,379.892666 L100.03,447.502666 L64.71,512.352666 L449.12,512.352666 L411.86,447.502666 L511,378.632666 C481.92,337.782666 446.81,303.072666 424.88,293.652666 C429.51,281.632666 430.32,279.532666 426.44,272.862666 C467.65,261.142666 494.67,244.022666 494.61,221.392666 C494.55,196.712666 459.11,173.012666 406.3,164.772666 C393.66,111.272666 381.08,69.1526663 365.07,41.5026663 C362.16,36.4826663 359.14,31.9326663 355.98,27.8826663 C308.32,-33.2373337 291.62,25.1926663 257.84,25.1226663 C218.67,25.0426663 213.69,-28.5673337 162.62,21.9026663 Z M223.27,419.802666 C223.27,416.232666 226.17,413.332666 229.74,413.332666 L240.26,413.332666 C241.64,413.332666 242.92,413.772666 243.96,414.502666 C247.73,416.602666 251.42,417.832666 254.97,417.922666 C256.256726,417.95538 257.551379,417.837477 258.853959,417.554552 C261.134997,417.059103 263.440344,416.057596 265.77,414.472666 C266.837339,413.754341 268.093464,413.368108 269.38,413.362666 L282.16,413.332666 C285.73,413.332666 288.62,416.232666 288.62,419.802666 C288.62,423.372666 285.73,426.272666 282.16,426.272666 L271.21,426.272666 C265.75,429.542666 260.23,430.942666 254.67,430.802666 C249.23,430.662666 243.89,429.032666 238.66,426.272666 L229.74,426.272666 C226.17,426.272666 223.27,423.372666 223.27,419.802666 Z M160.62,279.492666 C221.05,301.232666 281.49,300.872666 341.92,281.322666 C283.47,286.072666 219.13,284.942666 160.62,279.492666 Z M267.04,306.612666 L244.93,306.612666 C210.81,384.892666 122.79,350.782666 142.77,277.672666 C135.46,276.872666 128.26,275.992666 121.21,275.052666 L120.89,276.932666 L120.3,280.492666 L116.82,301.362666 C86.43,294.642666 103.46,373.132666 131.08,366.232666 C135.3,378.412666 136.442197,389.44711 142.34,398.422666 C171.368144,442.599077 205.648487,494.791988 256.040415,494.791988 C306.432342,494.791988 341.594767,438.778379 368.99,398.422666 C375.513955,388.812277 376.14,383.142666 380.53,369.392666 C405.97,373.452666 426.88,296.082666 395.87,301.762666 L392.68,280.712666 L392.13,277.062666 L391.9,275.522666 C384.43,276.682666 376.78,277.722666 368.99,278.632666 C389.88,349.262666 300.46,385.132666 267.04,306.612666 Z M284.280512,176.166601 L284.280512,67.1666006 C366.547618,67.1666006 361.40053,176.166601 284.280512,176.166601 Z M170.780508,409.666601 C182.571845,404.08157 211.029823,401.289054 256.154442,401.289054 C301.27906,401.289054 329.487749,404.08157 340.780508,409.666601 C340.780508,398.413948 339.802073,389.918194 323.84137,384.371704 C288.837937,372.207694 222.824258,373.335802 189.15409,384.371704 C170.816498,390.382125 170.780508,397.067154 170.780508,409.666601 Z M206.779566,446.766602 C218.286957,452.470688 235.027101,455.322731 257,455.322731 C278.972899,455.322731 295.566401,452.470688 306.780508,446.766602 C306.780508,458.019255 306.204953,466.515009 296.816215,472.061498 C286.632212,478.077798 271.985838,480.842479 257.386147,480.76502 C242.467564,480.685868 227.597726,477.639061 217.587657,472.061498 C206.800736,466.051077 206.779566,459.366048 206.779566,446.766602 Z M256.254843,67.1117579 L229.254843,87.6169826 C229.254843,124.271828 229.254843,160.370447 229.254843,204.775426 L256.254843,208.111758 C256.254843,143.245746 256.254843,107.726499 256.254843,67.1117579 Z M207.254843,67.1117579 L180.254843,87.6169826 C180.254843,124.271828 180.254843,160.370447 180.254843,204.775426 L207.254843,208.111758 C207.254843,143.245746 207.254843,107.726499 207.254843,67.1117579 Z" />
</svg>
<div>
<p>It may take a while for the first time, please wait&hellip;</p>
</div>
<div class="jn-spinner" aria-label="Loading"></div>
<p id="jn-loading-slow-hint" hidden>
Waiting too long? Try <a href="https://lite.ipcheck.ing/">IPCheck.ing Lite</a>, or refresh the page.
</p>
</div>
<noscript>
<p style="padding: 40px; text-align: center;">
IPCheck.ing requires JavaScript. Please enable it and refresh.
</p>
</noscript>
<!-- Vue mounts here. `vaul-drawer-wrapper` is the marker vaul-vue uses to scale
the page background when a bottom drawer is open (Advanced Tools panel). -->
<div id="app" vaul-drawer-wrapper></div>
<script type="module" src="/frontend/main.js"></script>
</body>
</html>