Блокировка посетителей, юзающих анонимные прокси-сервера

Статус
В этой теме нельзя размещать новые ответы.
M

malpa7

Прохожие
Чуваки, помогите решить проблему при которой спам-роботы атакуют движок. Что самое интересное, все новости движка защищены captcha (GD2lib), но спам-роботам это стало не помехой в последнее время.

Я заметил у всех постингов общий признак - все спамовые записи посланы от пользователей с неопределенным АйПи адресом. Возникает резонный вопрос: КАК ЗАБЛОКИРОВАТЬ ПОЛЬЗОВАТЕЛЯМ С НЕОПРЕДЕЛЕННЫМ АЙПИ ДОСТУП НА САЙТ?

Яндекс еще с 2001 года запрещает доступ на сайт анонимным юзерам. Я сам пару раз не мог зайти на Яндекс. Практикуют такое и другие сайты. Так вот как это делается?

Добавлено через 2 минуты
В добавок к теме я хочу посоветоваться у мастеров по поводу одного возможного решения проблемы. Думаю, можно сделать так: НЕ ЗАПРЕТИТЬ, А РАЗРЕШИТЬ. Разрешить пользователям с АйПи 000.000.000.00 - 999.999.999.99 доступ, тогда пользователи с неопределенным АйПи отсеятся.

Можно ли сделать это через .httaccess? Если да, то каков формат записи?

П.С. В логах спамеры показаны как юзеры, у которых "IP NOT LOGGED!"
 
malpa7 написал(а):
Чуваки, помогите решить проблему при которой спам-роботы атакуют движок. Что самое интересное, все новости движка защищены captcha (GD2lib), но спам-роботам это стало не помехой в последнее время.

Я заметил у всех постингов общий признак - все спамовые записи посланы от пользователей с неопределенным АйПи адресом. Возникает резонный вопрос: КАК ЗАБЛОКИРОВАТЬ ПОЛЬЗОВАТЕЛЯМ С НЕОПРЕДЕЛЕННЫМ АЙПИ ДОСТУП НА САЙТ?

Яндекс еще с 2001 года запрещает доступ на сайт анонимным юзерам. Я сам пару раз не мог зайти на Яндекс. Практикуют такое и другие сайты. Так вот как это делается?

Добавлено через 2 минуты
В добавок к теме я хочу посоветоваться у мастеров по поводу одного возможного решения проблемы. Думаю, можно сделать так: НЕ ЗАПРЕТИТЬ, А РАЗРЕШИТЬ. Разрешить пользователям с АйПи 000.000.000.00 - 999.999.999.99 доступ, тогда пользователи с неопределенным АйПи отсеятся.

Можно ли сделать это через .httaccess? Если да, то каков формат записи?

П.С. В логах спамеры показаны как юзеры, у которых "IP NOT LOGGED!"
Вариант сменить каптча нет?

.htaccess
Order deny,allow
Deny from all
Allow from 10.0.0.0-255.255.255.255

Я мог перегнуть палку с htaccess и мой вариант может быть не верен, я не проверял. Сообщи о результатах. Правда странность, как у машины в Интернет не может быть IP адреса?
Ждём результатов, если не поможет - узнаем мы их IP, вернее поможем узнать.
 
1. Нет, т.к. она автоматически прикручена ко всем разделам сайта самими разработчиками. Ее менять - слишком много проблем и работы. А если обновление скрипта выйдет? Опять все файлы потрошить?

2. ДЕЙСТВИЕ:

"Order deny,allow
Deny from all
Allow from 10.0.0.0-255.255.255.255"

РЕЗУЛЬТАТ:

"403 - Forbidden"

Наверное, неверное дана команда в ДЕЙСТВИИ.

3. Дело в том, что комментаторов и их АйПи ловит сам скрипт. И скрипт отображает правильно АйПи всех пользователей. Исключение - спамеры, у которых АйПи скрипт по каким-то причинам определить не может.
 
malpa7 написал(а):
1. Нет, т.к. она автоматически прикручена ко всем разделам сайта самими разработчиками. Ее менять - слишком много проблем и работы. А если обновление скрипта выйдет? Опять все файлы потрошить?

