https://6920616d206a75737420612073746172203a29.space/

ID de exploración:
c3dd65b0-caaa-4849-a0c2-cd2ed09490a5Finalizado
URL enviada:
https://6920616d206a75737420612073746172203a29.space/
Informe finalizado:

Enlaces: 4 encontrados

Los enlaces salientes identificados en la página

EnlaceTexto
https://null-io.pages.dev/https://null-io.pages.dev/
https://nullio-sys.github.io/https://nullio-sys.github.io/
https://null-io.vercel.app/https://null-io.vercel.app/
https://null-io.neocities.org/https://null-io.neocities.org/

Variables JavaScript: 5 encontradas

Las variables JavaScript globales cargadas en el objeto de ventana de una página son variables declaradas fuera de las funciones y a las que se puede acceder desde cualquier lugar del código en el ámbito actual

NombreTipo
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
checkMirrorStatusfunction
checkAllMirrorsfunction

Mensajes de registro de la consola: 0 encontrados

Mensajes registrados en la consola web

HTML

El cuerpo HTML sin procesar de la página

<!DOCTYPE html><html lang="en"><head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>NULL IO Mirrors</title>
    <style>
        body {
            font-family: 'Inter', -apple-system, sans-serif;
            background-color: #1a1a1a;
            color: #e0e0e0;
            line-height: 1.6;
            margin: 0;
            padding: 20px;
        }

        .container {
            max-width: 800px;
            margin: 0 auto;
            padding: 20px;
        }

        h1 {
            color: #fff;
            border-bottom: 2px solid #333;
            padding-bottom: 10px;
            margin-bottom: 30px;
        }

        .mirror-group {
            background-color: #252525;
            border-radius: 8px;
            padding: 20px;
            margin-bottom: 20px;
        }

        .mirror-group h2 {
            color: #4a9eff;
            margin-top: 0;
        }

        .mirror-list {
            list-style: none;
            padding: 0;
        }

        .mirror-item {
            display: flex;
            align-items: center;
            padding: 12px;
            margin: 8px 0;
            background-color: #303030;
            border-radius: 6px;
            transition: background-color 0.2s;
        }

        .mirror-item:hover {
            background-color: #404040;
        }

        .mirror-item a {
            color: #4a9eff;
            text-decoration: none;
            flex-grow: 1;
        }

        .mirror-item a:hover {
            text-decoration: underline;
        }

        .status {
            padding: 4px 8px;
            border-radius: 4px;
            font-size: 0.85em;
            margin-left: 10px;
            display: flex;
            align-items: center;
            gap: 5px;
        }

        .status.online {
            background-color: #1b4332;
            color: #2ecc71;
        }

        .status.offline {
            background-color: #4a1c1c;
            color: #e74c3c;
        }

        .status.checking {
            background-color: #2c3e50;
            color: #3498db;
        }

        .refresh-button {
            background-color: #2c3e50;
            color: #fff;
            border: none;
            padding: 8px 16px;
            border-radius: 4px;
            cursor: pointer;
            margin-bottom: 20px;
            transition: background-color 0.2s;
        }

        .refresh-button:hover {
            background-color: #34495e;
        }

        @media (max-width: 600px) {
            .container {
                padding: 10px;
            }
            
            .mirror-item {
                flex-direction: column;
                align-items: flex-start;
            }
            
            .status {
                margin-left: 0;
                margin-top: 8px;
            }
        }

        .spinner {
            width: 12px;
            height: 12px;
            border: 2px solid #ffffff;
            border-bottom-color: transparent;
            border-radius: 50%;
            display: inline-block;
            animation: rotation 1s linear infinite;
        }

        @keyframes rotation {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }
    </style>
</head>
<body>
    <div class="container">
        <h1>NULL IO Mirrors</h1>
        
        <button class="refresh-button" onclick="checkAllMirrors()">Refresh All Status</button>

        <div class="mirror-group">
            <h2>Primary Mirrors</h2>
            <ul class="mirror-list">
                <li class="mirror-item">
                    <a href="https://null-io.pages.dev/">https://null-io.pages.dev/</a>
                    <span class="status online" data-url="https://null-io.pages.dev/">Online (263ms)</span>
                </li>
                <li class="mirror-item">
                    <a href="https://nullio-sys.github.io/">https://nullio-sys.github.io/</a>
                    <span class="status online" data-url="https://nullio-sys.github.io/">Online (233ms)</span>
                </li>
            </ul>
        </div>

        <div class="mirror-group">
            <h2>Backup Mirrors</h2>
            <ul class="mirror-list">
                <li class="mirror-item">
                    <a href="https://null-io.vercel.app/">https://null-io.vercel.app/</a>
                    <span class="status online" data-url="https://null-io.vercel.app/">Online (476ms)</span>
                </li>
                <li class="mirror-item">
                    <a href="https://null-io.neocities.org/">https://null-io.neocities.org/</a>
                    <span class="status online" data-url="https://null-io.neocities.org/">Online (242ms)</span>
                </li>
            </ul>
        </div>
    </div>

    <script>
        // Function to check a single mirror's status
        async function checkMirrorStatus(statusElement) {
            const url = statusElement.dataset.url;
            statusElement.className = 'status checking';
            statusElement.innerHTML = '<span class="spinner"></span>Checking...';

            try {
                const startTime = performance.now();
                const response = await fetch(url, {
                    mode: 'no-cors',
                    cache: 'no-cache'
                });
                const endTime = performance.now();
                const latency = Math.round(endTime - startTime);

                statusElement.className = 'status online';
                statusElement.textContent = `Online (${latency}ms)`;
            } catch (error) {
                statusElement.className = 'status offline';
                statusElement.textContent = 'Offline';
            }
        }

        // Function to check all mirrors
        function checkAllMirrors() {
            const statusElements = document.querySelectorAll('.status');
            statusElements.forEach(element => {
                checkMirrorStatus(element);
            });
        }

        // Auto-check when page loads
        document.addEventListener('DOMContentLoaded', checkAllMirrors);

        // Set up automatic refresh every 5 minutes
        setInterval(checkAllMirrors, 300000);
    </script>

</body></html>