Определение, находится ли пользователь за прокси - PullRequest
3 голосов
/ 16 июня 2009

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

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

Ответы [ 4 ]

5 голосов
/ 16 июня 2009

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.

2 голосов
/ 16 июня 2009

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

VIA
FORWARDED
USERAGENT_VIA
X_FORWARDED_FOR
PROXY_CONNECTION
XPROXY_CONNECTION
HTTP_PC_REMOTE_ADDR
HTTP_CLIENT_IP

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

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

1 голос
/ 16 июня 2009

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

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

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

1 голос
/ 16 июня 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...