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

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

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

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

Бот боту рознь и, разумеется, если сайту начнёт досаждать бот с продвинутой логикой работы или управляемый живым оператором, обойтись простыми средствами защиты скорее всего не получится. Тем не менее множество ботов имеют автоматическую основу, простую логику и останавливаются следующим образом. Вам лишь необходим доступ к 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 DigitalOcean Сан-Франциско США
WOW!!!!! Excellent idea with a bogus form. Thanks!
python32
Кто знает как отнесутся Гугл и Яндекс к подобной whois who форме?
Максим SirenaTravel-Net Москва
Так же как к формам корзины, обратной связи, логина и прочим. Чем собсно страница who-is-who.html будет отличаться от страниц других форм?
цуеыва Vimpelcom RU-TATint Казань
Попробовал способ с капчей. 5 когда 6 заказов рандомных сыпалось в день через часа так 3 каждый. С утра вставил в форму липрвую капчу на проверку. Походу работает, емейл молчит. Не знаю надолго.
offclick MTS-GPRS-3 Москва
Капча пустышка помогает не всегда(
а вот 2 и 3 методы всеж лучше.
homyak SkyNet Network Санкт-Петербург
Новые боты эмулируют js-машину. Способы 2,3 из статьи не помогут, тк бот видет страницу с учетом отработавшего js.
homyak SkyNet Network Санкт-Петербург
Кстаде фейковая капча не мешает сыпаться фейковым заказам. Бот умеет спрашивать непонятные понты у админу. Типо вот тут форма с инпутом =captcha, а картинки нет, что делать? Админ клац ему в сценарий, заполни чем хо. И ваша ложная капча пошла лесом.
Александр
Так установите reCaptcha гугла.
homyak SkyNet Network Санкт-Петербург
И что? Эти боты понимают html5, css3, js, от бравзера не отличимы и на борту еще 100500 примочек. Поведенческие модели серфинга, пул проксев, рекордер сценария, редактор, плеер, сетка приложений с индусами на подхвате. Админ обвел капчу в сценарии, снапшот с каждого респонса будет улетать индусу. У того приложение в трее булькнуло, он капчу на снапе прочел, тут же поле, код ввел, окно свернул. Бот коду подхватил, в капчу ввел.

Чем recaptcha поможет? Детектит все равно живой человек.
Костя RU-Altagen Москва
Обьясните мне смысл метания фейковых заявок. Менеджеры маленького магазина знают обычно своих клиентов чуть не в лицо. Фейк тут же удалят.
Антон
Это атака на бизнес процессы магазина. Вам если в день по 100 заказов левых падать начнет, потратите сколько то времени рабочего на чистку. За нервы вобще молчу. И так несколько дней представьте.
Игорь RosTelecom Nets Москва
Нифига ложная качпа не помогает. Также спам падает как раньше.
дартоловка
Action атрибут формы пишем неправильный. Специально чтобы отправить бота по ложному url. На клиенте js-ом исправляем атрибут формы как надо. Работает на 100%. Автоботы постят форму на несуществующи url, спам пропадает.
Николай BelTelecom Могилёв Беларусь
Можно не напрягать людей капчами, а поставить на форуму регистрации бесплатный скрипт антибота antibot.cloud - юзеру нужно будет подождать пару секунд. Защита от автоматического спама 99%.

Написать комментарийОтветить на выделенный комментарий

Начнём?

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

Допустимые теги

При написании комментария вы можете использовать некоторые из так называемых BB-кодов. Они обозначают подстановку определённого элемента на их место.

  • опционально парные:
    • [shot=image-url] ALT text [/shot]
    • [link=page-url] anchor text [/link]
  • всегда парные:
    • [quote] comment fragment [/quote]
    • [code] source code fragment [/code]
  • одинарные:
    • [youtube=video-url]
  • и "теговые" символы:
    • « и »

Обратите внимание

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