Обнаружение того, находится ли пользователь за прокси-сервером

Я пытаюсь выяснить, как я могу определить, заходят ли люди на мой сайт за прокси-сервером или нет. Я читал, что вы можете определить реальный IP-адрес человека через встраиваемые объекты (Flash и Java). Однако я не смог найти ни одного примера или источника для этого.

Я использую PHP, и я прочитал, что ищет $_SERVER['HTTP_X_FORWARDED_FOR'], $_SERVER['HTTP_CLIENT_IP'] и т. Д. Обнаружил бы большинство прокси-серверов, но до сих пор я не смог проверить его с помощью TOR ( возможно, TOR не HTTP_X_FORWARDED это, но я читал, что анонимные прокси-серверы все еще показывают HTTP_X_FORWARDED ). Я хотел бы попробовать сделать это с помощью сервлета Java, если это возможно. Может ли кто-нибудь указать мне в правильном направлении (желательно с примерами?) Я видел код на ha.ckers.org, но они отображали только клиентскую сторону, а не серверную.

Related of "Обнаружение того, находится ли пользователь за прокси-сервером"

TOR не предоставляет никаких заголовков серверов, таких как X_FORWARDED_FOR, поэтому лучше всего использовать список всех известных выходных узлов. Список можно найти на странице https://torstat.xenobite.eu/ .

Для других прокси-серверов вы можете посмотреть заголовки серверов. Возможные заголовки серверов включают:

 HTTP_VIA HTTP_X_FORWARDED_FOR HTTP_FORWARDED_FOR HTTP_X_FORWARDED HTTP_FORWARDED HTTP_CLIENT_IP HTTP_FORWARDED_FOR_IP VIA X_FORWARDED_FOR FORWARDED_FOR X_FORWARDED FORWARDED CLIENT_IP FORWARDED_FOR_IP HTTP_PROXY_CONNECTION 

В PHP вы можете получить значение этих полей в $_SERVER[] superglobal .

При поиске следующих полей заголовков вы должны использовать некоторые прокси.

 VIA FORWARDED USERAGENT_VIA X_FORWARDED_FOR PROXY_CONNECTION XPROXY_CONNECTION HTTP_PC_REMOTE_ADDR HTTP_CLIENT_IP 

Что касается блокировки TOR, вы лучше всего блокируете узлы выхода TOR с помощью iptables.

И если вы действительно должны быть уверены, что можете попробовать некоторые «полузадача», такие как встраивание флэш-памяти или java на вашу страницу, которая отправляет вам реальный клиентский ip. Но это имеет только ограниченный объем, поскольку вы можете просто получить локальный ip, если он находится, например, в локальной сети, вы получаете что-то вроде 192.168.1.x

Если это вариант, вы можете попробовать использовать https. Затем пользовательский IP-адрес должен быть виден вам. Однако не знаю о пользователях, работающих с сайтами SSL-прокси.

Ни Java-апплеты, ни Flash не должны терять IP-адрес клиента. Я знаю, что более старые версии Flash имели недостаток безопасности, который сделал это возможным. Скорее всего, это исправлено.

Я никогда не использовал TOR, но из того, что я читал, он, похоже, реализован как своего рода VPN, и, таким образом, браузер вообще не узнает об этом.

Зачем вам нужно знать, находится ли пользователь за прокси?