Я пытаюсь выяснить, как я могу определить, заходят ли люди на мой сайт за прокси-сервером или нет. Я читал, что вы можете определить реальный 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, но они отображали только клиентскую сторону, а не серверную.
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, и, таким образом, браузер вообще не узнает об этом.
Зачем вам нужно знать, находится ли пользователь за прокси?