Пользователь
0,0
рейтинг
7 сентября 2012 в 22:34

Разработка → Как обойтись без капчи?

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



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

Почему спамят?


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

Телефон содержит больше 3 цифр


Если в форме есть поле телефон и оно обязательное, то простая проверка: «число цифр в телефоне больше 4» сократит спам на несколько порядков. Даже если имя поля phone. Необходимости у дорвейщиков спамить формы обратной связи нет, поэтому, их спамилки редко различают это поле, а просто его заполняют всякой чепухой. Сама по себе эта проверка сократит число спама до 2-3 сообщений в месяц. Изменение имени поля еще больше сократит спам, однако, оно отключит функцию автодополнения у браузера.

В большинстве случаев для формы обратной связи достаточно этого метода.

Невидимое поле


Если мы добавим обычное поле ввода и скроем его через CSS, то пользователи его не будут заполнять (поскольку его не видят), а вот спамилка обязательно заполнит это поле.

Проверка кукиес


Многие спамерские роботы не поддерживают кукиес и можно просто сохранять при загрузке какой-то кук и проверить наличие куков, после отправки формы. Однако, у части пользователей могут быть отключены куки. При их отсутствии нужно запрашивать пароль отдельно после отправки формы.
С другой стороны, часть спамилок поддерживают куки. Но не обязательно передавать куки на странице с формой, можно загрузить невидимый для пользователя IFrame и в нем передать куку. Еще меньше спамилок загружают фреймы. Такой метод реализован на wordstat.yandex.ru — если вы отключите куки он будет у вас спрашивать капчу.
Можно попробовать загружать куки через картинку, даже если спамерка использует браузер как движок, то картинки она в большинстве случаев не загружает. Однако, меня смущает то, что Яндекс это дело организовал через IFrame. Правда, дело может быть в том, что когда писался Wordstat многие пользователи из-за медленного канала отключали картинки.

Проверка JS


Большинство спамилок не исполняют JS, особенно из внешних файлов. Можно сделать невидимое поле и в него добавлять какой-то код через JS из внешнего файла. Если у пользователя JS отключен — ему придется вводить капчу.
@Hkey
карма
45,0
рейтинг 0,0
Реклама помогает поддерживать и развивать наши сервисы

Подробнее
Спецпроект

Самое читаемое Разработка

