« Странные заходы из яхо | Самый интересный SEO-блог 2007 года »
На юмакс форуме спросили, как сделать форму без капчи, чтобы в неё не могли гадить спамилки. Вроде бы в принципе задача не очень решаемая, но немного зная как оные спамилки работают, можно дать некоторые советы, реализация которых максимально усложнит проспам.
1. Добавить пустое скрытое поле с названим, близким к обычным названиям полей форм, типа email, url, text и т.п. Эвристические спамилки будут пытаться это поле заполнить, так их легко отловить.
2. Дополнительное поле можно сделать в виде обычного элемента инпут, но скрыть его в невидимый див, тогда для спамилки оно будет как бы обычным полем и оно будет заполняться.
3. Добавить в форму много лишних полей, невидимых пользователю. Некоторые спамилки пытаются вычислить, какую форму из присутсвующих на странице нужно заполнять, если полей мало – то это скорей всего какая-то поисковая форма, если полей слишком много, то это может быть форма какого-то профайла.
4. Жабаскриптом по мышиному событию заполнять какое-то поле хешем от времени (в часах/днях) и ип адреса. Тут получается сразу много видов защиты: во-первых спамилка не двигает мышью, то есть имеется большая вероятность, что хеш вообще не будет вычислен и заполнен. Во-вторых, сканер форм может ходить не с того адреса, с которого будет идти сабмит, то есть даже вычисленный и заполненный хэш будет неправильный, для другого ип. В-третьих, хеш потеряет актуальность через пару часов, то есть если даже спамер пробъёт форму вручную, то он не сможет сохранить её в базу для последующего проспама автоматом. В-четвертых, никто не будет морочиться и писать вычислитель хэша для одного сайта, если это не что-то вроде дигга.
5. Готовые решения: скрипт Bad Behavior, который проверяет запрос на наличие особенностей присущих указанному в нём юзерагенту. Если запрос сформирован небрежно, то он не пройдёт. Недостаток состоит в том, что сам этот скрипт не свободен от глюков на 100%, например он мне почему-то не давал зайти в админку Вордпресса, при переходе из ссылки в письме из Outlook Express. Акисмет – теоретически его можно попробовать отломать от вордпресса и прицепить куда-то ещё. Плохо только, что в нём процент ложных срабатываний намного выше, чем хотелось бы. Например, когда я только завёл этот блог, Димок сделал доброе дело – по моей просьбе дал мне список полезных плагинов для блога. Со ссылками, больше 3х штук.
С тех пор я его комменты должен из спама выковыривать.
6. Спецфича для блогов – проверять, является ли то что указывают в качестве урла блогом, например по присутствию на странице ссылки на фидбернер. И давать постить только если у фида скажем больше 30 подписчиков. А то мне иногда пишут какой-нибудь коммент, который вроде осмыслен и жалко его стирать, но на другом конце оказывается какой-нибудь сайт с вирусом или с порнухой/покемонами.
Если реализовать хотя бы часть из этого, то пока не появится новое поколение спамилок – капчу можно не использовать. Кстати, про капчи – у меня давно есть идея-фикс: сделать капчу с задачами из задачника Сканави.
Выбрать простенькие задачи, с однозначным цифровым ответом. Я даже сам задачник скачал, но дальше дело пока не зашло. Правда непонятно, захотят ли люди способные эти задачи решить что-то коммментировать.
Как вам такая капча?

