Продвижение в Instagram в пару кликов! Как это работает: CAPTCHA Что такое captcha при регистрации

Есть разные способы для обхода CAPTCHA, которыми защищены сайты. Во-первых, существуют специальные сервисы, которые используют дешевый ручной труд и буквально за $1 предлагают решить 1000 капч. В качестве альтернативы можно попробовать написать интеллектуальную систему, которая по определенным алгоритмам будет сама выполнять распознавание. Последнее теперь можно реализовать с помощью специальной утилиты.

Решить CAPTCHA

Распознавание CAPTCHA - задача чаще всего нетривиальная. На изображение необходимо накладывать массу различных фильтров, чтобы убрать искажения и помехи, которыми разработчики желают укрепить стойкость защиты. Зачастую приходится реализовывать обучаемую систему на основе нейронные сетей (это, к слову, не так сложно, как может показаться), чтобы добиться приемлемого результата по автоматизированному решению капч. Чтобы понять, о чем я говорю, лучше поднять архив и прочитать замечательные статьи «Взлом CAPTCHA: теория и практика. Разбираемся, как ломают капчи» и «Подсмотрим и распознаем. Взлом Captcha-фильтров» из #135 и #126 номеров соответственно. Сегодня же я хочу рассказать тебе о разработке TesserCap, которую автор называет универсальной решалкой CAPTCHA. Любопытная штука, как ни крути.

Первый взгляд на TesserCap

Что сделал автор программы? Он посмотрел, как обычно подходят к проблеме автоматизированного решения CAPTCHA и попробовал обобщить этот опыт в одном инструменте. Автор заметил, что для удаления шумов с изображения, то есть решения самой сложной задачи при распознавании капч, чаще всего применяются одни и те же фильтры. Получается, что если реализовать удобный инструмент, позволяющий без сложных математических преобразований накладывать фильтры на изображения, и совместить его с OCR-системой для распознавания текста, то можно получить вполне работоспособную программу. Это, собственно, и сделал Гурсев Сингх Калра из компании McAfee. Зачем это было нужно? Автор утилиты решил таким образом проверить, насколько безопасны капчи крупных ресурсов. Для тестирования были выбраны те интернет-сайты, которые являются самыми посещаемыми по версии известного сервиса статистики . Кандидатами на участие в тестировании стали такие монстры, как Wikipedia, eBay, а также провайдер капч reCaptcha.

