Intereting Posts
Как включить использование HTTP_RANGE на сервере Как работают миграции Laravel? заменить любой URL-адрес в строке текста, на интерактивные ссылки с php Как настроить работу cron в Magento Пользователь должен просмотреть страницу перед просмотром Настройка кодировки PHP по умолчанию для utf-8? Я хочу интегрировать аутентификацию карты Aadhaar в PHP. Я пробовал этот код для доступа к API, но я не могу получить никакого ответа Доступ к числовому свойству в объекте json Ограничение open_basedir Файл не находится в допустимом пути Обновление массивов в массиве с использованием foreach Как получить идентификатор кнопки типа отправки, когда нажата кнопка (PHP + HTML) Функция base_url () не будет работать на страницах ошибок. Даже после автозагрузки Как преобразовать строку JSON в массив Когда я создаю экземпляр класса в PHP, я получаю указатель на объект? Как реализовать MVC с нуля в PHP?

Обнаружение клиентов с помощью прокси-серверов через PHP

Я ищу метод или способ обнаружения клиентов с использованием любого типа прокси-сервера, просматривающего мой веб-сайт. Я использую PHP / Apache … что лучший способ сделать это? Любой прокси-сервер должен быть обнаружен, а не тот или иной.

редактировать

Меня больше интересуют анонимные прокси … так как нормальные легко обнаруживаются при поиске HTTP_X_FORWARDED_FOR .

Другое редактирование

Попробуй это:

1) перейдите на http://kproxy.com (или любой другой бесплатный анонимный прокси-сайт)

2) посещение: http://www.worldofwarcraft.com

3) они могут каким-то образом заблокировать, поскольку ошибки страницы с «Ошибка загрузки таблицы ошибок: произошла сетевая ошибка, загрузив таблицу стилей XSLT: http://kproxy.com/new-hp/layout/layout.xsl "

Я хочу сделать что-то подобное для предотвращения прокси.

Вы не можете обнаружить это, если они не передают специальные заголовки, которые явно упоминают его как X-Forwarded-For или что-то в этом роде.

Насколько я знаю, вы должны использовать черный список. Пользователи, которые используют шорт-портфолио, VPN или другие более сложные методы, не поддаются проверке, поскольку они ведут себя точно так же, как и обычные пользователи.

Используйте следующие 2 решения в PHP. // метод 1 = быстрый, но не работает с анонимными прокси

  $proxy_headers = array( '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' ); foreach($proxy_headers as $x){ if (isset($_SERVER[$x])) die("You are using a proxy!"); } 

// Methode 2 = portscan возвращается к исходному IP-адресу на обычных портах прокси-сервера.

  $ports = array(8080,80,81,1080,6588,8000,3128,553,554,4480); foreach($ports as $port) { if (@fsockopen($_SERVER['REMOTE_ADDR'], $port, $errno, $errstr, 30)) { die("You are using a proxy!"); } } 

Metasploit использует множество разных методов, чтобы заставить клиентскую систему осуществлять прямое подключение (уязвимости / ошибки в Flash, Java, QuickTime, MS Office, настраиваемый DNS-сервер).

В качестве альтернативы, если вы не можете заставить браузер клиента запускать metasploit, вы можете попытаться найти открытые прокси (сканирование портов) и известные узлы выхода Tor .

Но, пожалуйста, не предполагайте, что прокси-серверы злы и их нужно заблокировать – существует множество законных доверенных лиц, и некоторые пользователи должны их использовать.

Если у вас возникли проблемы со спамом или другим оскорбительным трафиком, то просто блокирование прокси не сильно поможет. Вы должны искать конкретные решения, которые определяют суть проблемы (спам-фильтры, IDS), а не предполагать анонимность = виновны.

Существуют различные платные / бесплатные решения. Большинство из них обращается к IP-адресу клиента, пытающемуся подключиться, чтобы определить, находятся ли они в прокси или нет.

Выплачено:
Maxmind – они сосредоточены на обнаружении мошенничества и имеют подкатегорию для обнаружения прокси. Обратите внимание, что теперь это считается «устаревшим» сервисом.

Свободно:
WITCH – Возможность обнаружения OpenVPN, просматривая значения MSS, которые однозначно идентифицируются. Код доступен на github.

GetIpIntel – определение прокси / VPN с использованием машинного обучения, запросов через API.

Есть еще несколько бесплатных опций, перечисленных в обмене стека безопасности .

Все, что клиент передает серверу, может быть самонастраиваемым. Вы ничего не можете доверять, кроме IP-адреса. Поэтому вы не можете проверить данные заголовка, если это прокси или обычный клиент.
Кстати: это намерение прокси не показывать себе прокси 🙂

Конечно, вы можете взять IP-адрес респондера и отправить HTTP-запрос, который вы отправите прокси. Если он реагирует, это может быть прокси в противном случае, это обычный клиент. Этот метод был бы очень дорогим и ненадежным. Если прокси, запрошенный вашим сервером, находился за брандмауэром, вы не получили бы ответа и подумали бы, что это обычный клиент.

Я думаю, что то, что здесь происходит, – это какой-то клиентский JavaScript, который пытается что-то загрузить, и может «видеть», что страница просматривается внутри фрейма. Это может быть более плодотворным средством для изучения – как указывали другие ответы, прокси намеренно затрудняют определение только с сервера.

Старая тема, но я мог бы что-то придумать.

Он живет на моем сайте, и я думаю, что он может работать в большинстве случаев.

Моя проблема заключалась в том, что запрещенный пользователь возвращался на мой сайт и перерегистрировался с новым адресом электронной почты, используя один из многих прокси, которые вы можете найти. То, что я сделал, это простой вызов jQuery в форме регистрации / регистрации:

 <form id="login_form" method="post" action="/#fake_login_url"> stuff you need for the form </form> <script> $('#login_form').attr('action','real_login_form'); </script> 

Этот веб-сайт показывает эту ошибку, потому что в ее исходном коде есть адрес, указывающий на «new-hp / layout / layout.xsl». Прокси хочет скрыть свой ip, поэтому он меняет его на http://kproxy.com/new-hp/layout/layout.xsl , указывая на свой сервер, но файл на самом деле не существует, поэтому Flash-плагин может Не находите.

я чувствую, что ответить на 8-летнюю нить бесполезно, но я буду отвечать в любом случае для дальнейшего использования.
Я не знаю про прокси, но большинство VPN (если вы их переходите) принесут какую-то страницу ошибок. если вы сделали что-то вроде …

 $cont = file_get_contents($_SERVER["REMOTE_ADDR"]); //the users ip $errormsg = "nginx"; if(strpos($cont, $errormsg)){ die("No VPN's or Proxies Allowed"); } 

это очень просто, вы можете получить массив сообщений об ошибках и сделать это таким образом.
Это не сработает, если у пользователя есть portforwarded их порт 80, но я не понимаю, почему обычный человек сделает это.

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

 <?php $host = gethostbyaddr($_SERVER['REMOTE_ADDR']); if ($host != $_SERVER['REMOTE_ADDR']) die('Proxy detected.'); ?>