[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как забанить IP хостера?
Владимир55
На сайте есть некая автоматизированная система, которая в процессе работы открывает динамические страницы

	$adr  = "http://site.ru/tekhnologii/";
$buff = file_get_contents($adr);


При этом получается так, что счетчик посетителей фиксирует это открытие как просмотр сайта.

Чтобы избавиться от этого, нужно выяснить действующий в данный момент IP, который не постоянен.

Как его узнать?

===========
Вот этот код дает IP адрес провайдера интернет, которым пользуется администратор, по инициативе которого вызывается скрипт:
	if (isset($_SERVER['HTTP_X_REAL_IP'])) $ip = $_SERVER['HTTP_X_REAL_IP'];
else $ip = $_SERVER['REMOTE_ADDR'];
echo $ip;
kristall
Не обязательно по IP. Можно по User-Agent или по какому-нибудь другому характерному заголовку. Или можно в конец добавлять какой-нибудь левый GET-запрос и фильтровать уже по нему.

_____________
echo '<pre>',print_r($var, 1);die;

root@server# make love && war
Владимир55
То есть, по IP нет технической возможности?
kristall
Можно, конечно. Но ты же сам пишешь, что IP постоянно меняется. Пускай твоя автоматизированная система отдает какой-нибудь другой постоянный заголовок. Например, заковыристый юзер-агент, который точно с браузерным не спутать.

Какая разница, что проверять: $_SERVER['HTTP_X_REAL_IP'] или $_SERVER['HTTP_USER_AGENT'] ?

_____________
echo '<pre>',print_r($var, 1);die;

root@server# make love && war
Владимир55
Цитата (kristall @ 24.02.2016 - 14:23)
Пускай твоя автоматизированная система отдает какой-нибудь другой постоянный заголовок. Например, заковыристый юзер-агент, который точно с браузерным не спутать.

Слишком много перелопачивать придется.

Бан по IP уже существует для админа, так что добавить в него второй IP было бы наименее морочно.

А то, что IP хостинга меняется, проблем не создает, если его предварительно определить средствами РНР. Вопрос лишь в том, как это сделать.
kristall

$opts = array(
'http'=>array(
'header'=>"User-Agent: My Super Pusper Authmatic System 39c33260f6d7671e2dae7f08d1087e22\r\n"
)
);


$context = stream_context_create($opts);
$adr = "http://site.ru/tekhnologii/";
$file = file_get_contents($adr, false, $context);
?>


_____________
echo '<pre>',print_r($var, 1);die;

root@server# make love && war
Владимир55
Решение найдено: сделать служебную страницу с кодом определения ip и вызывать её по полному адресу типа http://site.ru/ip-test/
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.