Защита форума от ботов

Автор musorhik, 05 мая 2013, 19:34:01

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

musorhik

Есть хотя бы несколько решений проблемы от регистрации ботов и превращения форума в свалку, с кучей исходящих ссылок. Даже не в ссылках дело, а в том , что эти индийские и китайские боты засирают форум. Капчи они едят на раз, два.
Как решить вопрос ?
Форум для сайта  http://rost-okna.ru если долго мучиться что нибудь получится.

Сапожник

Несколько текстовых проверочных вопросов на русском языке отсеивают не только китацев, но и и некоторых наших соотечестыенников, не отличающихся умом и сообразительностью.
Я хостюсь на Хвостинге :) 10 Гб (15 сайтов) ~ 30$/год
Рефка: http://hvosting.ua/

karavan


musorhik

Цитата: Сапожник от 05 мая 2013, 19:46:37
Несколько текстовых проверочных вопросов на русском языке отсеивают не только китацев, но и и некоторых наших соотечестыенников, не отличающихся умом и сообразительностью.
Вот что да, так это да.  С интеллектом у желающих заработать на регистрации, точно туго.!
Форум для сайта  http://rost-okna.ru если долго мучиться что нибудь получится.

musorhik

К стати, спасибо karavan за ответ. Но ваш прибамбас оставим на заначку.
Форум для сайта  http://rost-okna.ru если долго мучиться что нибудь получится.

Lysyj


Антибот регистрация на Вашем сайте. Теперь пользователям во время регистрации нужно будет ввести только время которое изображено на часах.

Скачать мод

Локализация

После установки этого бота к себе на форум, пропали автоматические регистрации ботами.

igrok54

От иностранных ботов я в начало Sources/Post.php после строки:
Цитироватьdie('Hacking attempt...');
дописал функционал на проверку наличия русских символов в поле названии темы и поле текста сообщения.
Проверяется на наличие хотя бы одной русской буквы. Если русской буквы в поле не найдено, то выдается ошибка, что поле пустое. Действует как при создании новой темы, так и при добавлении ответа в существующую тему.
код:
Цитироватьfunction check_russian($t) {
   $ru=array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ь','ы','ъ','э','ю','я','А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ь','Ы','Ъ','Э','Ю','Я');
   for($i=0;$i<count($ru);$i++) {
      if(strpos($t,$ru[$i])!==false) {
         return true;
      }
   }
   return false;
}
if(isset($_POST['subject']) && check_russian($_POST['subject'])===false) {
$_POST['subject']='';
$context['post_error']['no_subject'] = true;
}
if(isset($_POST['message']) && check_russian($_POST['message'])===false) {
$_POST['message']='';
$context['post_error']['no_message'] = true;
}

PS. Версия SMF стоит старая, в новых версиях проверьте упоминание в файле  Sources/Post.php переменных $_POST['subject'], $_POST['message'], $context['post_error']['no_subject'], $context['post_error']['no_message'].
Кто сделает - отпишите, плиз, в какой версии установил и соответствуют ли имена переменных.
if ( 2 > 3 ) {...} // А вдруг?..

igrok54

Вторая неделя после установки проверки на русские буквы - нерусскоязычного спама нет  O0, на русском - одно сообщение спамерское удалил... А раньше за неделю несколько сотен спам-сообщений было... Цель достигнута.  :)
if ( 2 > 3 ) {...} // А вдруг?..

GeorG

Этот метод не каждому подойдет. У меня например много названий тем, только на английском, а вот спамят обычно русские.
Кстати, бывает что бот не создает тему, а пишет в существующей - вот готовый пример (прям вовремя) - http://www.simplemachines.ru/index.php?topic=1454.msg129381#msg129381
Верстка тем по шаблону, их доработка/переработка, переделка тем с версии smf 1.1 на smf 2.0. Примеры работ - insidestyle.ru
Установка модов (заточка под ваш форум); Моды под заказ; Обновление форума; Правильный перенос; Удаление/лечение вирусов; Устранения ошибок.
Обращаться в ЛС
Мой форум
Модуль анти-спама CleanTalk, сам пользуюсь
Сервера которыми сам пользуюсь - cadedic.ru

igrok54

Цитата: GeorG от 02 сентября 2013, 14:36:37Этот метод не каждому подойдет. У меня например много названий тем, только на английском, а вот спамят обычно русские.
Кстати, бывает что бот не создает тему, а пишет в существующей - вот готовый пример (прям вовремя) - http://www.simplemachines.ru/index.php?topic=1454.msg129381#msg129381

Ну тогда Вам не нужна проверка поля название темы, а нужна только проверка поля сообщения, поэтому Вам подойдет код, в котором убрана проверка темы:
Цитироватьfunction check_russian($t) {
   $ru=array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','ь','ы','ъ','э','ю','я','А','Б','В','Г','Д','Е','Ё','Ж','З','И','Й','К','Л','М','Н','О','П','Р','С','Т','У','Ф','Х','Ц','Ч','Ш','Щ','Ь','Ы','Ъ','Э','Ю','Я');
   for($i=0;$i<count($ru);$i++) {
      if(strpos($t,$ru[$i])!==false) {
         return true;
      }
   }
   return false;
}
if(isset($_POST['message']) && check_russian($_POST['message'])===false) {
$_POST['message']='';
$context['post_error']['no_message'] = true;
}
if ( 2 > 3 ) {...} // А вдруг?..