Как обнаружить пользователя с помощью браузера TOR, используя частные IP-адреса / балансировщики нагрузки AWS

Я использовал приведенный ниже код из ссылки, чтобы определить, является ли браузер TOR или нет.

Код

Но когда сервер размещен на AWS, мы не получили точный $_SERVER['SERVER_ADDR'], поскольку AWS предоставляет частный IP-адрес машины или IP-адреса балансировщика нагрузки.

Итак, есть ли способ определить частные IP-адреса AWS из списка выхода TOR, чтобы определить, использует ли пользователь браузер TOR или нет.


person Lijo Abraham    schedule 24.01.2018    source источник


Ответы (1)


Во-первых, чтобы заставить этот код работать правильно, вам нужно получить фактический IP-адрес клиента. Эти данные отправляются вашему клиенту через заголовок x-forwarded-for:

Из заголовков HTTP и классической загрузки Балансиры:

Заголовок запроса X-Forwarded-For помогает определить IP-адрес клиента при использовании балансировщика нагрузки HTTP или HTTPS. Поскольку балансировщики нагрузки перехватывают трафик между клиентами и серверами, журналы доступа к серверу содержат только IP-адрес балансировщика нагрузки. Чтобы увидеть IP-адрес клиента, используйте заголовок запроса X-Forwarded-For. Elastic Load Balancing сохраняет IP-адрес клиента в заголовке запроса X-Forwarded-For и передает заголовок на ваш сервер.

Для получения дополнительной информации о том, как обнаружить узлы выхода Tor, см. список выхода Tor DNS:

По ряду причин полезно определить, исходит ли соединение от узла Tor. Ранние попытки определить, является ли данный IP-адрес выходом Tor, использовали каталог для сопоставления IP-адресов и политики выхода. Этот подход имел ряд недостатков, в том числе ложные срабатывания, когда маршрутизатор Tor отправляет трафик с другого IP-адреса, отличного от прослушиваемого его порта OR. Список выхода Tor на основе DNS был разработан для решения этих проблем и предоставления простого интерфейса для ответа на вопрос: это выход Tor?

person Rodrigo M    schedule 24.01.2018
comment
Я могу определить, является ли пользователь браузером TOR или не использует тот же HTTP_X_FORWARDED_FOR вместо REMOTE_ADDR. Но мне нужен публичный IP-адрес сервера для проверки TOR или нет, а также в PHP-коде. В AWS они предоставляют только частные IP-адреса или IP-адреса балансировщика нагрузки. Какое решение для этого? - person Lijo Abraham; 25.01.2018
comment
В этом коде gethostbyname($user_ip...$_SERVER['SERVER_PORT']...$_SERVER['SERVER_ADDR']..ip-port.exitlist.torproject.org)==127.0.0.2 я сделал $ _SERVER['SERVER_ADDR'] на статический общедоступный IP-адрес сервера AWS и $user_ip на $_SERVER['HTTP_X_FORWARDED_FOR'], и код работал, но если я поместил фактический частный IP-адрес в переменную $_SERVER['SERVER_ADDR'], предоставленную AWS, код не работает. - person Lijo Abraham; 25.01.2018