Метод ловушек для избежания капчи

Posted on December 24, 2009
Большинство автоматизированных рассылателей спама работают так:
  • Ищем в поисковике форму отправки комментария
  • Заполняем основные поля (Nick, Website, Comment)
  • Отправляем и злобно хохочем
На некоторых известных блоговых движках (например wordpress) в день можно получить до 500-600 комментариев спама, что очень не радует.
Обычно для того, что-бы избежать закидывания спамом ставят капчу, но при стоимости разгадывания 1000 капч в 1$ (да, есть специализированные сервисы) это становится неактуально, да еще и напрягает посетителей.
Гораздо выгоднее и интереснее использовать так называемые ловушки. Ловушки представляют из себя какие-то части страницы, которые обычный браузер выполнит или загрузит, а спамбот обойдет мимо. Для ловушки хорошо подходят:
  • Javascripts
  • css
  • iframe
  • элементы формы
  • собственно страница с постом

Javascript ловушки

Если посмотреть на вызов javascript файла, то можно увидеть, что зачастую он выглядит так:

<script type="text/javascript" src="/js/main.js?pack=0.0900618207722769"></script>
Что тут может послужить ловушкой? Во первых - сам файл. Он может отдаваться сервером, а при хорошем разбросе параметров мы можем точно знать 2 вещи:
  • К файлу обратились
  • Передан параметр (если хранить его в сессии, то можно узнать верен ли он)
Дополнительно можно внутри отданного файла сделать какие-либо манипуляции с формой, например добавить параметр. Оригинал статьи

CSS

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

Iframe

Тут можно полностью доверится своему воображению - подгружать JS, менять с помощью подгрузки какие-либо параметры, задавать Flash cookies (отслеживать уже после отправки комментария) и прочие вещи.

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