20 Responses
February 19th, 2008 at 01:48:27
// php gravatar() ?>1Эх… Когда писал спамилку – встретил такую форму: у неё есть поля url, email, name, которые css’ом скрыты, а рядом вперемешку лежат поля с непонятными названиями, нужные. Названия рандомные, видимо хранятся в сесии. Спамить НЕРЕАЛЬНО
Увеличь капчу. Не видно – ж ничего
February 19th, 2008 at 08:38:42
// php gravatar() ?>2Со связкой js можно дофига чего придумать. Например, вообще скрыть формы. Вот я формы шифрую кодом цезаря или задом-наперед записываю. Но тут могут быть проблемы с юникодом.
Насчет проспама говносайтов намаными каментами: ссылку стирать, камент оставлять.
February 19th, 2008 at 09:43:14
// php gravatar() ?>3п.4 хорош… Тут многое можно придумать. Не только мыш, но и таймеры задействовать – если “пользователь” потратил меньше 5 секунд на чтение страницы то врядли это человек.
можно еще саму форму добавления комментария формировать яваскриптом динамически. Причем названия полей сделать не фиксированными, а тоже формировать по определенному алгоритму.
Сделать модуль комментирования независмым от остального кода, раелизовать несколько модулей реализующих разные алгоритмы и случайным образом выбирать тот который подсовывается пользователю. Внешне для человека они будут выглядеть одинаково, а логика работы будет совершенно разной
February 19th, 2008 at 10:12:07
// php gravatar() ?>4я думаю на юмаксе речь ишла именно про большие проекты, а не про блоги и т.п. мелочи. А если проект большой (Digg, Metacafe и т.п.), то тут зачастую виден факт написания специализированной спамилки. И не важно каким образом будут заполняться поля – все равно посмотрев и проанализировав то, что передает браузер, можно проэмулировать тоже самое в спамилке.
February 19th, 2008 at 11:49:16
// php gravatar() ?>5А зачем сам капчу ставишь?
Еще в копилку – можно подкрутить движок блога, чтобы после POST запроса от комментатора выплёвывать, например, 500 заголовок, типа ошибка. Пусть спаммеры вычистят сцайт из базы
February 19th, 2008 at 12:18:21
// php gravatar() ?>6[...] статья на веблуне – влиющие на вес ссылки факторы, как сделать супер капчу рассказывает в блоге Алекс Федоров, пользователи ЖЖ [...]
February 19th, 2008 at 13:04:28
// php gravatar() ?>7выдавать ошибку комментатору глупо – людям неудобно будет, а спамилка будет отмечать что спам не прошел. Наивно думать что вас просто выкинут из базы, скорее отложат на потом.
С большими проектами думаю сработает предложенный мной выше подход с набором внешне одинаковых модулей комментирования, которые подсовываются посетителю случайным образом.
Спамилка должна будет все их распознавать и для каждого модуля иметь свой подход.
February 19th, 2008 at 15:04:23
// php gravatar() ?>8Alex, а ты видел когда-нибудь “кастомную” 404 страницу? 500 – это только http заголовок, от которого неудобно стать не может.
February 19th, 2008 at 15:12:41
// php gravatar() ?>9Мне тоже кажется, что 500-й код неправильно выдавать, если пост прошёл как положено. Смысл предложений в том, чтобы спамилка реально не могла пробить капчу и те пункты что я написал этому способствуют.
February 20th, 2008 at 10:18:58
// php gravatar() ?>10[...] alexf рассказывает о непробиваемой капчае [...]
February 20th, 2008 at 11:17:38
// php gravatar() ?>11euhenio, многие спамилки, после поста потом проверяют появился комент или нет, а на то какой заголовок вернулся просто не обратят внимания
February 20th, 2008 at 21:14:48
// php gravatar() ?>12Противодействовать однозначно надо выдачей сложной формы, а не обманными кодами. Обманные коды проще всего автоматом обойти (тупо игнорить
)
February 22nd, 2008 at 00:57:18
// php gravatar() ?>13[...] В общем, если контора подобного масштаба выкатывает такое странное решение, то первая мысль приходящая в голову – что у mail.ru какие-то проблемы, по крайней мере в том, что касается разработки. Прочитали бы хотя бы мой пост про капчи. [...]
February 25th, 2008 at 09:54:07
// php gravatar() ?>14не поленился, посчитал капчу. Ответ: 2.
Так что можно спамить смело
February 25th, 2008 at 23:14:34
// php gravatar() ?>15hckd, ответ неправильный.
Номер задачи из Сканави можно посмотреть по имени файла.
February 26th, 2008 at 16:56:30
// php gravatar() ?>16Значит забыл алгебру, сколько будет 4 в степени -1/2 ?
February 26th, 2008 at 23:49:29
// php gravatar() ?>17Ответ есть в задачнике.
March 12th, 2008 at 15:43:17
// php gravatar() ?>18[...] как работает или может работать эвристика для поиска пригодных для сабмита форм. Сначала [...]
March 16th, 2008 at 21:41:21
// php gravatar() ?>19Хорошая идея. Но непробиваемых навека не бывает.
August 15th, 2008 at 17:05:52
// php gravatar() ?>20хорошая статья) мне помогла) комплексная защита – лучший вариант) странно что у Вас капча стоит.)))
RSS feed for comments on this post · TrackBack URI
Написать комментарий
Про что писал
Календарь
Куйворды
Архив
Подписка на блог
Статистика подписки
Страницы
Комментарии
Последние посты
Blogroll
Счётчики
Свежие записи
Последние комментарии
Интересное на блоге
Самое комментируемое
SEO блог где палят темы is proudly powered by WordPress - BloggingPro theme modified by alexf