Комментарии (187)

  • +8
    Никогда сильно не задумывался над этим, а ведь действительно много действенных способов которые позволяют избежать капчи. Спасибо за ценные мысли.
    • +5
      Капча вообще — кака. Я до сих пор не могу понять, зачем при входе на Хабр нужно вводить эту капчу? Она же проста настолько, что даже FineReader с ней справится.
      • +113
        Файнридер? Что, реально? Я бывает не с первого раза понимаю что там написано.
        • +12
          Что, тем не менее, не объясняет, зачем нужна капча. При регистрации — понятно. Но при каждом входе — это паранойя.
          • 0
            Раньше не было. Не просто так же ввели.
            • +7
              Нужна, чтобы Брутфорсом не подобрали пароль. Однако, можно обойтись другим способом — не логиниться несколько секунд после последнего неудачного ввода пароля.
              • +5
                Дело в том, что перебор идет не для одного аккаунта, а для всех сразу той же самой комбинацией. Поэтому каптчу оставили и для первой попытки ввода. По этим причинам каптча на логин стоит и на дёрти, и на лепре.
                • +2
                  Можно делать задержку между запросами не только для уникального логина, но и для уникального IP. Капча на входе это бред вообще.
                  • 0
                    Tor
                    • 0
                      Хорошо, Тор и всякие платные сервисы, предоставляющие прокси-листы. Сколько за день можно заюзать IP таким образом? Пусть 100к (что фантастика, если у атакующего нету милионного ботнета).

                      При задержке между запросами в 3 секунды имеем 2.88млрд. запросов в сутки. Это по IP.

                      Сколько юзеров на Хабре не нашел, но на лепре на днях зарегался 57к-шный. То есть около 50.5к запросов на нос в сутки. Естественно, qwerty полетят, но можно еще запрещать логин в любой аккаунт на сутки для IP, которые сделали 50+ неудачных попыток.

                      Ну и, естественно, банить сильно активные C-подсети.
                      • +2
                        Все правильно, но каптча в данном случае действительно эффективнее. На хабре разработчики где-то писали, что ввели такие меры именно из-за участившихся взломов.
                        • 0
                          В качестве срочной меры капча рулит — не спорю.
                          • 0
                            Так ведь сами знаете, нет ничего более постоянного, чем что-то временное.
                            • +9
                              А почему бы капчу не ввести только для ненадежных паролей. Можно галочку в настройки добавить «Подтверждаю что мой пароль надежный и если его подберут я сам себе дурак» и после этого капча вырубается.
                              • 0
                                Да?
                              • +3
                                Думаю руководству сервиса совершенно насрать на то, что отдельных неосторожных представителей взломают. Хуже то, что со взломанных аков начнут всем спамить.
                              • 0
                                А откуда сайт узнает, что форму входа открыл пользователь, у которого таким образом отключена captcha?
                                Здесь могут помочь только cookies, но они должны сохраняться на компьютере заранее (во время предыдущего логина). И дальше два варианта — либо это домашний компьютер, где из аккаунта можно вообще не выходить месяцами без вреда для безопасности, либо это публичный компьютер, где хранение таких cookies вообще не целесообразно.

                                В общем говоря, Ваш вариант неактуален.
                                • 0
                                  Ошибся веткой :/
                              • 0
                                А как сайт узнает, что вы это вы, до того, как пароль введен?
                                Хотя, видимо можно убирать капчу, если при вводе пароля превышена требуемая сложность пароля.
                              • 0
                                Вообще-то до того, как пользователь войдет, система не знает, какой это аккаунт, с галочкой или без. Или вы предлагаете сразу после ввода логина показывать надпись «Этот пользователь думает, что у него сложный пароль, который хрен подберешь»?..
                                • 0
                                  Ну, можно спрашивать после ввода пароля.
                                  А если пароль «сложный», и он был введен правильно — не спрашивать.
                                  • 0
                                    Лучше, мне кажется, в таком случае не обращать внимания на ошибки капчи.
                            • +9
                              Фейсбучные акки брутфорсят 24/7/365 уверен, но они как-то справляются без капчи на каждом экшене.
                              • 0
                                А вы попробуйте. Там после нескольких неправильных попыток будет аналог капчи в виде доп. вопросов
                                • +6
                                  Если б на хабре капча тоже появлялась только после нескольких неправильных попыток, никто б не возмущался.
                      • 0
                        с 50+? на сутки?

                        Есть же очень эффективный таймаут на 15 минут после 3-5 попыток логина…
                    • 0
                      Эмм… А скорость перебора тогда какая будет?
              • 0
                Речь идет о подборе пароля роботом, а не человеком. Определить, что пароль перебирается из одного и того же места нереально, поэтому и капча.
            • +1
              Насколько я помню, она сначала была, потом убрали, потом снова ввели. Причем это единственный сайт, где есть капча на каждый вход. Так что смысл мне непонятен. Чем хабр так уж отличается от тысяч других форумов?
              • 0
                Не единственный, многие инвайтные сайты такое делают.
            • 0
              Я помню раньше было «вводим логин-пароль, если пароль неверный — следующие попытки с капчей». Почему эту удобную функцию убрали (затем вернули, а затем снова убрали) — непонятно.
          • 0
            Ну теперь можно заходить быстро через кнопочку какой-нибудь социалочки.
            • 0
              И правда, можно. Спасибо.
          • +2
            Еще и входить надо раз в две недели, и это на каждом устройстве, которых не одно и даже не два.
          • 0
            Капчу даже при первой попытке входа ввели после того, как ко многим аккаунтам (с определёнными параметрами) начался активный брутфорс (по паролю) через вагон проксиков. Для каждого аккаунта пишется количество неудачных логинов — у некоторых особо интересных аккаунтов это значение было 2-3 тысячи!
            Было проще ввести капчу, чем придумывать велосипед, таймауты и прочую фигню. Но не видим поводов расстраиваться, тем более что сейчас логиниться можно через популярные социальные сети.
            • –1
              а вот если бы вы не выпендривались, считая себя самыми умными и свои решения самыми оптимальными, а смиренно подняли вопрос в своём же /qa/ как решить эту проблему без издевательств над пользователями, то вам бы подсказали как: #comment_5120574

              но нет, гипертрофированное эго, убаюкивающее сознание сказкой «я же профессионал», не позволяет попросить совета у сообщества, ведь «там сидят одни дилетанты, далёкие от наших высоконагруженных проблем»

              кстати, не пора бы меня снова забанить? а то я тут опять унижаю вас на вашем собственном сайте и пишу не по понятиям великого и могучего…
        • +4
          Бывают капчи, когда боту пройти легче, чем человеку
          • +3
            дык, скоро будет «защита от человеков, если вы не человек, введите капчу» :)
        • +2
          У меня часто 2 попытки уходит на ввод капчи хабра, бывает и 3.
          Хотя такое ощущение, что они иногда повторяются из-за (предположительно) генерации парами символов из заданного диапазона.
          Но это всего лишь субъективное ощущение.
          • +1
            Перед входом просто несколько раз нажимаю «обновить капчу» — пока нечто удобоваримое не встречу — логин всегда с первого раза :)
            • 0
              Тоже вариант кстати =)
      • 0
        Если входить через соц.сеть то капчу вводить не надо.
      • 0
        А я вот редко когда с первого раза…
      • +16
      • 0
        На самом деле, капча на хабре — одна из моих любимых, уж если они зло, то тут самое безобидное
  • 0
    А еще хорошо, если это свой собственный модуль со своим набором скрытых полей. Написать бота, который будет слать комментарии в drupal или wordpress с типовыми модулями можно. Писать бота под конкретный сайт как правило экономически не оправданно.
    • 0
      Для коробочных решений можно создать генерацию правдоподобного имени у скрытого поля (просто буквы) и генерацию случайного кода CSS — 7 «морозных» свойств типа длина и шрифт и display:none. Это можно обойти, но экономически нецелеособразно для движка с несколькими тысяч сайтов.
    • 0
      Писать бота под конкретный сайт как правило экономически не оправданно.

      Если спамеру нужно нацелиться именно на конкретный (и в особенности посещаемый) сайт, то больших трудозатрат это не добавит.
      • +2
        Да, но в 90% случаях мы пишем/разрабатываем и дизайним не Яндекс или Вконтакте. Мы в 99% случаев работаем с небольшими и средними конторами, веб-магазинами, на которых капчу можно заменить.
    • 0
      Более того, я так понимаю эти боты ищут сами сайты на таких движках, у моего знакомого посещаемость нулевая на джумле, куча спама, у меня самописный 1С пастебин для личных целей, но в открытом доступе, ни одной спам записи
  • +32
    Эту статью, да админам на хабр. Который почему-то без суда и следствия изначально считает меня роботом и я должен тут капчи разагадывать в свою защиту. Плохо, конечно, не в том, что капча есть, а в том, что она предлагается в обязательном порядке и сразу при попытке входа. Гораздо лучше, если капча будет требоваться после первого или второго неправильно введенного пароля.
    • +4
      Я думаю у каптчи на хабре основная функция — не дать возможности перебора паролей и отогнать у потенциальных злоумышленников даже мысли об этом. Если выполнить ваше предложение, о том, чтобы показывать каптчу при втором неправильно введенном пароле, то велика вероятность, что для вас визуально ничего не изменится — вы каждый раз будете видеть каптчу, потому что перед вами два раза разгадать ваш пароль попробует бот (который будет обходить все логины хабра с некоторым интервалом) :)
      Дальше вы предложите блокировать ботов по IP-адресу? Полноте, в век безлимитных тарифов и халявных вай-фаев это может усугубить.
      • +1
        Ну да, попытка оправдания засчитана.
        Все ботнеты мира направлены на брутфорс паролей на хабре! Да им все равно, есть капча на первой попытке или нет. Если есть цель подбора паролей, то капчу можно и расшифровать ботнетом, в этом случае не так важно, есть ограничение или нет. Если подбирают пароли фор фан, то это быстро наскучит. При скорости один пароль неделю, это не лучший способ тратить ресурсы.
        Но сейчас они ввели авторизацию по социальным сетям, это немного упрощает дело.
      • +4
        Но согласитесь, почему я должен мучаться и страдать при входе на хабр, на IT ресурс!!! только из-за того, что какой-то «Вася» поставил легкий пароль на свой аккаунт? Это его проблема, а не моя. Мой пароль на 18 знаков пусть брутят сколько хотят, но каптчу мне уберите.
        • 0
          Соглашусь. Очень часто ресурсы перекладывают свои проблемы на плечи пользователей. Где они должны из кожи вон вылезать, но что бы соблюсти все правила входа. Начиная от капч, заканчивая блокировкой вставки буфера обмена или ещё какой ерундой.
          • +2
            Этим, кстати, PayPal меня недавно убил. Они при регистрации или смене пароля теперь требуют набирать его вручную и не дают скопировать. Идиотство! Я сгенерил пароль, записал его в програмку хранения паролей и вставил в форму регистрации, но нет! Теперь я должен выдумывать какую-то мутотень, при вводе её запоминать, потом записывать в программу для хранения паролей, потом регаться и сразу выходить из аккаунта и заново логиниться, чтобы проверить, правильно ли я перенес в программу пароль при регистрации.

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

            Очень сильно огорчает, когда я в своём проекте упрощаю форму регистрации и делаю её с минимальным колличество полей, но продумываю, как защитить этих пользователей от брутфорса, покупаю и ставлю скрипты для детекта Open Proxy и Hosting Netblocks адресов, а в это время пытаясь купить нужный шаблон для сайта или класс для работы с API PayPal мне приходится пройти через огонь, воду и медные трубы.

            А ведь кто захочет залезть куда не надо или навредить — тот всегда найдет как это сделать, а так только страдают нормальные пользователи.
            • 0
              С пейпалом отлично работает lastpass
            • 0
              Аналогичная ситуация со Сбером. LastPass не принимает, требует ручного ввода. В итоге приходится копировать в блокнот и оттуда вставлять в форму.
      • +2
        А почему нельзя выдавать успешно залогиненному длинную случайную куку на год, и после этого проверять если она есть и валидна — то давать 1-2 попытки войти без капчи?

        Тогда получится, что боты будут получать капчу всегда, пользователи при первом входе только первый раз залогиниваясь
    • 0
      Чем вам капча на Хабре помешала? У меня браузер спрашивает её наверно реже чем раз в месяц. Не сильно и напряжно, да и разгадывается почти всегда проще, чем reCaptcha
      • 0
        Странно. У меня капча появляется всегда при запросе пароля. Захожу с разных устройств, бывает что авторизация слетает почему-то.
        Я бы не сказал, что капча легкая. Для продвинутого ИТ ресурса могли бы что-нибудь и интересное придумать.
        • +8
          Не думаю, что вопросы наподобие «В джаваскрипте {}+[] = ?» обрадовали бы аудиторию :-)
          • +1
            Ну а что, неплохая идея. Пользователь выбирает направление в котором он работает и ему задавали бы вопрос по специфике :)
  • +2
    у меня wordpress в форме добавления комментария есть hidden поле, значение которого меняется через javascript, а на стороне обработчика формы проверяется значение этого поля. спама и капчи нету как таковых.
    • +2
      Спама нету в основном из-за аскимета. И из-за того, что по дефолту у ссылок из комментов нофоллоу прописывается (т.е. они бесполезны для SEO) и защиту вордпресс нет смысла обходить для спамеров.
      • 0
        аскимет выключен. да и не уверен что боты знают включен но фоллоу или нет. факт в том что если снять эту защиту, спам валит быстро.
        • +1
          Вы меня не так поняли. Существование какой-то защиты + нофоллоу дает такой плюс. Поскольку, если бы не было нофоллоу, защиту бы обошли. На вп блогов много и если бы они довали рабочие ссылки, то не грех и пару дней потратить, чтобы обойти защиту.
    • 0
      в форме добавления комментария есть hidden поле, значение которого меняется через javascript

      А что делать тем пользователям, если по каким-то причинам JavaScript у них отключён? У вас хотя бы есть где-то упоминание, что для сабмита формы он обязателен?
      • 0
        да, скрипт выводит сообщение о необходимости включенного javascript.
      • 0
        Перед выводом кода страницы
        <code>if(isset($_POST['was_form_post']))//Была отправлена форма
        {
             if(!CheckJS())//Не прошла проверка на JS
             {
                 ECHO "Код формы только с капчей. Ранее отправленные данные пишутся в хайден поля"; 
                 EXIT;
              }
            //Обрабатываем форму
        }</code>
      • –3
        Ну вот честно, я еще могу понять людей, которые картинки отключают — платный трафик и всё такое. Но если кто-то специально отключил себе javascript — почему я как разработчик должен о нём думать? Таких умников по статистике порядка 0.3% (и я думаю подавляющее большинство из них — частные боты, которые не пингуют robots.txt). Время программистов стоит намного дороже, чем потенциальный доход от таких альтернативно-одаренных любителей отключать javascript.
        • +3
          А разработчик на то и разработчик, что бы думать обо всем, а об удобстве пользователей в первую очередь. А тут делов то, показывать капчу всем, у кого отключен JS.
  • 0
    В некоторых случаях еще можно проверять наличие включеного JavaScript. Есть например мод для пхпбб Антибот 100500 который довольно годно отсеивает большинство спама, в том числе и хрумер.
    • +1
      упс, не увидел в конце статьи
  • +3
    > Если в форме есть поле телефон и оно обязательное

    Боюсь это не лучше капчи.
    • 0
      Во многих случаях в форме обратной связи поле телефон обязательное. Наличие в нем 4 цифр — это просто проверка на корректность ввода.
      P.S. По моему опыту лучше всего работает такая форма Ваше имя, Ваш телефон и поле для ввода сообщений, изначально «Здравствуйте, меня заинтересовали ваши услуги. Свяжитесь со мной по телефону.» Если телефон заменить на мыло в большинстве случаев число лидов уменьшается.
  • –1
    Про невидимое поле спрятанное через CSS классно придумано.
    Автор, спасибо, огромное.
    • +6
      Так это давно же ещё придумано. Например можно сайт защищать от телепорта ещё сделав невидимую ссылку на страничку, на которую обычные пользователи не перейдут. Соответственно при запросе этой странички сразу банить. Ну и не забыть указать, чтобы поисковые роботы туда тоже не ходили)
      • 0
        Ну вот а я не знал. Век живи и век учись. Спасибо, и за совет про «тупички» (подходящие название мне кажется для такой штуки… тупиковая страница ведь получается. Надо авторские права оформить, пока Михалков налог не наложил...)
      • 0
        Если в robots.txt написано, что в /folder ходить нельзя, это еще не значит, что роботы туда не будут ходить. Это скорее указание, что этот каталог в поисковой выдаче показывать не стоит. И то порой вылазят страницы.
    • –2
      > Однако, у части пользователей могут быть отключены куки.
      КАК? В FF я не нашел такой опции вообще. В настройки никто уже давно не лезет.
      • 0
        Ну на всякий случай можно даь возможность пользователю реабилитироваться введя капчу, если после отправки формы выясниться что куков у него нет.
      • +2
        Настройки/Приватность:
        В выпадающем списке выбрать использование своих настроек для истории, снять соответствующий чекбокс.
        Ну, или проще Web Developer Toolbar, если установлен.
      • 0
        Не надо по себе судить.
        Зависит от того, какой сайт делаем. Если это интернет-магазин, там важен каждый покупатель — даже бухгалтер сидящий за 14" монитором и использующий IE6 с отключёнными куками и JS.
        • +1
          Не каждая контора согласится колдить под ie6 без кук и js. Не каждый клиент это позволит себе.
          • +2
            Не у каждого интернет-магазина прибыль от таких покупателей превысит стоимость разработки под них же.
    • 0
      Во-первых, придумано давно, а во-вторых, это работает только если не придёт человек делать специально для вашего сайта спамилку.
      Тогда поможет только капча, к сожалению.
  • 0
    А я в форме регистрации называю поле для ввода электронной почты как ZipCode. Соответственно, в форме содержится и поле у которого name=«email», оно по-умолчанию скрыто (display:none). И если в поле Email было что-то введено, то я такую форму не принимаю. (естественно, при этом надо добавить autocomplete=«off» атрибут). А в ZipCode спамеры обычно пишут только цифры. Поэтому я еще заодно проверяю на сервере с помощью регулярного выражения, чтобы был введен настоящий адрес почты.
    • +2
      Это плохое решение. Поскольку мыло длинное, обычно. А автокомплит браузера не работает в вашем варианте. В итоге большинство времени юзер будет тратить на ввод мыла и во многих случаях его введет с ошибкой.
      • +1
        Практика показывает, что никто не вводит с ошибкой. Юзеры уже научились вводить свое мыло правильно. Все работает прекрасно.
        • 0
          У меня мыло на гмейл. a.v.belousoff()gmail.com. в нем 25 символов. При вероятности ошибки в воде символа в пол процента. Мы получаем больше 10% ошибок.

          Я свое мыло ввожу так: открываю гугл, выделяю мыло и копирую. Вместо того, чтобы просто кликнуть по текстовому полю.
          • 0
            У меня в PuntoSwitcher стоит автозамена _em на мою почту. Гораздо удобнее и исключает ошибку.
  • +1
    Имхо, для небольшого сайта лучше всех этих способов обычное дополнительное поле с рандомными вопрос-ответ, либо все же поставить капчу, но нестандартную интерактивную, где мышкой что-то двигать — так хоть удобнее для пользователя.

    Сам столкнулся со спамом на своем маленьком форуме, да и спам иногда не поддающийся никакой логике попадался (без всяких ссылок, пара несвязных слов в посте, в профиле пусто). Ставил на регистрацию по две капчи (recaptcha хуже всех остальных спасает), добавлял скрытое поле js, куки, даже совмещал это все. Но судя по тому, что спамеры продолжали регаться (хотя сильно реже и только буржуйские), существуют боты полностью эмулирующие браузер.
    • +1
      Тут не браузер надо эмулировать, а живого человека.
    • +1
      Логика в чем спамят они через ссылку из профиля, а сообщение оставляют чтобы профиль проиндексировался.

      «существуют боты полностью эмулирующие браузер» Есть боты движок которых MS Intenet Exploer как ком-объект. Однако картинки в них отключены в большинстве случаев. Можно куку через картинку попробовать. Однако, я не ручаюсь что все браузеры безглючно работают.
    • +1
      Подтверждаю. Бота (точнее, целый ботнет, управляемый с сервера) на мозилловском движке я сам делал. От него только капча спасёт.
      • –2
        В том, что Вы делали, нет ничего крутого. И вообще, зачем хвастаться своими преступлениями?
        • +1
          А я и не претендую на крутость. Просто сообщаю, что боты, эмулирующие браузер целиком — определённо существуют.
          К тому же, никаких преступлений я не совершал. Ботнет функционирует на добровольной основе, его участники сами получают от него выгоду.
          • 0
            > целый ботнет, управляемый с сервера [...] на мозилловском движке [...] От него только капча спасёт
            Сильно похоже на ботнет для рассылки спама. Возможно, я неправильно понял Ваш комментарий, и это на самом деле какая-то вещь, которой нужна эмуляция браузера, которая должна контроллироваться третьей стороной с сервера, и от которой только капча может спасти. Если это что-то полезное, то почему капча должна спасать от него?
            • +1
              Тот ботнет, для которого разработан браузер, выполняет задачи SEO и… хм… скажем так, некоторых трюков с баннерообменными сетями, которые обычному пользователю не заметны. Однако бот написан таким образом, что может делать практически что угодно. В том числе заполнять формы.
              Кстати, я уже не помню, реализовал я это или нет, но он должен также уметь захватывать графические объекты и отправлять их на сервер. Что в принципе уже половина решения проблемы с капчей. Вторую половину можно реализовать человеческими ресурсами — опять же небесплатно.
              Так что если эту штуковину заставить выполнять нехорошие вещи — от неё надо будет спасаться. Потому я и употребил это слово.
              • 0
                хз мои знакомые дорвейщики ботнетами не пользуются. Дорого и незаконно.
    • +1
      Нет, не надо ставить капчи, где надо «что-то двигать». Обычно человеку, который разгадывает такую капчу надо иметь «глаз-алмаз», ибо требуется соответствие чуть ли ни пиксель в пиксель. Я один раз около часа мучился с такой капчей при регистрации на одном крупном форуме.
  • +1
    От спама не избавится навсегда не возможно, укрылись от ботов? Придут «люди — оптимизаторы». Но в одном согласен, сегодня капча сделала жизнь людей сложнее… вспомним капчу хабра при логине.

    Вопрос-ответ самое оно, главное не быть банальным. Или ставить нестандартную капчу.
  • 0
    Еще есть такая реализация защиты: KeyCaptcha. Не сочтите за рекламку, но симпатично и пользователям нравится. После ее вставки на форумы вообще спам отвалился как класс )))
    • 0
      Угу, вот только flash для неё нужен, а он есть не у всех
      • 0
        Насколько я помню, сервис поддерживает HTML5
      • 0
        Не нужен для неё Flash
    • 0
      Забавная вещица. С демкой поигрался — любопытно. Правда, nitro80 правильно говорит — не у всех может быть установлен flash. Хотя таких пользователей сейчас по сути, так сказать, подавляющее меньшинство.
      • 0
        Flash не обязателен, можете проверить…
        • 0
          Что-то не пойму, на компьютере без flash у меня этот плагин не работает, проверял на kamrc.ru/, пробовал в пункте регистрации.
          Может подскажете, в чем может тогда быть причина? У XanderBass тоже видимо без флеша не работало.
          • 0
            Flash обязателен только для Opera и IE. На остальных браузерах работает без Flash.
            • 0
              Понятно, у меня Opera.
          • 0
            Не, на самом деле Х.З… Я не обратил внимания. Однако, опять таки же стоит подумать над тем, что не у всех пользователей браузеры держат HTML 5. Ну, есть стопудово дятлы, не обновляющие своё ПО.
    • +2
      Ну и вы не сочтите за рекламку, но мною уже был продемонстрирован рабочий пример взлома этой капчи с очень высоким процентом распознавания (практически под 90-95%). Пример работал в виде плагина для браузера, который автоматически собирал эту капчу, это очень удобно для пользователей, не отрицаю =)

      Справедливости ради, могу сказать, что разработчики буквально через пару дней что то пофиксили, и пример перестал работать. Но сейчас любому спамеру ничего не мешает повторить мой результат.
      • 0
        Занятно)
      • 0
        Справедливости надо заметить что у Вас был полноценный браузер :) А спам-боты не используют полноценные браузеры. Да и вариантов защиты в сервисе KeyCAPTCHA больше одного и они автоматически активизируются при обнаружении подозрительной активности. В определенный момент включается капча по классификации изображений, а это как Вы сами понимаете собрать автоматически уже никак не выйдет :)
        • 0
          Я не ошибусь если скажу что вы автор этой капчи, да?

          Опять ради той же справедливости прошу заметить, что для распознавания данной капчи мне браузер был абсолютно не нужен. Все распознавание проводилось не в браузере а в отдельном скрипте. Не надо вводить остальных пользователей в заблуждение. Да и разве не Вы не мне в комментариях в моем блоге писали все с точностью наоборот что боты уже стали совсем умными и используют браузеры? Что-то вы, уважаемый, путаетесь в показаниях)

          Да и откуда я знаю какие используются у вас там защиты. К чему это вы сказали? Зачем эта реклама тут? Заметьте я не призываю отказываться от вашей капчи, и не говорю что она плоха или хороша. Я лишь рассказываю что она была взломанна, пусть даже не полностью и всего лишь одна из ее реализаций… Но могу с вами поспорить что если мне понадобится я точно также смогу взломать реализацию по классификации изображений.

          И еще замечен минус от вас мне в карму… Это я так понимаю личная неприязнь?)
          • 0
            >Все распознавание проводилось не в браузере а в отдельном скрипте
            Это да, но для получения изображений необходимо выполнять JS скрипт по расшифровки картинок, который как Вы сами понимаете может изменяться, поэтому единственно универсальное решение использовать JS движок, иначе ломать вообще бесполезно…

            >Но могу с вами поспорить что если мне понадобится я точно также смогу взломать реализацию по
            >классификации изображений.
            Денис, ну Вы ведь не видели их даже :)? Ну зачем столько самоуверенности? Похоже это у Вас какая-то личная неприязнь и желание доказать свою крутизну любой ценой ;) В нашей базе ОЧЕНЬ много картинок и она никак не определяется через вэйвлеты/гаммы и прочее. Только прямой классификацией, но кол-во изображений для классификации около 100 миллионов.

            >И еще замечен минус от вас мне в карму…
            :) Денис, Вы искренне считаете кроме меня некому Вам поставить — в карму?
            • 0
              Ну вот, опять с вами спорить…

              Моя реализация в тот момент не требовала никаких JS движков. Мне просто захотелось чтобы это работало из под браузера в виде плагина. Изначально у меня была реализация без браузера, без интрепретаторов JS, на чистом PHP, который разбирал скрипты сам в автоматическом режиме. Давайте не будем с вами спорить на тему что было бы если бы ваш скрипт вдруг изменился бы. Факт автоматического распознавания на тот момент был? Да. Что еще вы пытаетесь мне и остальным доказать?

              Что за едкое замечание насчет моей крутизны? Не забывайтесь пожалуйста. Конкретно у меня нет никакой личной неприязни, и, попрошу заметить, это не «желание доказать личную крутизну», а намек на то что ваши слова безосновательны. И да, я видел реализацию с классификацией изображения, и я не верю в «100 миллионов» картинок, так как предложенные мне картинки переодически повторялись (о как?).

              И да, я искренне считаю что кроме вас некому ставить минус за то сообщение мне в карму, но я вам заранее прощаю, даже если это не вы, так как зная вас, вам нужно давать как можно меньше поводов для спора.
              • 0
                >и я не верю в «100 миллионов» картинок
                Можете проверить :) соберите базу в 11 000 картинок, 10 000 склассифицируйте руками, а 1000 оставьте для теста и посчитайте какой процент из этой 1000 будет верно определен.

                >даже если это не вы, так как зная вас, вам нужно давать как можно меньше поводов для спора
                Ну что же Вы так, если меньше поводов для спора, то и не надо спорить с теми вещами, которые я Вам неоднократно говорил :)

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

                А Вам на самом деле можем сказать только спасибо :) Благодоря Вашей работе мы значительно улучшили механизмы защиты и средства мониторинга системы…

                Вобщем мы давно уже все друг другу сказали :) Я более чем уверен что Вы прекрасно понимаете о чем я говорю…

                На прощанья хочу Вам пожелать все-таки поменьше деструктива :) и не думать как что-то можно сломать, а думать как можно что-то создать… Что-то что удобней и эффективней того, что уже есть…
                • 0
                  Немножко не понял что вы имели ввиду под:
                  соберите базу в 11 000 картинок, 10 000 склассифицируйте руками, а 1000 оставьте для теста и посчитайте какой процент из этой 1000 будет верно определен.


                  Знаете, просто то что вы говорили лично мне, и то что вы говорите на публику разительно отличается. И именно это заставляет меня спорить с вами. Я понимаю это ваш продукт, и ваша цель его защитить и разрекламировать, но делайте это честно. Согласитесь, намного было бы лучше, если бы в ответ на первое мое сообщение вы бы написали, что то в духе «да, действительно нашу защиту взламывали, но каждый раз, на основе демонстрируемых нам наших ошибок, мы улучашаем защиту», чем пытались бы зацепить меня?

                  А насчет меньше деструктива, уж извините, работа у меня такая. Но и конструктивные вещи я тоже приношу в этот мир. Не так давно принимал участие в разработке системы защиты голосования от накрутки на одном довольно крупном проекте, и там, вы не поверите, мы смогли отказаться от капчи и прочих классических видов защиты.
                  • 0
                    >Знаете, просто то что вы говорили лично мне, и то что вы говорите на публику разительно отличается.
                    Я вроде и лично и публично говорю всегда одно и тоже, что думаю то и говорю :) Давайте уж тогда конкретно что я Вам говорил такого лично что не сочетается с публичными словами?

                    >Я понимаю это ваш продукт, и ваша цель его защитить и разрекламировать, но делайте это честно.
                    Это какое именно моё предложение (только конкретно) Вы восприняли как вранье?

                    >мы смогли отказаться от капчи и прочих классических видов защиты.
                    замечательно! Этот Ваш метод применим к форумам/блогам и особенно массово? Подозреваю что нет :)

                    Всему своё место и всему своё предназначение, у кого есть деньги/возможнсти и желание делать собственную защиту без капч, тот делает… А кого нет возможнсти или кто просто считает капчу самым надежным методом защиты, тот ставит капчу :) все очень просто, зачем Вы пытаетесь раскрасить весь мир в черно-белый цвет под своё мировозрение?

                    Денис, главное чтобы был результат, чтобы не было спама, а способ каждый волен выбирать сам…

                    Если наши пользователи ставят капчу и видят что спама нет — вот это главное… Если увидят что много спама, то уберут нашу защиту и поставят какую-либо другую…

                    Ну а наша задача, как разработчиков защиты вовремя отследить попытки взлома и принять ответные меры, чем мы и занимаемся и будем заниматься…
    • 0
      Мне не понравилась. Временя тратится на сборку. И две из трех я не прошел. При чем узнал об этом только когда отправлял сообщение. Не знаю каким пользователям она нравится.
      • +1
        Времени тратися НАМНОГО меньше чем на рекапчу… Так что все познается в сравнении…

        >При чем узнал об этом только когда отправлял сообщение. Не знаю каким пользователям она нравится.
        Это как? Капча не пропускает пост пока проверка не пройдет корректно…
  • –1
    На данный момент я не видел ниодну неломаемую капчу.
    Большинство обходятся через антигейт, например.
    • 0
      ни одну*
      • 0
        Потому что там люди разгадывают :).

        А я видел. Например, на сайте химиков спросить «напишите формулу супергипергипомимоглюцината натрохлорадиводорода». Китайцы фиг разгадают.
        • +1
          На непопулярных сайтах такое трудно обходится, да. Но если хоть немного популярный, написать для такой вещи скрипт намного легче.
        • 0
          При целенаправленном взломе собираются все вопросы, ищутся на них ответы и можно отдавать их боту.
  • –1
    Добавлю, что в капчах очень не проработано юзабилити.

    Например, в VK мне постоянно хочется, чтобы капча чинила мою поломанную раскладку.
    • +3
      В вк иногда кириллица вылазит, что по-правде, дибилизм. Прямо как домен.рф.
      • 0
        Только если язык аккаунта русский.
        • 0
          Лучше всего цифровая капча
          • 0
            И чем она лучше? Тем, что подбирать пароль придётся всего из 10 разных символов? )
            • +2
              Не пароль, а капча. В пароле должны быть буквы, в капче их не должно быть вообще).

              Да, всего 10 символов. Да, их легче подбирать на клавиатуре. А человеку их легче распознавать. А ещё исчезнут классические проблемы с путаницей L,1 и i)
              • +1
                и проблемы с раскладкой
              • 0
                Для того, чтобы решить проблемы l I 1 (L i 1), О0 и т.д. достаточно их исключить из набора символов для генерации. И сложность капчи уменьшится не сильно, и проблем не будет.
                • +1
                  Я просто заметил, что на цифровых капчах подобных проблем нет и быть не может. Использование цифровой капчи сразу решает 4 указанные мной проблемы. И значительно повышает юзабилити.

                  В буквенной вы решили одну. Решите остальные.
                  • 0
                    Решите проблему простоты распознавания и простоты подбора. Не зря ёмкость алфавита решает проблему перебора и сложности капчи.
        • 0
          Нет, в зависимости от последних введенных символов.
  • +1
    Или совпадение, или закономерность, но самая «ужасная» капча мне попадается в гугле, на форме регистрации нового аккаунта.
  • 0
    Как пользователь, считаю надо заменить проверки типа капчи, на интерактивное действие мышкой которое будет пропускать или блокировать. Это уже предлагали выше. Но меня интересует, разве такая защита сложнее в реализации? Или существуют трудности.
    • +1
      KeyCaptcha непонятная очень. Пазл сложил, а подтверждения на правильность нет.
    • 0
      И как я это сделаю на телефоне или планшете?
      • 0
        На планшете — пальцем, на телефоне с тачкрином — тем же самым или стилусом. Или Вы, простите, собрались регистрироваться с телефона без тачскрина?
        • +4
          Nokia E72
          • 0
            Да, непростой девайс :/
  • 0
    В своё время написал ещё одно любопытное решение на основе скрытых полей и сессий — habrahabr.ru/post/150492/. Правда в итоге его посчитали неэффективным.
  • 0
    Очень советую почитать мой перевод одной замечательной статьи.
  • 0
    Такой метод реализован на wordstat.yandex.ru — если вы отключите куки он будет у вас спрашивать капчу.
    Там SWF объект защищает форму. Вместе с куками
  • 0
    можно не делать форму в html, а генерировать с помощью js
  • +2
    Технологии описываемые вами не новы, называется это honeypot.

    На хабре их подробно описывали в начале этого года: habrahabr.ru/post/135209/
    Три года назад: habrahabr.ru/blogs/webdev/27756/

    А изначально методология была сформулирована аж в 2007 году:
    nedbatchelder.com/text/stopbots.html
    haacked.com/archive/2007/09/11/honeypot-captcha.aspx
    • +4
      Нужно заметить, что всё это работает ровно до того момента пока к вашему сайту не проявляется индивидуального внимания со стороны злоумышленников. Стоит им только изучить вашу защиту и немного скорректировать поведение бота, как вся защита рушится как карточный домик. Капча в этом плане надёжнее, т.к. гарантированно требует немало ресурсов на стороне атакующего (и успех далеко не всегда гарантирован).
  • 0
    Я не понял. В подзаголовке «число цифр в телефоне больше 3», в тексте — больше 4, а вообще по-моему в телефонах 7 цифр, а с кодом — 10 цифр, нет?
    • 0
      города бывают маленькие и локальный телефон в них короткий
  • +2
    Акисмет, также — классная штука.
  • +3
    У меня спам пропал после ввода строки типа
    <script>document.write('<input type="hidden" name="hash" value="<?=md5($param)?>" ')</script>
    может не совсем так, но смысл тот же.
  • 0
    Ну еще в копилку — часто помогает анализ того, что форма пришла оттуда, где она показана. Часто боты вообще не удосуживаются что-либо указать в referrer, либо указывают корень сайта.

    Совместно со скрытым полем это отсеивает 99.9% ботов.
    • 0
      А если контактная форма на всех страницах сайта?
      • 0
        помогает анализ того, что форма пришла оттуда, где она показана


        если она показана на всех страницах сайта, значит надо проверять что форма пришла с нашего домена или (если страниц немного) с одной из этих всех страниц. Разве это неочевидно?
        • 0
          Реферер подделать — недолго.
          • 0
            я знаю )
            Но на практике (я это не как идею высказал, а как практически проверенный способ) — много ботов его почему то не подделывают, видимо в силу ограниченности ресурсов или лени разработчиков
            • 0
              Ненадо расчитывать на предполагаемую лень противника. Все внешние данные могут быть подделаны.
              • 0
                Хм. Простите, я как то наверно непонятно выразился? Я лишь предложил это как дополнительную проверку к другим методам
            • 0
              До того времени, пока для вас не напишут специализированного бота.
  • НЛО прилетело и опубликовало эту надпись здесь
  • 0
    Годная заметка. Плюсануть не могу, так что — спасибо
    • НЛО прилетело и опубликовало эту надпись здесь
      • 0
        Этот неловкий момент… Я вообще то про пост ;)
  • –1
    Ещё возможный вариант несложной текстовой капчи — задавать вопрос в стиле «введите аббревиатуру такого-то понятия». В качестве понятия может служить что угодно — «х… знает», «Федеральная налоговая служба», «Non-Disclosure Agreement», «Уголовный кодекс» и ещё полно разных вариантов. Думаю, с тысячу, а то и больше, наберётся. А для страховки от ботов добавить скрытый текст, содержащий несколько отличающихся вариантов из базы капчи — хай бот гадает, какой из них правильный. Сам на практике пока не проверял — только сейчас задумался. У себя сейчас пользую скрытое поле, значение в котором меняется средствами JavaScript при загрузке страницы.
    • 0
      аббревиатуры ломаются просто, если кто-то персональный подход сделает.
  • 0
    Я сократил поток спама на 99%, добавив проверку на время заполнения формы.
    От 5 секунд до 5 минут — человеческие значения.
    • 0
      5 секунд 100% хватает на заполнение 2 полей…
    • +1
      Пользователи lastpass негодуют :)
  • –1
    Как вариант в дополнение — перед отправкой менять action с помощью javascript на корректный.
    • 0
      Спамилке на основе полнофункционального браузерного движка достаточно будет лишь дождаться выполнения javascript'а. В любом случае такая спамилка отправит форму не тупым POST/GET-запросом, а программным нажатием на кнопку.
      • 0
        Я не совсем полностью описал свой метод: для небольшого коммерческого сайта пишется два обработчика на ошибки: серверный и клиентский. С серверным все понятно, на стороне клиента форма отдается с обобщающим action или без него (усложняет парсинг сайтов на предмет наличия форм). js проводит валидацию формы, при успешном прохождении валидации меняется action формы и разрешается submit.

        Пользуюсь таким способом достаточно давно, потерь форм не обнаружил, спам приходит в 0.01% случаев, и похоже, что прошедший спам — ручной.
        • 0
          Способ плох тем, что при отключенном JS (или при ошибке) у пользователя нет шанса амнистироватся введя капчу.
          • 0
            Меня полностью устраивает. Ошибки в расчет не берем, а вот в пользователей с отключенным JS я честно не верю.
  • 0
    Столкнулся несколько дней назад с проблемой спама через контактную форму, первое что пришло в голову, чтоб не ставить капчу, это проверять номер телефона. Пока спама больше не было.
  • 0
    Использовал JScript, который по Onclick на Submit добавляет скрытое поле, генерирующееся для данной страницы простым алгоритмом из константы, сформированной на сервере (в момент отдачи страницы).
    Количество боторегистраций упало до нуля.
    В то же время обычная капча никак не спасала от боторегов.
    • 0
      А теперь представим себе программу-кликер…
      • 0
        Вы можете представить себе что угодно, однако факты вещь упрямая.
    • 0
      Ну разницы нет он клик или при загрузке формы спамилка на движке браузера обычно «кликает» с вызовом всех событий.
  • 0
    По мне — вот одно из самых элегантных решений www.myjqueryplugins.com/QapTcha, опять таки js о котором писал автор, да и пользователь не ломает глаза…
  • 0
    Почти всё из описанного автором использую — работает.
    Из интересного — делал формы, модифицируемые после загрузки страницы javascript'ом.
    По умолчанию форма смотрит на левый сайт, например на сайт конкурента. Если форму постит бот — пост-запрос уходит конкуренту. Но для ссылок такое не поможет, т.к. повредит индексации.

    Другой отличный вариант на замену каптче — случайный вопрос.
    • 0
      Скорее не вопрос, а предложение текстом, например «два плюс пять».

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.