Как определить прокси или нет (на PHP)


Часто, при программировании на PHP требуется определить с прокси-сервера или нет пришел посетитель на сайт. Возможно это злоумышленник или хакер пытается взломать сайт, пытаясь при этом замаскировать свое посещение.

Для этого есть один способ, пусть и не 100%-ый. 

Если внимательно посмотреть phpinfo() посетителя пришедшего с прокси-сервера, то можно заметить что у него появляется параметр $_SERVER['HTTP_VIA']. Это и есть отличительная черта посетителя через proxy server.

<?
phpinfo();
?>

В переменной $_SERVER['HTTP_VIA'] хранится имя, версия программного обеспечения и номер порта прокси-сервера.

Конечно, это способ не 100%-ный, но все бесплатные прокси определит практически наверняка.

Если прокси сервер хороший - платный, то вряд-ли вам поможет этот способ. Но таких мало, и найти их трудно, поэтому в 90% случаев вам поможет этот способ определения прокси-сервера на PHP.

Вот и сам код на PHP для определения с прокси сервера или нет пришел посетитель:

<?
if ( !empty($_SERVER['HTTP_VIA']) )
     {
     echo '<p>Посетитель маскируется proxy-сервером</p>';
     }
?>

Для более точного определения того что посетитель пришел не через прокси сервер можно так-же использовать следующую конструкцию:

<?
if  ( @$_SERVER['REMOTE_ADDR']==@$_SERVER['HTTP_X_REAL_IP'] AND @$_SERVER['REMOTE_ADDR']==@$_SERVER['HTTP_X_FORWARDED_FOR'])
     {
     echo '<p> Посетитель НЕ маскируется proxy-сервером!</p>';
     }
?>

Если сложить все вышесказанное в одно-единое, то получим вот-такую программу на PHP для определения с прокси-сервера или нет пришел посетитель на сайт:

<?
if  ( 
    @$_SERVER['REMOTE_ADDR']==@$_SERVER['HTTP_X_REAL_IP'] AND 
    @$_SERVER['REMOTE_ADDR']==@$_SERVER['HTTP_X_FORWARDED_FOR']  AND 
    empty($_SERVER['HTTP_VIA']) 
    )
       {
       echo '<p>Посетитель НЕ маскируется proxy-сервером!</p>';
       }
?>

Для общего развития отмечу: если посетитель пришел с прокси-сервера и в $_SERVER['HTTP_VIA'] имеется об этом информация, то его реальный IP адрес можно посмотреть в том-же phpinfo(), в переменной  $_SERVER['HTTP_X_FORWARDED_FOR']. 

 


Тэги:

Комментарии: 5

Прокомментировать »

 
 
tor
16.07.2013
 

Хороший прокси не спалить. Там все параметры вручную постоянно меняются...

lavrik
18.07.2013
 

именно поэтому я и отметил что это способ не 100%-ый. Но такие прокси-сервера, о котором вы говорите, дорого стоят, и их трудно найти.

andrei
7.04.2014
 

a другого способа определить по айпишнику прокси или нет есть? ПРосто у меня форум на опк.ру и туда часто тролли захаживают...

lavrik
7.04.2014
 

Есть и другие способы, но этот самый действенный, хоть и не на 100% работает...

ghjukliokss
24.02.2017
 

прогон хрумером логин скайпа pokras7777

 

Прокомментировать

 
 
Сообщение *
 
Проверочный код *
 
 
 
Яндекс.Метрика