Всё для сайтов

Расскажем, как защитить сайт от спам-ботов, всего лишь изменив пару строк в вёрстке.

Полезные сведения

Пара простейших защит от ботов

Пара простейших защит от ботов

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

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

Развод на капчу

Идея этого способа состоит в том, что бот, найдя на странице форму ввода с признаками капчи (кто впервые слышит - так называют защитный код), пользуется этой формой, только когда определил тип капчи и имеет подходящую функцию "антикапча".

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

<form ...>
    ...
    <input name="captcha" style="display: none">
</form>

Кстати Такой подход бесполезен для ботов, которые постят любую найденную форму наудачу. Тогда рассмотрим ещё один способ.

Где же форма?

Тут идея заключена в укрывании тега формы внутри скриптовой конструкции, которая на самом деле выведет вместо себя требуемый тег, а сам тег не будет виден парсеру бота (парсером называют механизм построчного разбора содержимого страницы). Предположим есть форма:

<form ...>
    ...
    ...
</form>

И вот она же с укрытым тегом - открывающим форму и закрывающим:

<script>document.writeln('<' + 'form ...>')</script>
    ...
    ...
<script>document.writeln('<' + '/form>')</script>

Недостаток Форма перестаёт работать, если у посетителя отключен JavaScript в настройках браузера.

Форма в никуда

Предыдущий способ имеет ещё одну, более простую реализацию на единственном скрипте. Здесь мы путаем парсер бота, будто наша форма окончена сразу же и не содержит полей, а за ней будто бы следует полноценная форма (только отошлёт его куда подальше), в то время как в браузере настоящего пользователя фиктивный закрывающий и открывающий теги окажутся внутри комментария.

<form ...>
    <script>document.writeln('<' + '!--')</script>
        </form>
        <form action="who-is-who.html">
    -->
    ...
    ...
</form>

Недостаток Посетитель с отключенным JavaScript отправится по тому же адресу, куда посылали бота. Поэтому страницу "кто есть кто" (в примере мы обозначили её who-is-who.html) нужно делать корректной, чтобы не обругать живого человека. Кроме того, следует учесть, что поисковый робот парсит страницу подобно боту, и значит тоже увидит "две" формы, из которых узнает о наличии на вашем сайте чудесной страницы. Логично будет закрыть от индексации такой адрес.

Обсуждение
«John | 19 апр 00:25
WOW!!!!! Excellent idea with a bogus form. Thanks!
Ответить
«python32 | 20 апр 21:12
Кто знает как отнесутся Гугл и Яндекс к подобной whois who форме?
Ответить
«Максим | 21 апр 11:52
Так же как к формам корзины, обратной связи, логина и прочим. Чем собсно страница who-is-who.html будет отличаться от страниц других форм?
Ответить
«цуеыва | 29 авг 16:15
Попробовал способ с капчей. 5 когда 6 заказов рандомных сыпалось в день через часа так 3 каждый. С утра вставил в форму липрвую капчу на проверку. Походу работает, емейл молчит. Не знаю надолго.
Ответить
«offclick | 6 сен 14:27
Капча пустышка помогает не всегда(
а вот 2 и 3 методы всеж лучше.
Ответить
«homyak | 10 сен 11:05
Новые боты эмулируют js-машину. Способы 2,3 из статьи не помогут, тк бот видет страницу с учетом отработавшего js.
Ответить
«homyak | 10 сен 11:40
Кстаде фейковая капча не мешает сыпаться фейковым заказам. Бот умеет спрашивать непонятные понты у админу. Типо вот тут форма с инпутом =captcha, а картинки нет, что делать? Админ клац ему в сценарий, заполни чем хо. И ваша ложная капча пошла лесом.
Ответить
«Александр | 10 сен 12:03
Так установите reCaptcha гугла.
Ответить
«homyak | 10 сен 14:00
И что? Эти боты понимают html5, css3, js, от бравзера не отличимы и на борту еще 100500 примочек. Поведенческие модели серфинга, пул проксев, рекордер сценария, редактор, плеер, сетка приложений с индусами на подхвате. Админ обвел капчу в сценарии, снапшот с каждого респонса будет улетать индусу. У того приложение в трее булькнуло, он капчу на снапе прочел, тут же поле, код ввел, окно свернул. Бот коду подхватил, в капчу ввел.

Чем recaptcha поможет? Детектит все равно живой человек.
Ответить
«Костя | 11 сен 15:03
Обьясните мне смысл метания фейковых заявок. Менеджеры маленького магазина знают обычно своих клиентов чуть не в лицо. Фейк тут же удалят.
Ответить
«Антон | 14 сен 22:40
Это атака на бизнес процессы магазина. Вам если в день по 100 заказов левых падать начнет, потратите сколько то времени рабочего на чистку. За нервы вобще молчу. И так несколько дней представьте.
Ответить
«Игорь | 22 сен 15:07
Нифига ложная качпа не помогает. Также спам падает как раньше.
Ответить
«дартоловка | 27 июн 10:28
Action атрибут формы пишем неправильный. Специально чтобы отправить бота по ложному url. На клиенте js-ом исправляем атрибут формы как надо. Работает на 100%. Автоботы постят форму на несуществующи url, спам пропадает.
Ответить

Другие обсуждения »

Теги: антибот, antibot, защита от ботов

Хотите чтобы мы рассказали ещё о чём-то - предлагайте тему.

Предложить

Следите за нашими публикациями в социальных сетях и новостных каналах.