Pull to refresh

Comments 64

На любую популярную капчу и защиту (даже очень крутую) найдется своя отвертка
Любая нестандартная защита (даже будучи не очень сложной) сможет эффективно защищать свой сервис (меняясь время от времени)

У меня все :)
О случайном выборе типа защиты тоже думаю. Скажем, одним капчу показывать, другим — тест на сложение и т.п.
у меня была одна идея: рисовать простейшие буквы разноцветными div с наложением друг на друга через z-index…
но пока не попробовал не могу ручаться за эффективность или оценить идею
как она вам? хотя бы сам принцип разноцветных дивов наложенных друг на друга в таком порядке чтобы в итоге пользователю была видна определенная информация.
Мда, с таким подходом придется немало повозиться, чтобы изобразить, скажем, буквы «У» или «З».
этот процесс легко автоматизировать
я скорее любитель, но насколько знаю, спамеры не гнушаются снимать «скрин» капчи перед ее распознаванием, соответственно, я не понимаю смысл, гемороиться со слоями, так как спамер увидит то же что и пользователь… :(
это легко когда знаешь что скринить
можно постараться сделать так чтобы не было возможности точно определить где начинается капча, а где идут ложные дивы
возможно вы правы… :) я ж сказал, любитель я :)
понятие растяжимое, фишка в том, что у обычной капчи почти всегда есть вычисляемый размер, а у разметки его быть не может, поскольку неизвестно входит ли этот див в капчу или не входит. Фоном может служть как Body так и мелкий див, а может и див на пол страницы…

блин пора делать примеры :)
а вообще, неплохо бы напрячься всем хабра-сообществом да и выкатить антиспам-библиотеку от Хабра
я бы к примеру, мог бы взяться за портирование на jQuery, кто-нибудь prototype сделал или еще какие версии
был бы видимый толк от сообщества
Вот-вот :-)

Смущает лишь то, что может такая фигня случиться: бот рендерит страницу, делает скрин, а уже его распознает :)
это несколько затратнее, неизвестно где делать скрин, в каком месте
можно сделать дивы ловушки, ложные дивы
можно рендерить сумасшедшие буквы
все равно. мне кажется, это лучше чем готовое для анализа изображение

в любом случае, это была та самая идея, которую вы просили :)
Там, где форма будет располагаться :-)
UFO just landed and posted this here
при прямой атаке эффективность нулевая, имхо
UFO just landed and posted this here
в смысле, когда будут пытаться атаковать именно ваш ресурс
подберут шаблон вашей текстовой капчи, и будут легко решать ваши несложные уравнения
даже если вы сделаете 100 разных вопросов, все равно они все скорее всего будут распознаны
UFO just landed and posted this here
подставьте вместо «javascript» слово «спамбот» и убедитесь, что все бесполезно
UFO just landed and posted this here
вариант интересный
а что помешает спамботу общаться с сервером выдавая себя за клиентский скрипт?
UFO just landed and posted this here
UFO just landed and posted this here
Novikov, а вы знаете как работают спам-боты и прочие спамерские программулины? Чтобы успешно бороться со спамом надо знать как работает технология ;) Я вот все подумываю статью об этом написать да руки никак не доходят…
В области автоматического спама мои знания серьезно ограничены и устарели :-)
Ок. Тогда раз уж такой вопрос поднялся я постараюсь в течении пары дней как-то скомпоновать свои знания по этой теме и оформить в статью. Вдруг чем-то помогу :-)
А если проверять, к примеру, события типа onMouseOver? Редкий юзер не проведет мышкой над документом перед тем, как че-нить написать… Правда, остается вопрос насчет без-JSских пользователей, но все же
а что может помешать спамботу сказать серверу, что событие происходило?
Знать какое событие, знать где…
Можно в качестве капчи потребовать щелкнуть по какому-либо куску текста…
если клиентский код будет знать то и спамбот будет знать
Расставить несколько «ложных» областей :)
Блоки могут располагаться друг под другом — какой из них должен быть обработан (к вопросу о z-index)? и т.д.
поймите, клиентский код — это готовый спамбот, делать какие-то ухищрения с манипулированием DOM чаще всего не эффективно
спамбот все повторит
Повторит как? Ну не сможет клиент провести над определенным блоком мышью, а бот смог. Тут его и поймать. Заставить бота сделать лишнее, а не повторить — вот в чем цель.
бот просто не станет ничего проводить, прикинувшись клиентом без мыши :)
если серьезно, все равно наверняка можно будет проанализировать какие блоки смогут генерировать события, а какие — нет
Если спамбот научится полностью повторять/эмулировать действия юзера — он станет юзером.
В нашем случае — надо найти 10 отличий. Чем более разнообразными станут вариации (разные имена блоков, скриптов JS, классов CSS и т.д.), тем сложнее спам-машине все это переварить и распознать.
Это был мой 666-й комментарий o_0
мне кажется, что раз уж и распознавать картинки уже научились, то повторить банальные действия на стороне клиента для спам ботов это как два байта переслать — главное знать алгоритм проверки. поэтому к вам не прорвуться, пока алгоритм проверки человечности в вашем исполнении не будет реализован ботописцами.
Особенно если он на движке браузера сделан.
то, что события обрабатываются на клиенте, а не на сервере )
а спамбот по вашему не клиент?
клиент конечно, но серверу он ничего говорить о событиях не должен и будет.
Мне, кстати, нравятся варианты капчи, где не слово вводить надо, а выделить мышкой, скажем, всех лис на картинке :)
А уж как они понравятся детям :D
кстати, особо продвинутые могут и клавой выделять что-либо
бедные дети африки, они никогда не видели лис :)
зато как разнообразится жизнь у бедных детей Индии и Китая, разгадывающих капчи день и ночь :)
Повторить мышью траекторию движения объекта на флеш-ролике
(или переместить объект по маленькому лабиринту не касаясь его стенок)
GIF наверное лучше и проще
Ради комментария проходить целый квест?)
и так каждый раз :)))))
Еще пара идей. Сделать такую штуку, которая будет спрашивать, например, как зовут автора блога и подобные специфичные вопросы именно для данного блога задавать.

