Защита от авторегистрации ботов

ZIM

Пользователь
Мод был написан мной когда спамботы начали очень сильно доставать оставляя по сотни сообщений в темах. Некоторые проходили активацию по почте.

Открываем usercp_register.php
Ищем
PHP:
$tp_data = array();  // данные для tpl
После
PHP:
// Anti spam bot
if(!empty($_POST['num1']) && !empty($_POST['num2']) && !empty($_POST['postnum'])){ 
 $num1=intval($_POST['num1']);
 $num2=intval($_POST['num2']);
 $isnum=$num1+$num2;
 $postnum=intval($_POST['postnum']);
}else{
 $isnum = 0;
 $postnum = -1;
}

Ищем
PHP:
if ($need_captcha && !CAPTCHA()->verify_code())
 {
 $errors[] = $lang['CONFIRM_CODE_WRONG'];
 }
}

После
PHP:
// Anti spam bot
$need_chekbot = ($mode == 'register' && !IS_ADMIN);

if ($submit && $postnum!=$isnum && $need_chekbot)
 {
 $errors[] = $lang['IS_SPAM_BOT'];
 }

Ищем
PHP:
else
 {
 bb_die($lang['NOTHING_HAS_CHANGED']);
 }
 }
}
После
PHP:
// Anti spam bot
$num1=intval(rand(1, 10)); 
$num2=intval(rand(1, 10));

Ищем
PHP:
'U_RESET_AUTOLOGIN' => "login.php?logout=1&reset_autologin=1&sid={$userdata['session_id']}",
После
PHP:
// Anti spam bot
 'NEED_CHEK_BOT' => $need_chekbot,
 'NUM1' => $num1, 
 'NUM2' => $num2,
 'ANTI_SPAM' => $lang['ANTI_SPAM'],
 'MSG_ANTI_SPAM' => $lang['MSG_ANTI_SPAM'],

Открываем usercp_register.tpl
Ищем
PHP:
<!-- IF CAPTCHA_HTML -->
<tr>
 <td>{L_CONFIRM_CODE}:</td>
 <td><span id="refresh_captcha">{CAPTCHA_HTML}</span> <img align="middle" src="/images/pic_loading.gif" title="{L_UPDATE}" onclick="ajax.exec({ action: 'user_register', mode: 'refresh_captcha'}); return false;"></td>
</tr>
<!-- ENDIF -->
После
PHP:
<!-- IF NEED_CHEK_BOT -->
<tr>
 <td>{L_ANTI_SPAM}: * <h6>{MSG_ANTI_SPAM}: {NUM1}+{NUM2} = ?</h6></td>
 <input type="hidden" name="num1" value="{NUM1}" />
 <input type="hidden" name="num2" value="{NUM2}" />
 <td><input type="text" name="postnum" size="35" maxlength="8" /></td>
</tr>
<!-- ENDIF -->

Открываем lang_main.php и в самый конец вставляем
PHP:
// Anti spam bot
$lang['ANTI_SPAM'] = 'Антиспам бот проверка'; 
$lang['MSG_ANTI_SPAM'] = 'Сколько будет';
$lang['IS_SPAM_BOT'] = 'Ошибка при проверка. Неправильный ответ на антиспам вопрос';

В общем алгоритм очень простой и унылый. Но работает. Кроме того мне было трудно перенести это мод со старой версии трекера так как код usercp_register.php порядочно изменился. Так что если что-то я поставил не туда то я не специально. На данный момент все работает. В любом случае со спамботами на HQ версии были проблемы.
 

Basilevs

Пользователь
Некоторые проходили активацию по почте.

Это были хуманы, а раз так, то это не спасёт - только лишнее время.

Нужно ограничить,

на выбор или вместе:
показ формы быстрого ответа (после n-го стажа на сайте или кол-ва сообщения).
усиление флуд-контроля для новичков (отсчёт по стажу).
ограничение количества сообщения для новичков (отсчёт по стажу).

Полностью не победит, но в разы уменьшит.
 

ZIM

Пользователь
Да, но после установки этого ботов в разы поменьшало. Точнее их нет совсем. Если бы это не работало я бы искал что-то новое.
Насколько я знаю есть хрумеру все равно есть ли форма быстрого ответа или нет. Программа все равно шлет пост запрос с необходимыми параметрами так что все равно сообщение будет создано.

усиление флуд-контроля для новичков (отсчёт по стажу).
ограничение количества сообщения для новичков (отсчёт по стажу).

Но все равно боты регистрироваться будут. Лично меня напрягает сотня пользователей в день с именами gjeh78ebub и.т.п
 
F

frank

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

Lion18

Пользователь
гмм, по-моему лучше просто обновить ккапчу или адаптировать какую-нибудь другую. мне например нравится с рандомным вопросом, допустим на какой картинки изображён кот и т.п., на дев-форуме рег.рф была.
Поддержу. Может кто займется этим вопросом с капчей...
ZIM, Спасибо за код, пригодится.
 
Сверху