'ID', 'isHosting' => false]; } $apiUrl = "http://ip-api.com/json/{$ip}?fields=status,countryCode,proxy,hosting"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $apiUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_TIMEOUT, 3); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); if ($data && $data['status'] === 'success') { $isVpnOrRdp = (!empty($data['proxy']) || !empty($data['hosting'])); return [ 'countryCode' => $data['countryCode'] ?? '', 'isHosting' => $isVpnOrRdp ]; } return ['countryCode' => '', 'isHosting' => false]; } // --- Logika Eksekusi Server-Side --- $isMobile = isMobileDevice(); $isInspect = isInspectedDesktop(); $clientIp = getClientIP(); $ipData = inspectIP($clientIp); $isIndonesia = ($ipData['countryCode'] === 'ID'); $isCleanIP = !$ipData['isHosting']; // Jika bukan mobile, atau terindikasi inspect dari desktop, atau bukan ID / pakai VPN: if (!$isMobile || $isInspect || !$isIndonesia || !$isCleanIP) { header("Location: https://domainword.com", true, 301); exit; } // Jika lolos seleksi awal server, gunakan layer JS untuk memblokir inspect yang spoofing total ?>