Еще идея — стандартный тест 1+2= поменять на «Сколько ног у двух трехногих собак?» :)
или «Сколько пальцев на 3 руках» или «Ваня купил три яблока, а одно съел, сколько осталось яблок?».

Поможет еще и от тупиц, да и убогие мудофилы, набивающие каменты через спам-биржи, тоже зависнут и ребутнутся :-)
А если «сколько пальцев на руке?» — и картинку из фильма «Брюс Всемогущий», где он с семью пальцами :)
И вообще — смогут ли боты подсчитать количество элементов на картинке?
очень проблематичны становятся капчи, где приходится использовать тот или иной язык, латиница есть на всех компах которые смогли набрать твой урл :), а вот знанием языка люди обладать не обязаны, то есть если это исключительно национальный рессурс, то решается много проблем, а вот…
Если постер из далекой Индии не сможет прочитать текст перед тем, как зафигарить очередную пару урл-камент, то это можно считать дополнительным механизмом защиты :-)
ну я и говорю для национального портала, это даже плюс :))))

преставил себе

«ищу индийцев знающих русский, для набора текста по центу за слово» :)
Задание всегда можно продублировать на English
Брюс Всемогущий тут не при чём.

У Марка Шагала есть такой автопортрет с семью пальцами на руке. Причём, когда его спросили, «почему именно семь», он не смог ответить ни-че-го :)

— С картинками проблема одна — общая. Их нужно готовить вручную, иначе — достаточно пересмотреть все картинки, сделать детектор «какая из», и отвечать на вопросы автоматически станет очень просто…
Динамически генерировать ID полей вряд ли получится, вордпресс к нему привязывается. Пример

<input type=«text» name=«author» id=«author» />

Как только вы поменяете айди, форма перестанет работать.

В то же время, если в wp-includes подправить пару строк, то можно перенастроить нужный айди.

Я далек от темы спама по блогам, но складывается ощущение, что практически все автоматические комменты — это просто прямые запросы. Я уже давно поменял у себя ID — на ботов жалоб нет вообще.

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

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

Если у вас есть блог, куда приходит много автоспама, то можно проверить мой метод. А то у меня проверять практически негде.
От прямого запроса можно защититься :)
>Применить защиту с javascript + cookies, подобно той, что в WP-Spamfree сделана.

Помогает, пока нет цели поломать данную защиту.

>Прятать форму со страницы, выводить ее через javascript.

Какая разница, как выводить форму? Спамеры даже не загружают формы часто ;). А если и загружают, то пропарсить форму, будь она хоть в html, хоть js — не проблема.

>Динамически генерировать ID полей, для каждой загрузки страниц свои

Ломается без проблем.

Хорошая защита — премодерация, все остальное ломается на ура, если есть потребность. Поэтому я и противник OpenID и им подобных — чем больше сайтов с однотипной формой авторизации, тем больше вероятность спама.
Sign up to leave a comment.

Articles