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

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']}');"/>

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

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

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

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

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

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

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

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

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

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

Зарузка...

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

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

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