Как узнать ip посетителя?
-
22-08-2019 - |
Вопрос
У меня есть сайт-агрегатор блогов
истории отсортированы по количеству посещений
Я думаю, что столкнулся со спамом посещений
потому что истории некоторых блогов получают много посещений за одну секунду с разными IP-адресами
мой сайт не разрешает посещение с одного и того же IP;однако мои посетители каким-то образом меняют свои IP-адреса.
есть ли у них какое-либо решение для обнаружения спам-посещений? Интересно, как Google AdSense решает такую проблему?
Спасибо
Решение
Короткий ответ: невозможно остановить решительного злоумышленника, если единственное непроверенное посещение — единственное, что необходимо для изменения порядка вашей истории.Возможно, вам захочется подумать о внедрении системы голосования зарегистрированных пользователей.
Однако Вы можете собрать несколько фрагментов информации и объединить их все:
1) Пользовательский агент
2) IP-адрес
3) Заголовок X-Forwarded-For (если доступен)
Часто злоумышленники ленятся и не переключаются между различными пользовательскими агентами.Если вы настроите свою систему на обработку информации о посещениях через определенный интервал (а не в режиме реального времени), вы потенциально сможете отфильтровывать большие коллекции посещений, происходящих одновременно с одним и тем же пользовательским агентом.
Вы всегда можете загрузить базы данных прокси-серверов с таких сайтов, как antiproxy.com, но правда в том, что большинство хорошо спланированных атак сегодня исходят от узлов ботнетов, которые еще не задокументированы.Вполне возможно, что ваш сайт станет объектом атаки с гетерогенным трафиком, неотличимым от обычных посетителей.
По крайней мере, я бы предложил изменить вашу реализацию, чтобы пользователи могли голосовать за истории и требовать ввод капчи.
Другие советы
С помощью PHP вы можете проверить переменную $_SERVER ["HTTP_X_FORWARDED_FOR"] по IP-адресу, чтобы немного больше убедиться в том, что клиент тот, кем он себя называет.Это поможет идентифицировать людей через некоторые прокси.
Я иногда использую эту функцию.Но, как говорили другие, в 100% случаев может быть сложно получить правильный IP-адрес.
Я не могу вспомнить, откуда я взял эту функцию, но, похоже, в Интернете она довольно распространена.
function getRealIpAddr()
{
if (!empty($_SERVER['HTTP_CLIENT_IP']))
{
$ip=$_SERVER['HTTP_CLIENT_IP'];
}
elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
{
$ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
}
else
{
$ip=$_SERVER['REMOTE_ADDR'];
}
return $ip;
}
Вы не можете надежно определить IP.
Возможно, оно поступает через прокси-сервер или может быть подделано.