|
Отправлено: 18 января 2012 — 00:39
|
технарь
Профессионал
Сообщений: 1825
Регистрация: 12.2011
|
Минимальное время заполнения формы
Суть метода заключается в том, что сервер замечает время создания формы. Если пользователь заполнил форму меньше чем за определённое время, то он считается ботом. Время можно варьировать в зависимости от сложности формы.
Верно также, что если форма не была заполнена слишком долго, то что-то не так.
Скрытое поле
Этот метод может показаться странным, но он, похоже, работает. К форме добавляется скрытое поле (скрытое в смысле display:none). Если поле заполнено, то пользователь считается ботом.
Удивительно, но многие простенькие боты заполняют все неизвестные поля.
Обфускация или шифрование HTML
Исходный код страницы является, по сути, вызовом javascript функции вроде document.write( decode( encodedHTML ) ), где encodedHTML — это как-то зашифрованный HTML.
Методы шифрования могут варьироваться от простого эскейпирования значений буковок (буква превращается '%код' ) до некоторых алгоритмов шифрования (например, простенький XOR).
В интернете есть много готовых решений, например, вот тут.
Блокирование определённых user-agent
Некоторые боты используют весьма специфические заголовки user-agent. Можно блокировать запросы не содержащие user-agent вообще или содержащие заведомо плохой заголовок.
В интернете есть списки таких заголовков. Вот, например, от некого Нила Гантона.
«Ловушка» для ботов
Суть этого метода заключается в создании специального раздела сайта вроде "/bot/guestbook". Ссылка на этот раздел не видна для пользователя, однако если бот зайдёт в этот раздел и сделает там хоть что-нибудь, то его IP тут же блокируется.
Раздел должен содержать лакомые для бота слова вроде «email», «submit», «add comment» и тому подобные. Файл «robots.txt» предупреждает хороших ботов.
Хеширование формы (BarsMonster )
При сабмите формы на сервер вычисляется хеш полей формы и добавляется в одно из специальных скрытых полей. Сервер проверяет значение хеша.
Использование прозрачных кнопок (BarsMonster )
У формы есть несколько кнопок типа <input type="image". Лишь на одной из картинок написан текст, остальные — прозрачные. Для сабмита пользователь должен нажать на картинку с текстом.
Динамическое создание формы (maxshopen )
Сама форма полностью создаётся javascript-методом динамчески. Таким образом, форму может увидить лишь пользователь, у которого отработал соответствующий скрипт.
Использование сторонних сервисов (le0pard )
Можно туннелировать трафик через специальный сервис, предназначенный для анализа контента на спам. Примером такого сервиса может быть Akismet
Гибридный подход
По умолчанию форма защищена каким-либо javascript-методом (динамическое создание формы или шифрование данных) или методом из приведённых выше. Если форма была засабмичена некорректно, то возвращается ошибка и просьба заполнить не очень простую капчу.
«Горшочек с медом».
Смысл метода Honeypot прост, как и его реализация. Помимо настоящих полей ввода, делаются скрытые поля. Пользователь их не видит, следовательно, не может их заполнить. Если поле заполнено, комментарий не нужно добавлять. Почему пользователь не заполняет поле понятно, а почему спам-бот заполняет? В ловушке должна быть приманка. В качестве приманки выступает значение атрибута name.
code:<input type="input" name="email" value="" />
<input type="input" name="blablabla" value="" />
Бот, очевидно, умеет находить нужные поля и правильно их заполнять. Бот находит поле email, считает, что дело в шляпе, вбивает в него адрес (кстати, валидный). Заполняет тело комментария, отправляет форму. Обрабатывающий скрипт берет данные из поля blablabla. Это настоящие данные с которыми нужно работать. Скрипт также проверяет, есть ли что-то в поле email. Если есть, комментарий просто не будет добавлен в базу.
Несколько штрихов. Я не знаю, как работают боты. Но думаю, они не дураки. Если поле помечено, как hidden, бот может решить, что ловушка и искать другое поле. Поэтому я скрыл поле с помощью CSS, при этом не присваивал отдельный класс, а использовал селектор [name="email"]. Даже такого простого приема хватило, чтобы за сутки не было ни одного спам-комментария. |
|
|
УДАЛЁН |
Отправлено: 8 марта 2016 — 13:26
|
Гость
|
Привет технарь! Спасибо за ответ.
Извини уж за преамбулу и отступление от темы диалога.. знаешь меня в большинстве случаев просто удивляет почему профессионалы, специалисты такого класса как ты, останавливают свой
выбор на столь непопулярных "движках" ExBB ? Я такой же админ как и ты, но работаю на "движке" smf. Но! ) до профессионализма, мне скажем так.. как до Луны. Безусловно, против лома нет приема ) те же ботописатели тоже не сидят сложа руки.. и рано или поздно такое может случиться не только с ExBB, но и с тем же smf. Боле всего, меня привлекла кажущаяся простота концепции "горшка с медом". В свое время, мне также пришлось испытать это безумное удовольствие (нашествие ботов).. Мой методы борьбы с ними.. отличался от других, я не старался устанавливать различного рода капчи и им подобные вещи, а использовал текстовые вопросы постоянно меняя их. Метода проста, эффективна кол-во ботов резко уменьшилось. Но найдя инфу (благодаря твоему сайту) загорелся идеей "горшечка с медом". Ну вот так ).(Отредактировано автором: 8 марта 2016 — 13:27) |
|
|
|