Перейти к контенту

JS проверка регистрации ботов


Рекомендуемые сообщения

алгоритм рандомной установки обработчиков

вот это неплохо...

 

а такой вопрос, они не смогут написать эмуляцию браузера?

Ссылка на комментарий
Поделиться на других сайтах

  • Ответы 62
  • Создана
  • Последний ответ

Лучшие авторы в этой теме

Лучшие авторы в этой теме

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

а такой вопрос, они не смогут написать эмуляцию браузера?

Тогда придется писать эмуляцию шустрого админа.

То есть, не отрубать сообщения ботов, а лишь помечать к удалению при следующем запросе таблицы топиков. Бот получит ответ, что сообщение размещено, и ему никто не скажет, что сообщение помечено к удалению, а первый же живой пользователь, зайдя на форум, реализует запрос удаления помеченных сообщений, и даже их не увидит.

Ссылка на комментарий
Поделиться на других сайтах

  • 2 месяца спустя...

FatCat обрати внимание: http://forum.sysman.ru/index.php?showtopic...st&p=140033

этот мод не рабочий.

Ссылка на комментарий
Поделиться на других сайтах

  • 4 месяца спустя...
То, что во втором, помнится. Ещё, как уже писал, боты научились нужное значение подставлять, так что вместо тупо значения надо написать примерчик какой-нибудь простенький арифметический.
Ссылка на комментарий
Поделиться на других сайтах

  • 7 месяцев спустя...

слегка улучшенная версия (с уникальным ключом для каждой регистрации) состоит в:

jscripts/ipb_register.js - в начало

var changed=0;
function valid_bot(regid)
{
if(document.getElementById("check_bot") && (changed==0))
{
document.getElementById("check_bot").value = regid;
changed=1;
}
}

в skin_register - ShowForm на полях ввода например пароля

onclick="jаvаscript:valid_bot('{$data['regid']}');" onkeyup="jаvаscript:valid_bot('{$data['regid']}');" onchange="jаvаscript:valid_bot('{$data['regid']}');" onfocus="jаvаscript:valid_bot('{$data['regid']}');"

sources/action_public/register.php ищем указанные строки и делаем так, чтобы получилось как здесь

        //-----------------------------------------
        // Clean out anti-spam stuffy
        //-----------------------------------------
        $regid=0;
        if ($this->ipsclass->vars['bot_antispam'])
        {
            // Set a new ID for this reg request...
            
            $regid = md5( uniqid(microtime()) );

...///опущено много кода, далее искомая строка, искать по ShowForm

       $this->output .= $this->ipsclass->compiled_templates['skin_register']->ShowForm( array( 'TEXT' => $this->ipsclass->lang['std_text'], 'coppa_user' => $coppa, 'regid' => $regid), $final_errors );
        if ($this->ipsclass->vars['bot_antispam'])
        {
            if ( $this->ipsclass->input['regid'] == "" )
            {
                $form_errors['general'][] = $this->ipsclass->lang['err_reg_code'];
            }
            
            $this->ipsclass->DB->simple_construct( array( 'select' => '*',
                                                          'from'   => 'reg_antispam',
                                                          'where'  => "regid='".trim(addslashes($this->ipsclass->input['regid']))."'"
                                                 )      );
                                
            $this->ipsclass->DB->simple_exec();

...//опущена часть кода, дальнейшее добавляем после проверки капчи, искать по $sum_result

            if ( trim($this->ipsclass->input['check_bot'] ) != $row['regid'] )
            {
                $form_errors['general'][] = $this->ipsclass->lang['err_reg_bot'];
            }
        }
        else
        {
            if ( trim( intval($this->ipsclass->input['check_bot']) ) != 0 )
            {
                $form_errors['general'][] = $this->ipsclass->lang['err_reg_bot'];
            }
        }

защита идет параллельно с капчей, чтобы развязать придется добавлять больше кода

Ссылка на комментарий
Поделиться на других сайтах

  • 1 месяц спустя...

Вопрос по работе скрипта на 1.3

 

Установил скрипт на форум. Проверил с вкл выкл Javascript.

Все работает , как и обещалось. Проверку хитроумными ботами еще не проходил.

 

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

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

 

Так и должно быть?

 

Я к тому, ... зайдет чел в регистрацию, наберет существующий ник, и хрена он зарегистрируется пока не закроет браузер и не повторит все заново. Хорошо если сам догодается...

Ссылка на комментарий
Поделиться на других сайтах

Так и должно быть?

Нужно продублировать вызов функции проверки на все поля или подвесить на сабмит.

Ссылка на комментарий
Поделиться на других сайтах

Я уже больше года как поменял алгоритм проверки. Но выкладывать в открытый доступ не буду. А то вражины тут и прочитают, а потом будем удивляться, что пробивают защиту.
Ссылка на комментарий
Поделиться на других сайтах

  • 4 года спустя...

в skin_register - ShowForm на полях ввода например пароля



onclick="jаvаscript:valid_bot('{$data['regid']}');" onkeyup="jаvаscript:valid_bot('{$data['regid']}');" onchange="jаvаscript:valid_bot('{$data['regid']}');" onfocus="jаvаscript:valid_bot('{$data['regid']}');"

Все, вроде, получилось добавить кроме корректного отображения кода выше. 

 

Куда конкретно в этот кусок кода добавить код выше, если речь идет о например форме пароля:

<td width="1%" nowrap="nowrap">{ipb.lang['password']}  <span>(<a href="#" style="cursor: help; color: #555;" title="{ipb.lang['password_text']}">?</a>)</span></td>
								<td width="100%">{ipb.lang['password_confirm']}  <span>(<a href="#" style="cursor: help; color: #555;" title="{ipb.lang['password_confirm_text']}">?</a>)</span></td>
							</tr>
							<tr>
								<td><input type="password" size="25" maxlength="32" value="{ipb.input['PassWord']}" id='reg-password' name="PassWord" /></td>
								<td><input type="password" size="25" maxlength="32" value="{ipb.input['PassWord_Check']}"  id='reg-password-check' name="PassWord_Check" /></td>
							    <td width='12'>
							     <img id='img-password' src="{ipb.vars['img_url']}/spacer.gif" alt="" width='12' height='12' />
							    </td>
							</tr>
						</table>
Ссылка на комментарий
Поделиться на других сайтах

я подозреваю, что в том старом сообщении слово яваскрипт изменено

<input type="password" size="25" maxlength="32" value="{ipb.input['PassWord']}" id='reg-password' name="PassWord" onclick="valid_bot('{$data['regid']}');" onkeyup="valid_bot('{$data['regid']}');" onchange="valid_bot('{$data['regid']}');" onfocus="valid_bot('{$data['regid']}');"/>

может быть так

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

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

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Зарузка...

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.