2. ДЕЙСТВИЕ:

"Order deny,allow
Deny from all
Allow from 10.0.0.0-255.255.255.255"

РЕЗУЛЬТАТ:

"403 - Forbidden"

Наверное, неверное дана команда в ДЕЙСТВИИ.

3. Дело в том, что комментаторов и их АйПи ловит сам скрипт. И скрипт отображает правильно АйПи всех пользователей. Исключение - спамеры, у которых АйПи скрипт по каким-то причинам определить не может.
Отвечу сразу на 3.
Предыдущие варианты в топку.

Нужно найти какой функцией определяется IP, может кривая функция. Ну не может быть такого, чтобы у машины в Интернет не было IP.

Что за скрипт-то?
 
я могу вам сказать как яндекс борется с доступом через левые прокси.

Они просто ведут свою базу адресов прокси серверов.

туда попадают адреса из многих публичных списков.
и туда попадают адреса, которые обнаружила их ситсема активного сканирования.

Вот зашел ты на сервер с адреса, а их бот-проверяльщик пытается отсканить стандартные порты на которых работаютпроксики товего адреса и если там отвечает прокся - адрес в блэклист.

Ну и разумеется анализ переменных хиадера вроде HTTP_X_FORWARDED

Правда сейчас сканирование с яндекса уже редкость, вероятно они просто запоминают результат и не сканируют при каждом заходе.
 
на 100% защита от анонимных юзеров невозможна, что делать с теми к кого нестандартные порты,тор,впн? так-что такая защита имхо беспонт.
 
Может вот эта функция на PHP поможет определить IP. После определения IP спамеров, можно добавлять их в файл и далее банить.