Если рассматривать в общих чертах принцип функционирования программы, то он достаточно прост. Исходная капча поступает в систему предварительной обработки изображений, очищающей капчу от всяких шумов и искажений и по конвейеру передающей полученное изображение OCR-системе, которая старается распознать текст на нем. TesserCap имеет интерактивный графический интерфейс и обладает следующими свойствами:

  • Имеет универсальную систему предварительной обработки изображений, которую можно настроить для каждой отдельной капчи.
  • Включает в себя систему распознавания Tesseract , которая извлекает текст из предварительно проанализированного и подготовленного CAPTCHA-изображения.
  • Поддерживает использование различных кодировок в системе распознавания.
  • Думаю, общий смысл понятен, поэтому предлагаю посмотреть, как это выглядит. Универсальность утилиты не могла не привести к усложнению ее интерфейса, поэтому окно программы может ввести в небольшой ступор. Так что, перед тем как переходить непосредственно к распознаванию капч, предлагаю разобраться с ее интерфейсом и заложенным функционалом.


    Предварительная обработка изображений и извлечение
    текста из капчи About

    Мы не могли не сказать хотя бы пары слов об авторе замечательной утилиты TesserCap. Его зовут Гурсев Сингх Калра. Он работает главным консультантом в подразделении профессиональных услуг Foundstone, которое входит в состав компании McAfee. Гурсев выступал на таких конференциях, как ToorCon, NullCon и ClubHack. Является автором инструментов TesserCap и SSLSmart. Помимо этого, разработал несколько инструментов для внутренних нужд компании. Любимые языки программирования - Ruby, Ruby on Rails и C#. Подразделение профессиональных услуг Foundstone®, в котором он трудится, предлагает организациям экспертные услуги и обучение, обеспечивает постоянную и действенную защиту их активов от самых серьезных угроз. Команда подразделения профессиональных услуг состоит из признанных экспертов в области безопасности и разработчиков, имеющих богатый опыт сотрудничества с международными корпорациями и государственными

    Интерфейс. Вкладка Main

    После запуска программы перед нами предстает окно с тремя вкладками: Main, Options, Image Preprocessing. Основная вкладка содержит элементы управления, которые используются для запуска и остановки теста CAPTCHA-изображения, формирования статистики теста (сколько отгадано, а сколько нет), навигации и выбора изображения для предварительной обработки. В поле для ввода URL-адреса (элемент управления № 1) должен быть указан точный URL-адрес, который веб-приложение использует для извлечения капч. URL-адрес можно получить следующим образом: кликнуть в правой части CAPTCHA-изображения, скопировать или просмотреть код страницы и извлечь URL-адрес из атрибута src тега изображения ..сайт/common/rateit/captcha.asp?. Рядом со строкой адреса находится элемент, задающий количество капч, которые нужно загрузить для тестирования. Так как приложение может одновременно показывать только 12 изображений, в нем предусмотрены элементы управления для постраничного пролистывания загруженных капч. Таким образом, при масштабном тестировании мы сможем пролистывать загруженные капчи и просматривать результаты их распознавания. Кнопки Start и Stop запускают и останавливают тестирование соответственно. После тестирования нужно оценить результаты распознавания изображений, отметив каждый из них как корректный или некорректный. Ну и последняя, наиболее значимая функция служит для передачи любого изображения в систему предварительной обработки, в которой задается фильтр, удаляющий с изображения шумы и искажения. Чтобы передать картинку в систему предварительной обработки, надо щелкнуть на требуемом изображении правой кнопкой мыши и в контекстном меню выбрать пункт Send To Image Preprocessor.

    Интерфейс. Вкладка Options

    Вкладка опций содержит различные элементы управления для конфигурирования TesserCap. Здесь можно выбрать OCR-систему, задать параметры веб-прокси, включить переадресацию и предварительную обработку изображений, добавить пользовательские HTTP-заголовки, а также указать диапазон символов для системы распознавания: цифры, буквы в нижнем регистре, буквы в верхнем регистре, специальные символы.

    Теперь о каждой опции поподробней. Прежде всего, можно выбрать OCR-систему. По умолчанию доступна только одна - Tesseract-ORC, так что заморачиваться с выбором тут не придется. Еще одна очень интересная возможность программы - выбор диапазона символов. Возьмем, например, капчу с сайт - видно, что она не содержит ни одной буквы, а состоит только из цифр. Так зачем нам лишние символы, которые только увеличат вероятность некорректного распознавания?. Но что если выбрать Upper Case? Сможет ли программа распознать капчу, состоящую из заглавных букв любого языка? Нет, не сможет. Программа берет список символов, используемых для распознавания, из конфигурационных файлов, находящихся в \Program Files\Foundstone Free Tools\TesserCap 1.0\tessdata\configs. Поясню на примере: если мы выбрали опции Numerics и Lower Case, то программа обратится к файлу lowernumeric, начинающемуся с параметра tesseditchar whitelist. За ним следует список символов, которые будут использоваться для решения капчи. По умолчанию в файлах содержатся только буквы латинского алфавита, так что для распознавания кириллицы надо заменить или дополнить список символов.

    Теперь немного о том, для чего нужно поле Http Request Headers. Например, на некоторых веб-сайтах нужно залогиниться, для того чтобы увидеть капчу. Чтобы TesserCap смогла получить доступ к капче, программе необходимо передать в запросе HTTP такие заголовки, как Accept, Cookie и Referrer и т. д. Используя веб-прокси (Fiddler, Burp, Charles, WebScarab, Paros и т. д.), можно перехватить посылаемые заголовки запроса и ввести их в поле ввода Http Request Headers. Еще одна опция, которая наверняка пригодится, - это Follow Redirects. Дело в том, что TesserCap по умолчанию не следует переадресации. Если тестовый URL-адрес должен следовать переадресации для получения изображения, нужно выбрать эту опцию.

    Ну и осталась последняя опция, включающая/отключающая механизм предварительной обработки изображений, который мы рассмотрим далее. По умолчанию предварительная обработка изображений отключена. Пользователи сначала настраивают фильтры предварительной обработки изображений согласно тестируемым CAPTCHA-изображениям и затем активируют этот модуль. Все CAPTCHA-изображения, загружаемые после включения опции Enable Image Preprocessing, проходят предварительную обработку и уже затем передаются в OCR-систему Tesseract для извлечения текста.

    Интерфейс. Вкладка Image Preprocessing

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

    Этап 1. Инверсия цвета

    На данном этапе инвертируются цвета пикселей для CAPTCHA-изображений. Код, представленный ниже, демонстрирует, как это происходит:

    For(each pixel in CAPTCHA) { if (invertRed is true) new red = 255 – current red if (invertBlue is true) new blue = 255 – current blue if (invertGreen is true) new green = 255 – current green }

    Инверсия одного или нескольких цветов часто открывает новые возможности для проверки тестируемого CAPTCHA-изображения.

    Этап 2. Изменение цвета

    На данном шаге можно изменить цветовые компоненты для всех пикселей изображения. Каждое числовое поле может содержать 257 (от  1 до 255) возможных значений. Для RGB-компонентов каждого пикселя в зависимости от значения в поле выполняются следующие действия:

  • Если значение равно -1, соответствующий цветовой компонент не меняется.
  • Если значение не равно -1, все найденные компоненты указанного цвета (красный, зеленый или синий) меняются в соответствии с введенным в поля значением. Значение 0 удаляет компонент, значение 255 устанавливает его максимальную интенсивность и т. д.
  • Этап 3. Градация серого (Шкала яркости)

    На третьем этапе все изображения конвертируются в изображения в градациях серого. Это единственный обязательный этап преобразования изображений, который нельзя пропустить. В зависимости от выбранной кнопки выполняется одно из следующих действий, связанных с цветовой составляющей каждого пикселя:

  • Average -> (Red + Green + Blue)/3.
  • Human -> (0.21 * Red + 0.71 * Green + 0.07 * Blue).
  • Average of minimum and maximum color components -> (Minimum (Red + Green + Blue) + Maximum (Red + Green + Blue))/2.
  • Minimum -> Minimum (Red + Green + Blue).
  • Maximum -> Maximum (Red + Green + Blue).
  • В зависимости от интенсивности и распределения цветовой составляющей CAPTCHA любой из этих фильтров может улучшить извлекаемое изображение для дальнейшей обработки.


    Этап 4. Сглаживание и резкость

    Чтобы усложнить извлечение текста из CAPTCHA-изображений, в них добавляют шум в форме однопиксельных или многопиксельных точек, посторонних линий и пространственных искажений. При сглаживании изображения возрастает случайный шум, для устранения которого потом используются фильтры Bucket или Cutoff. В числовом поле Passes следует указать, сколько раз нужно применить соответствующую маску изображения перед переходом на следующий этап. Давай рассмотрим компоненты фильтра для сглаживания и повышения резкости. Доступны два типа масок изображения:

  • Фиксированные маски. По умолчанию TesserCap имеет шесть наиболее популярных масок изображения. Эти маски могут сглаживать изображение или повышать резкость (преобразование Лапласа). Изменения отображаются сразу же после выбора маски с помощью соответствующих кнопок.
  • Пользовательские маски изображения. Пользователь также может настроить пользовательские маски обработки изображений, вводя значения в числовые поля и нажимая кнопку Save Mask. если сумма коэффициентов в этих окошках меньше нуля, выдается ошибка и маска не применяется. При выборе фиксированной маски кнопку Save Mask использовать не требуется.
  • Этап 5. Вводим оттенки серого

    На этом этапе обработки изображения его пиксели могут быть окрашены в широкий диапазон оттенков серого. Этот фильтр отображает распределение градаций серого в 20 бакетах (bucket)/диапазонах. Процент пикселей, окрашенных в оттенки серого в диапазоне от 0 до 12, указан в бакете (bucket) 0, процент пикселей, окрашенных в оттенки серого в диапазоне от 13 до 25, - в бакете (bucket) 1 и т. д. Пользователь может выбрать одно из следующих действий для каждого диапазона значений, соответствующих оттенкам серого:

  • Оставить без изменения (Leave As Is).
  • Заменить белым (White).
  • Заменить черным (Black).
  • Благодаря этим опциям можно контролировать различные диапазоны оттенков серого, а также сокращать/удалять шум путем, меняя оттенки серого в сторону белого или черного.

    Этап 6. Настройка отсечения (cutoff)

    Этот фильтр строит график зависимости значения уровня серого от частоты встречаемости и предлагает выбрать отсечение. Принцип работы отсекающего фильтра показан ниже в псевдокоде:

    If (pixel’s grayscale value в зависимости, от того какая опция выбрана ( : Set Every Pixel with value Threshold to 0. Remaining to 255)

    График показывает подробное распределение пикселей CAPTCHA по цветам и помогает удалить помехи с помощью отсечения значений уровня серого.

    Этап 7: Обтесывание (chopping)

    После применения сглаживающего, отсекающего, bucket- и других фильтров CAPTCHA-изображения все еще могут быть зашумлены однопиксельными или многопиксельными точками, посторонними линиями и пространственными искажениями. Принцип работы фильтра обтесывания заключается в следующем: если количество смежных пикселей, окрашенных в данный оттенок серого, меньше величины в числовом поле, фильтр обтесывания присваивает им значение 0 (черный) или 255 (белый) по выбору пользователя. При этом CAPTCHA анализируется как в горизонтальном, так и в вертикальном направлении.

    Этап 8: Изменение ширины границы

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

    Этап 9: Инверсия серого оттенка

    Этот фильтр проходит каждый пиксель и заменяет его значение уровня серого новым, как показано ниже в псевдокоде. Инверсия серого проводится для подгонки изображения под цветовые настройки OCR-системы.

    For(each pixel in CAPTCHA) new grayscale value = 255 – current grayscale value

    Этап 10: Проверка распознавания капчи

    Цель данного этапа - передать предварительно обработанное CAPTCHA-изображение OCR-системе для распознавания. Кнопка Solve берет изображение после фильтра инверсии серого, отправляет в OCR-систему для извлечения текста и отображает возвращенный текст в графическом интерфейсе. Если распознанный текст совпадает с текстом на капче, значит, мы правильно задали фильтр для предварительной обработки. Теперь можно перейти на вкладку опций и включить опцию предварительной обработки (Enable Image Preprocessing) для обработки всех последующих загруженных капч.

    Распознаем капчи

    Ну что ж, пожалуй, мы рассмотрели все опции этой утилиты, и теперь неплохо было бы протестировать какую-нибудь капчу на прочность..


    Результат анализа капчи сайт с предварительной
    обработкой изображений. Судя по результатам, фильтр
    подобрать не удалось

    Итак, запускаем утилиту и идем на сайт журнала. Видим список свежих новостей, заходим в первую попавшуюся и пролистываем до места, где можно оставить свой комментарий. Ага, коммент так просто не добавить (еще бы, а то бы давно уже всё заспамили) - нужно вводить капчу. Ну что ж, проверим, можно ли это автоматизировать. Копируем URL картинки и вставляем его в адресную строку TesserCap. Указываем, что нужно загрузить 12 капч, и нажимаем Start. Программа послушно загрузила 12 картинок и попыталась их распознать. К сожалению, все капчи оказались либо не распознаны, о чем свидетельствует надпись -Failed- под ними, либо распознаны неправильно. В общем, неудивительно, так как посторонние шумы и искажения не были удалены. Этим мы сейчас и займемся. Жмем правой кнопкой мыши на одну из 12 загруженных картинок и отправляем ее в систему предварительной обработки (Send To Image Preprocessor). Внимательно рассмотрев все 12 капч, видим, что они содержат только цифры, поэтому идем на вкладку опций и указываем, что распознавать нужно только цифры (Character Set = Numerics). Теперь можно переходить на вкладку Image Preprocessing для настройки фильтров. Сразу скажу, что поигравшись с первыми тремя фильтрами («Инверсия цвета», «Изменение цвета», «Градация серого») я не увидел никакого положительного эффекта, поэтому оставил там всё по дефолту. Я выбрал маску Smooth Mask 2 и установил количество проходов равным одному. Фильтр Grayscale buckets я пропустил и перешел сразу к настройке отсечения. Выбрал значение 154 и указал, что те пиксели, которых меньше, нужно установить в 0, а те, которых больше, в 255. Чтобы избавиться от оставшихся точек, включил chopping и изменил ширину границы до 10. Последний фильтр включать не было смысла, поэтому я сразу нажал на Solve.

    На капче у меня было число 714945, но программа распознала его как 711435. Это, как видишь, совершенно неверно. В конечном итоге, как я ни бился, нормально распознать капчу у меня так и не получилось. Пришлось экспериментировать с pastebin.com, которые без проблем удалось распознать. Но если ты окажешься усидчивее и терпеливее и сумеешь получить корректное распознавание капч с сайт, то сразу заходи на вкладку опций и включай предварительную обработку изображений (Enable Image Preprocessing). Затем переходи на Main и, кликнув на Start, загружай свежую порцию капч, которые теперь будут предварительно обрабатываться твоим фильтром. После того, как программа отработает, отметь корректно/некорректно распознанные капчи (кнопки Mark as Correct/Mark as InCorrect). С этого момента можно посматривать сводную статистику по распознаванию с помощью Show Statistics. В общем-то, это своеобразный отчет о защищенности той или иной CAPTCHA. Если стоит вопрос о выборе того или другого решения, то с помощью TesserCap вполне можно провести свое собственное тестирование.

    Результат проверки CAPTCHA на популярных сайтах

    Веб-сайт и доля распознанных капч:

    • Wikipedia > 20–30 %
    • Ebay > 20–30 %
    • reddit.com > 20–30 %
    • CNBC > 50 %
    • foodnetwork.com > 80–90 %
    • dailymail.co.uk > 30 %
    • megaupload.com > 80 %
    • pastebin.com > 70–80 %
    • cavenue.com > 80 %
    Заключение

    CAPTCHA-изображения являются одним из самых эффективных механизмов по защите веб-приложений от автоматизированного заполнения форм. Однако слабые капчи смогут защитить от случайных роботов и не устоят перед целенаправленными попытками их решить. Как и криптографические алгоритмы, CAPTCHA-изображения, тщательно протестированные и обеспечивающие высокий уровень безопасности, являются самым лучшим способом защиты. На основе статистики, которую привел автор программы, я выбрал для своих проектов reCaptcha и буду рекомендовать ее всем своим друзьям - она оказалось самой стойкой из протестированных. В любом случае не стоит забывать, что в Сети есть немало сервисов, которые предлагают полуавтоматизированное решение CAPTCHA. Через специальный API ты передаешь сервису изображение, а тот через непродолжительное время возвращает решение. Решает капчу реальный человек (например, из Китая), получая за это свою копеечку. Тут уже никакой защиты нет. 🙂

    Капча (captcha) - это защитный код, который выводится на страницах интернета в ряде случаев. Смысл ее заключается в том, чтобы автоматические программы, так называемые «боты», не смогли пробиться на сайт.

    Обычно капча - это сочетание букв и цифр, которые нужно ввести в окошко.

    Но бывают и более хитрые варианты. Например, нужно решить уравнение, выбрать из нескольких картинок определенную или сделать что-нибудь еще.

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

    Зачем нужна капча

    Есть программы, которые могут автоматически что-то делать в интернете. Например, рассылать рекламу, публиковать фальшивые отзывы. И вот чтобы их заблокировать, владельцы сайтов ставят капчу.

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

    Эти действия легко сымитировать программой. Ее можно «научить» заполнять поля и публиковать нужные отзывы, чем и пользуются мошенники . Поэтому и была придумана капча - ведь ее программа не введет, а, значит, не сможет опубликовать сообщение.

    Но капча появляется и в других случаях. Например, вы просто общаетесь на своей страничке Вконтакте, и вдруг ни с того ни с сего она возникает. Пока вы ее не пройдете, на сайте ничего сделать не получится.

    Это происходит потому, что системе показалось что-то в ваших действиях подозрительным. Например, вы слишком быстро отвечали на сообщения, и сайт заподозрил, что это делает не человек, а программа.

    Вот и приходится вводить в окошко то, что нарисовано на картинке. Оно, конечно, не очень удобно, зато защищает страницы от взлома.

    Следует заметить, что применение капчи всё равно не спасает сайты от рекламы, взломов и прочих нехороших вещей. Но всё-таки избавляет их от излишне настойчивых притязаний.

    Какие бывают капчи и как их вводить

    reCAPTCHA - проверка, разработанная Гугл. Чтобы ее пройти, нужно поставить галочку в квадратик возле «Я не робот».

    Обычно через пару секунд после этого появляется птичка зеленого цвета - значит, капча пройдена.

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

    На заметку . Нажимать нужно по каждой картинке, где есть хотя бы часть требуемого изображения. И выбирайте их не слишком быстро – между щелчками должно пройти 1-2 секунды.

    Текстовые/цифровые капчи . В окошко нужно ввести кривоватые буквы/цифры, изображенные на картинке. Обычно английские, но бывают и русские.

    Часто для удобства есть кнопка, нажав на которую картинка поменяется. Это нужно в случае, если буквы сложно разобрать. Ну, или когда вроде бы всё печатаешь верно, а система не пускает - выдает ошибку.

    А еще бывает кнопка, которая озвучивает то, что написано. Нажав на нее, вы услышите голос, который проговорит буквы/цифры с картинки.

    Образные . Это капчи в виде картинок. Как правило, нужно просто выбрать подходящее изображение.

    Логические . В этом случае нужно решить какую-то задачку. Обычно она несложная: типа напечатайте, сколько будет 6 + 3. Значит, в уме (ну, или на калькуляторе) нужно сложить эти два числа, а результат напечатать в окошко.

    Или, например, нужно ответить на какой-то вопрос, разгадать загадку.

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

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

    Например, поисковые системы Яндекс и Google будут предлагать вам ввести captcha в случае частого обращения к тем или иным данным или сервисам. Также капча часто встречается при работе с различными скриптами: парсерами, кликерами, постерами и т.д. При парсинге поисковых систем или групп в социальных сетях.

    Главная задача капчи предотвратить автоматические действия ботов. С этой задачей отлично справляется капча, разгадать витиеватый рисунок может только реальный пользователь, а не бот. Таким образом, при работе со скриптами, капча может служить большой помехой при работе с большими объемами данных.

    Но всему есть решение, том числе и для автоматического ввода капчи. Как настроить автоматический ввод и распознавание капчи вы узнаете ниже из этой статьи.

    1. Самая простая разновидность капчи — это капча из буквенных символов . Например, именно буквенную captcha использует Яндекс. Кроме букв могут быть использованы цифры.

    2. Капча состоящая из нескольких слов на латинском алфавите вперемешку с помехами и размытием . Это капча гораздо сложнее предыдущей. Разгадывания для разгадывания нужно потратить больше времени усилий. В том случае если капча кажется вам слишком сложной, можно попробовать обновить ее нажав на соответствующий значок. Есть шанс, что новая капча будет более простой.

    3. Недавно появившаяся капча в виде картинки . В такой капче для разгадывания предлагается выбрать несколько картинок с определённым изображением. Капча будет распознанной в случае правильного выбора изображений.

    Как убрать капчу
  • Если при работе в интернете предлагается ввести капчу, то единственный способ преодолеть ее и продолжить работу, это ввести ее символы специальное поле. После правильного распознавания блокировка прекратится и вы сможете благополучно продолжить свою работу.
  • Второй способ убрать captcha — это прекратить повторяющиеся действия, увеличить интервал между запросами в вашем скрипте, сменить ваш Ip адрес.
  • Самым простым способом будет конечно же разгадать captcha, для этого просто введите предложенные символы в поле расположенное под картинкой и нажмите клавишу Enter .

    Автоматический ввод капчи

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

    Данная проблема хорошо знакома вебмастерам и всем тем, кто работает с постерами, спамерами, парсерами и другими автоматическими программами. Однако, есть решение которое позволяет распознавать captcha автоматически. Для этого существуют специальные сервисы, пример такой сервиса rucaptcha.com.

    Рукапча это популярный сервис ручного разгадывания капчи. Он позволяет автоматически вводить captcha, которая пришла для разгадывания вашему скрипту. Для того чтобы разгадывание и ввод происходил автоматически нужен специальный ключ. При помощи данного ключа ваши капчи буду поступать через сервис rucaptcha.com реальным людям для распознавания. Стоимость данной услуги невысокая и составляет всего 40 рублей за тысячу разгаданных картинок.

    Система работает следующим образом: на сайте зарегистрировано большое количество пользователей, которые зарабатывают деньги разгадываем поступающей captcha в реальном времени. Это позволяет вам непрерывно работать со скриптами 24 часа в сутки 7 дней в неделю, не вводя постоянно captcha самостоятельно.

    Сегодня, благодаря господам спам-ботам и иже с ними, в сети практически невозможно что-либо сделать без ввода символов со сгенерированного изображения - CAPTCHA (далее - капча) . Фактически, это предотвращает выполнение какого-либо скрипта без участия человека, и в этом топике я расскажу, как такую капчу создать средствами PHP, а так же упомяну очень полезный топик другого хабраюзера, который пригодится при разработке изображения-капчи.

    Сразу же предупреждаю, что топик может быть интересен только начинающим разработчикам, так как по сути я изобретаю велосипед, но зато своими руками.

    Основные правила При разработке капчи нужно обязательно соблюдать несколько основных правил:

    1. Капча создана для людей
    Она должна сходу читаться, но не в ущерб стойкости к распознаванию. Очень наглядный пример капчи, не соблюдающей это правило - изображение справа.

    2. Генератор капчи должен быть четко ограничен в используемых символах
    Наглядный пример - изображение в начале топика. Конечно, reCAPTCHA - чудесное изобретение, но порой она предлагает ввести символы, которые и в charmap найти сложно. Кстати, когда речь идет о капче с использованием кириллических символов - ни в коем случае генератор не должен использовать букву «ё». Лично я знаю много людей, у которых на ~ (тильда / ё) повешено какое-то действие в системе.

    3. Капча должна быть стойкой к распознаванию
    … но не в ущерб читаемости. Вообще, этот пункт - самый сложный во всей разработке. Необходимо найти золотую середину - капча сходу читается людьми и вообще (насколько возможно) не читается ботами. Так же необходимо учитывать специфику ресурса, на котором планируется использовать капчу, и его контингента. Если речь идет о, допустим, форуме читающих домохозяек за сорок, то на стойкость капчи можно плюнуть с высокой башни - никому он не упрется. Если речь идет о, например, имейджборде, то тут нужна капча а-ля вырвиглаз.

    Проектирование В качестве теоретического объекта, для которого мы будем делать капчу, выступит сферический форум в вакууме, с умеренно агрессивными, умеренно умными и вообще умеренными пользователями. В разработке такой капчи нам поможет очень полезный топик от хабраюзера Pastafarianist . А именно я обращу внимание на перечисленные недостатки и достоинства взятых им капчей.

    Итак, по порядку перечислим, что же мы можем использовать:

    1. В изображении должно использоваться хотя бы несколько цветов. Желательно всегда разные


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

    2. Должен присутствовать шум


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

    3. Буквы должны находиться на небольшом расстоянии друг от друга


    Тут главное не перестараться. Чрезмерное сближение символов приведет к сильному ухудшению читаемости человеком. На примере выше можно заметить, что буквы слипаются, это создает препятствие для бота при сегментации изображения.

    4. Размеры символов должны быть разными


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

    5. Отвратительный шрифт


    Очень полезный способ. Засечки, курсив, стилизация - отличные подводные камни для бота. Так же в сочетании с шумом в виде линий очень хорошо будет смотреться тонкий шрифт. Если абстрагироваться от первого правила генерации капчи, то можно использовать множество шрифтов сразу, к примеру свой шрифт для каждого символа.

    6. Символы под случайным углом

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

    7. Динамические искажения

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

    Итак, что же мы сделаем:
    - Контрастный фон, с шумом
    - Линии за текстом, линии на тексте
    - Текст в случайном положении
    - Количество символов будет случайным, от 4 до 7
    - Размер каждого символа будет случайным
    - Цвет текста каждый раз будет случайным
    - Символы будут слегка прикасаться
    - Каждый символ будет под случайным небольшим углом

    Разработка Определимся с целью:
    - Генерация шума
    - Генерация текста
    - Форма с возможностью обновления капчи
    - Обработчик введенных данных
    По мере написания статьи понял, что искажения в данном случае абсолютно неуместны. Для тех, кому они все же нужны - в конце топика ссылка на урок по созданию искажений.Пишем форму Обновить капчу Введите капчу:
    Тут все предельно ясно, но на всякий случай я откомментировал некоторые строчки. Кстати, обратите внимание, я не установил параметр maxlenght у поля ввода. В большинстве случаев, разработчики устанавливают этот параметр, указывая размер капчи. Во-первых это нехилая такая подсказка для бота, во-вторых у нас количество символов будет динамическим. Все, интерфейс мы написали, пора приступать к созданию скрипта генерацииПишем генератор кода капчи (random.php)
    Тут все ограничивается только вашим воображением. Как-то я видел иной способ - выбиралась текущая минута, час, месяц, все это перемножалось, из этого выбирались 10 случайных символов, дважды извлекался MD5-хеш, из него извлекались 6 случайных символов и затем все это еще и перемешивалось. Кстати, обратите внимание на выбранные мною символы - я исключил такие как i, l, 1 и 0, o, c, из-за того, что они слишком похожи друг на друга, в некоторых ситуациях пользователь может ошибиться. Генератор я назвал random.php (далее он будет запрашиваться в других скриптах).Пишем генератор изображения (captcha.php)