function PMA_getIp()
{
global $REMOTE_ADDR;
global $HTTP_X_FORWARDED_FOR, $HTTP_X_FORWARDED, $HTTP_FORWARDED_FOR, $HTTP_FORWARDED;
global $HTTP_VIA, $HTTP_X_COMING_FROM, $HTTP_COMING_FROM;

// Get some server/environment variables values
if (empty($REMOTE_ADDR)) {
if (!empty($_SERVER) && isset($_SERVER['REMOTE_ADDR'])) {
$REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
}
else if (!empty($_ENV) && isset($_ENV['REMOTE_ADDR'])) {
$REMOTE_ADDR = $_ENV['REMOTE_ADDR'];
}
else if (@getenv('REMOTE_ADDR')) {
$REMOTE_ADDR = getenv('REMOTE_ADDR');
}
} // end if
if (empty($HTTP_X_FORWARDED_FOR)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$HTTP_X_FORWARDED_FOR = $_SERVER['HTTP_X_FORWARDED_FOR'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_X_FORWARDED_FOR'])) {
$HTTP_X_FORWARDED_FOR = $_ENV['HTTP_X_FORWARDED_FOR'];
}
else if (@getenv('HTTP_X_FORWARDED_FOR')) {
$HTTP_X_FORWARDED_FOR = getenv('HTTP_X_FORWARDED_FOR');
}
} // end if
if (empty($HTTP_X_FORWARDED)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_X_FORWARDED'])) {
$HTTP_X_FORWARDED = $_SERVER['HTTP_X_FORWARDED'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_X_FORWARDED'])) {
$HTTP_X_FORWARDED = $_ENV['HTTP_X_FORWARDED'];
}
else if (@getenv('HTTP_X_FORWARDED')) {
$HTTP_X_FORWARDED = getenv('HTTP_X_FORWARDED');
}
} // end if
if (empty($HTTP_FORWARDED_FOR)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_FORWARDED_FOR'])) {
$HTTP_FORWARDED_FOR = $_SERVER['HTTP_FORWARDED_FOR'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_FORWARDED_FOR'])) {
$HTTP_FORWARDED_FOR = $_ENV['HTTP_FORWARDED_FOR'];
}
else if (@getenv('HTTP_FORWARDED_FOR')) {
$HTTP_FORWARDED_FOR = getenv('HTTP_FORWARDED_FOR');
}
} // end if
if (empty($HTTP_FORWARDED)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_FORWARDED'])) {
$HTTP_FORWARDED = $_SERVER['HTTP_FORWARDED'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_FORWARDED'])) {
$HTTP_FORWARDED = $_ENV['HTTP_FORWARDED'];
}
else if (@getenv('HTTP_FORWARDED')) {
$HTTP_FORWARDED = getenv('HTTP_FORWARDED');
}
} // end if
if (empty($HTTP_VIA)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_VIA'])) {
$HTTP_VIA = $_SERVER['HTTP_VIA'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_VIA'])) {
$HTTP_VIA = $_ENV['HTTP_VIA'];
}
else if (@getenv('HTTP_VIA')) {
$HTTP_VIA = getenv('HTTP_VIA');
}
} // end if
if (empty($HTTP_X_COMING_FROM)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_X_COMING_FROM'])) {
$HTTP_X_COMING_FROM = $_SERVER['HTTP_X_COMING_FROM'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_X_COMING_FROM'])) {
$HTTP_X_COMING_FROM = $_ENV['HTTP_X_COMING_FROM'];
}
else if (@getenv('HTTP_X_COMING_FROM')) {
$HTTP_X_COMING_FROM = getenv('HTTP_X_COMING_FROM');
}
} // end if
if (empty($HTTP_COMING_FROM)) {
if (!empty($_SERVER) && isset($_SERVER['HTTP_COMING_FROM'])) {
$HTTP_COMING_FROM = $_SERVER['HTTP_COMING_FROM'];
}
else if (!empty($_ENV) && isset($_ENV['HTTP_COMING_FROM'])) {
$HTTP_COMING_FROM = $_ENV['HTTP_COMING_FROM'];
}
else if (@getenv('HTTP_COMING_FROM')) {
$HTTP_COMING_FROM = getenv('HTTP_COMING_FROM');
}
} // end if

// Gets the default ip sent by the user
if (!empty($REMOTE_ADDR)) {
$direct_ip = $REMOTE_ADDR;
}

// Gets the proxy ip sent by the user
$proxy_ip = '';
if (!empty($HTTP_X_FORWARDED_FOR)) {
$proxy_ip = $HTTP_X_FORWARDED_FOR;
} else if (!empty($HTTP_X_FORWARDED)) {
$proxy_ip = $HTTP_X_FORWARDED;
} else if (!empty($HTTP_FORWARDED_FOR)) {
$proxy_ip = $HTTP_FORWARDED_FOR;
} else if (!empty($HTTP_FORWARDED)) {
$proxy_ip = $HTTP_FORWARDED;
} else if (!empty($HTTP_VIA)) {
$proxy_ip = $HTTP_VIA;
} else if (!empty($HTTP_X_COMING_FROM)) {
$proxy_ip = $HTTP_X_COMING_FROM;
} else if (!empty($HTTP_COMING_FROM)) {
$proxy_ip = $HTTP_COMING_FROM;
} // end if... else if...

// Returns the true IP if it has been found, else FALSE
if (empty($proxy_ip)) {
// True IP without proxy
return $direct_ip;
} else {
$is_ip = preg_match('|^([0-9]{1,3}\.){3,3}[0-9]{1,3}|', $proxy_ip, $regs);
if ($is_ip && (count($regs) > 0)) {
// True IP behind a proxy
return $regs[0];
} else {
// Can't define IP: there is a proxy but we don't have
// information about the true IP
return FALSE;
}
} // end if... else...
} // end of the 'PMA_getIp()' function
 
malpa7 написал(а):
Чуваки, помогите решить проблему при которой спам-роботы атакуют движок. Что самое интересное, все новости движка защищены captcha (GD2lib), но спам-роботам это стало не помехой в последнее время.

на некоторых форумах появилась фишка типа "решите пример 2 +11 = ???"
или еще что посложнее
боты точно отсеивает.

можно еще усложнить каптчу: наложить буквы на цифры и предложить ввести в поле ввода только буквы к примеру

а банить по IP или его отсутствию ИМХО не поможет, т.к. неизвестно с чем имеем дело: м.б. это какой-нить зомбикомпьютер, владелец которого получает IP динамически. Или вообще юзер из-под NUT или домашней сети, с сетью на NNNNN компов. Забанишь- закроешь доступ всем.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху