Як зробити шампунь автоматичне розпізнавання URL. Розпізнавання captcha захисту

Ці прийоми я демонструватиму на піддослідній капчі. Як піддослідна я вибрав капчу якогось Rafontes на яку я натрапив коли шукав матеріали для попередньої статті.

Приклад згенерованої капчі:

Фон мені довелося використати інший, тому що автор не виклав оригінальний (або я не знайшов), але це не вплине на результат.

Препроцес

В результаті цієї дії ми отримаємо масимо обрізану ділянку монохромного зображенняз текстом.

Насамперед нам треба відокремити фон від тексту. Аналізуємо картинку та код генерації зображення. Наявні перші помилки:

  • Використовується один колір для тесту з кодом
  • Колір для тексту генерується в діапазоні rand(0, 200), 0, rand(0, 200), для R G B відповідно (достатньо виділити кольори тільки в цьому діапазоні)
  • Фон з великою кількістюрізних кольорів (не зможе вплинути на статистику найчастіше використовуваного кольору)

Тепер на основі цих фактів аналізуємо колір кожного пікселя у всьому зображенні та виділяємо найчастіше використовуваний. Вийшов 8C0074(У hex-виді). Задаємо від нього невелику похибку та виділяємо цей колір та трохи схожі на нього з урахуванням похибки. Усі виділені зафарбовуємо чорним, решта білим. Виходить така картинка:

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

Тепер виділяємо ділянку з кодом.
Оскільки наш текст ця темна пляма, то й намагаємося алгоритмічно знайти цю пляму. Спочатку визначаємо межі по горизонталі:

Тепер визначаємо межі по вертикалі:

Лінія залишилася тут тому, що той ділянку досі сприймається функцією як дуже темна ділянка. Але тепер на основі цих кордонів уточнюємо їх по другому колу, по горизонталі:

А чому тепер ця лінія забралася запитаєте ви? Тому що тепер аналізувалося менше "стовпців пікселів" і при аналізі алгоритмом виявилося, що в даній ділянці занадто багато стовпців з одним чорним пікселем, а отже це шум. Наразі уточнюємо кордон по вертикалі:

Так як область визначення стала менше те, тепер та лінія що була шумом стала недостатньо темною плямою і була видалена зовсім. Ось ми й одержали ділянку з текстом. Звичайно цей алгоритм іноді не дуже чітко виділяє необхідну область. Але за моїми тестами кількість неправильних визначень не перевищує 5%, ніж можна знехтувати.

Сегментація

Тепер наше завдання розбити отримане зображення на окремі ділянкиіз символами.

Звичайно можна розраховувати, шукати межі символів і т.д. Але якщо знову проаналізувати код генерації, можна знайти ще одну помилку.

  • Відступ між кожним символом завжди дорівнює 15 пікселям

Звичайно іноді через розмір символів вони виходять за рамки п'ятнадцяти пікселів, тоді доводиться відкушувати від сусіднього символу ще один-два пікселі. Але це критично. Взагалі розбиваємо картинку:

Тепер, як ми бачимо навколо деяких символів є порожня область. А нам таки потрібен саме сам символ. Застосовуємо функцію обрізки для кожного символу, і отримані зображення вписуємо прямокутники розміром 17×27:

Саме такі зображення окремо подаватимуться на розпізнавання.

Розпізнавання

Розпізнавання ми будемо виробляти без будь-яких новомодних нейронних мереж. Чому? Вирішальну роль зіграло те, що немає жодної гідної бібліотеки під вінду. Користуватися будемо звичайним розпізнаванням масок символів.

Для цього ми, маючи доступ до вихідним кодам, нагенеруємо купу чорно-білих картинок для кожного символу з різними кутами поворотів (від двох до чотирьох градусів), та різними розмірамишрифту (від 20pt до 30pt). Кожну отриману картинку, як ви здогадалися, вписуємо прямокутник розміром 17×27. Кожне отримане зображення називається маскою.

Для кожної літери я нагенерував по 10-15 масок. У принципі цього достатньо, але якщо збільшити кількість масок, то можна збільшити відсоток розпізнавання.

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

Результати

Для тесту я отримав за допомогою генерації картинки та її розбиття на символи 200 зашумлених символів. І програмно запустив тест. І увага!
Підсумок: Вдалих: 172 Помилок: 28 Відсоток: 86%
Тобто кожен символ на капчі буде розпізнаний успішно з ймовірністю 86% !

Небагато математики. Порахуємо відсоток ймовірності успішного розпізнавання капчі:
Для 4-символьних капч: 0.86 ^ 4 = 54%
Для 5-символьних капч: 0.86 ^ 5 = 47%

В середньому кожна другакапча буде успішно розпізнана.

Якщо врахувати, що на кожну капчу припадає близько 1 секунди, а 2 секунди в середньому буде припадати на успішне розпізнавання. Це дуже відмінний результат.

Вихідники

Скрипт сам генерує, і сам розпізнає капчу. Приклад роботи скрипта на картинці наведеної як приклад автором капчі:

(Картинка клікабельна)

На цій сторінці я розповім про ще один вид заробітку в інтернеті — введення капчі за гроші. Я підготував список найпопулярніших сайтів для заробітку на введенні капчі. Так само ці сервіси можуть стати в нагоді для роботи з різними програмамидля використання антикапчі.

Думаю немає сенсу розповідати, що таке капча , ця річ зустрічається нам всюди. А ось, що на цьому заробляють, напевно, знають не багато.

Заробіток на введенні капчі

Ну якщо Ви використовували якийсь софт (програму) для якихось автоматичних дійв інтернеті, то зазвичай скрізь є пункт меню для введення ключа антикапчі.

Такий ключ видають послуги розпізнавання капч при оплаті. Ключ зазвичай виглядає з набору літер та цифр. Ви вставляєте цей ключ у програму і сервіс розпізнає Вам ту суму, яку ви внесли.

Так от, а хто думаєте в цих сервісах розпізнає ці крякозябри, парочка адмінів?.. І скільки б вони змогли розпізнати?.. Звичайно ж ні. Вони набирають працівників, які сидять розгадують і отримують гроші.

Якщо Вас зацікавив такий вид заробітку, то вибирайте собі сервіс, можете й у всіх, звичайно, і приступайте.

Щоб перейти на сервіс, натисніть на картинку .

Список сервісів розпізнавання капчі

  1. Найбільш просунутий та багатофункціональний.


  • Можливість розгадувати телефоном.
  • Вартість для замовника - від 14 руб. за 1000 капч.
  • Оплата – картки, платіжні системи.
  • Для працівника - від 10 - 30 руб. за 1000 розгаданих капч, залежно від якої суми ставить замовник.
  • Висновок на WebMoney від 30 руб.

2. Аналог першого тільки англійською та в доларах.

  • Ціна антикапчі від 0,5-1,2$ за 1000 капч.
  • Оплата за розгадування капчі приблизно 0,4$.
  • Висновок на WebMoney від 0,5$.

3. Ще один буржуазний сервіс для заробітку на капчі.

  • Під час реєстрації потрібно буде ввести код «0808».
  • Платить від 0,8-1,5$ за розгадування.
  • Висновок від 3$ на Вебмані.

4.

Це розширення для браузера автоматично розгадуватиме капчу на будь-якому сайті.

  • Для Chrome.
  • Firefox.
  • Safari.

5.

  • Ціна для замовника - від 14 руб. за 1000 капч.
  • Безліч методів.
  • Для працівника – від 1 – 10 коп.
  • Висновок на WebMoney від 10 руб.

6.

  • Від 1 $ за 1000 капч.
  • Нема заробітку.

7.

  • Від 0.7 $ /1000.
  • Працівнику – від 1 – 10 коп. Робота здійснюється за доменом - kolotibablo.com.

8.

  • Від $1.29 за 1000 капч.
  • Працівників нема.

9.

Цей сервіс пропонує оплату за розгадування капчі сторонніми людьми.

Наприклад, встановлюєте капчу на свій сайт або посилання в інтернеті.

Подивіться відео, що розповідає про всі можливості.

Доброго часу доби, пані та панове.

Сервіси автоматичного розпізнавання капчі можуть допомогти у найрізноманітніших ситуаціях. Наприклад, вони значно полегшують роботу програм для збору семантичного ядра– Кей Колектор, Слово і т. д., додатків для перевірки тексту на унікальність та рерайт – AntiPlagiarism.

При великих обсягахтого ж тексту або запитів, ви можете зіткнутися з тим, що запит на введення капчі вилітатиме кожні 10 секунд. Не дуже зручно, правда? Антикапча позбавляє вас необхідності вводити ці цифри і літери вручну. Це роблять інші люди, які заробляють на їхньому розгадуванні. Вам потрібно лише сплатити послуги сервісів, які пропонують автовведення капчі.

Більшість програм, яка співпрацює з онлайн-сервісами (Вордстат, Google Аналітика і т. д.), вимагає постійного введення капчі. Таким онлайн-проектам не вигідно, щоби з ними працювали боти, тому вони всіма силами намагаються з цим боротися.

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

Капчу розгадують реальні люди, Отримуючи за це винагороду. Вони працюють у спеціальному вікні, скрипт якого перенаправляє капчу з вашої програми прямо до них. При правильному введенні відбувається автозаповнення. Ваша програма працює без перебоїв і вам більше не треба турбуватися з цього приводу.

Сайти розпізнавання капчі пропонують своїм працівникам фіксовану ставку за капчу. Вам, як клієнтам, потрібно зробити певну сумуна баланс. Потроху вона зменшуватиметься.

Сервіси автоматичного введення не потребують великих вкладень. 300 - 400 рублів на кілька місяців, а то й півроку, буде цілком достатньо. Але це залежить і від кількості використання.

За допомогою спеціальних кодів або даних від облікового запису на такому сайті, ви зможете інтегрувати потрібна програмаіз сервісом.

Список онлайн-сервісів для розпізнавання капчі

Якщо ви хочете, щоб ваші утиліти працювали в режимі “авто”, то вам потрібно ознайомитися з цим списком. Тут я представлю на ваш суд найпопулярніші сайти, які допоможуть позбавитися потреби вводити капчу вручну.

RuCaptcha

RuCaptcha – популярний проект, який вирішує проблему роботи з багатьма програмами. Ціни тут вище, ніж в інших, на 10 рублів, але якість і швидкість роботи цьому відповідає.

Вміє працювати з усіма типами перевірки на робота, тому ви можете не турбуватися, якщо раптом вискочить нова капча від Гугла, де потрібно вибрати якісь дорожні знаки тощо, користувачі РуКапчі легко з цим впораються за кілька хвилин.

В іншому сервіс схожий на інші. Легке API, інтеграція майже з будь-якою програмою і, що найголовніше – велика кількістьвиконавців. Багато людей знають, вільний часдопомагаючи тим самим простим користувачам.

2Captcha

Англомовний ресурс дуже схожий на РуКапчу. Середня ціназа 1000 розгадувань – півбаксу. Виходячи з цього можна дійти висновку, що ціни, як на ринку СНД.

2Captcha відмінно працює з Гуглом. Як правило, там англомовні працівники, які спеціалізуються суто на гуглівських капчах. З російськими варіантами (від того ж Яндекса) може виникнути проблема. Але, гадаю, свій виконавець знайдеться і там.

Anti Captcha

Anti Captcha – сучасний сервіс (колишній Антигейт), який надає послуги автоматичного розгадування символів. Проект відрізняється максимально спрощеним API, великою кількістю виконавців та низькими цінами.

Порівняльне дешеві розцінки та якісне виконання послуги точно не залишить вас байдужими. Сайт відомий у Рунеті, тому середній час розгадування символів складає всього 10 – 15 секунд. Тобто вам взагалі майже не доведеться чекати, доки саме вашу капчу розгадають.

Проект придатний для розпізнавання у браузері. Взаємно корисний варіант, який може допомогти заробити новачкам, і водночас полегшити роботу професіоналам.

Який із сервісів вибрати – вирішуйте самі. Кожен має свої переваги та недоліки. Можна сказати одне: кожний проект працює вже достатньо довгий час. Ви можете не турбуватися, що вас обдурять, вкрадуть ваші гроші або надішлють якісь віруси на ПК. Такого точно не буде, проте цього не скажеш про інших.

Будьте уважні під час вибору сервісу антикапчі. У Рунеті повним-повнісінько фейків, які займаються шахрайством. Якщо ви раптом вирішили спробувати дешевший невідомий проект, то краще вам перед використанням перевірити відгуки про нього. Цілком можливо, що це фішинговий ресурс, який займається збиранням грошей із довірливих користувачів.

Інструкція по роботі з сервісами

Після того, як ви оберете онлайн-сервіс антикапчі, вам потрібно буде якось його використовувати. Зазвичай у таких сервісах є спеціальні ключі– їх ви отримуєте у своєму обліковому записі, після чого вводите у спеціальне поле програми. У рамках сучасного матеріалу я розгляну РуКапчу.

Переходимо до розділу “API вебмайстру”, де бачимо приблизно таку картину.

Тут є поле "captcha KEY" - воно нам і потрібно. Копіюємо цей ключик і йдемо в налаштування антикапчі нашої програми.

Ставимо галочку "Використовувати сервіс антикапчі", вибираємо сервіс зі списку, що випадає, і вставляємо ключ. Готово! Тепер наша програма автоматично “розгадуватиме” капчу за допомогою відповідного сервісу. Більше ніяких дій вам не потрібно. Лише своєчасно поповнюйте рахунок на сайті.

Налаштування у всіх цих програмах майже не відрізняються. І в Кей Колекторі, і в Слово, і в будь-якому іншому додатку все буде виглядати приблизно так, як я описав.

Висновок

Тепер ви знаєте, як обійти введення символів та різні перевірки"Ви не робот?" за допомогою онлайн-сервісів. Зручна практика та проста реалізація. Ви можете назавжди прибрати капчу зі свого життя, лише зрідка поповнюючи баланс. Як правило, на такі проекти йде дуже мало грошей, але скільки користі.

У тому ж Кей Колекторі ця капча може часто вилітати, заважаючи вам виконувати свою роботу. А так підключили програму до сервісу, запустили збір семантичного ядра і можна зайнятися своїми справами. Те саме стосується інших утиліт, які вимагають постійного введення символів.

Напевно, багатьом користувачам інтернету, хоч колись, але треба було запровадити капчу, це простий методвизначення автоматичною програмоюробот ви чи людина. Так ось, трапляється так, що необхідно визначення цілої купи картинок, а часу на введення кожної з них втрачати не хочеться.

    • Критерії вибору програми для розпізнавання капчів
    • Список безкоштовних програмдля обходу капч та їх відмінності

Якщо ви зіткнулися з такою проблемою, рішення є онлайн-сервіси, які допоможуть вам не витрачати зайвий часна введення капч. Ні для кого не секрет, що при вдосконаленні програм розпізнавання користувача (визначення людина це або робот), також удосконалюються програми, які можуть зламувати захист і розпізнавати капчу автоматично. Існують дорогі програмитипу OCR, які чудово справляються з поставленим завданням. Але, погодьтеся, кому хочеться витрачати купу грошей для того, щоб розпізнати картинки. Оскільки безвихідних ситуаційне буває, рішення знаходиться і в цьому випадку - безкоштовний онлайн-сервісПричому варто зауважити, що він такий не один. Нижче розглянемо докладніше існуючі варіанти.

Критерії вибору програми для розпізнавання капчів

Якщо ви займаєтеся якоюсь діяльністю, яка вимагає постійного розпізнавання кодів, тоді є сенс придбати дорогий варіант програми, у разі, коли здійснювати аналізований процес доводиться не так часто, не варто викидати велику суму грошових коштів, для такої справи безкоштовний сервіс, скористатися яким не складе труднощів.

Таких сервісів десятки, і користувач може скористатися будь-яким з них, так що вибрати буде з чого.

Для того, щоб зробити правильний вибірз такого різноманіття програм, необхідно враховувати такі аспекти:

  • в першу чергу, обраний вами сервіс обов'язково має бути повністю безкоштовним. Цей критерій найважливіший, отже дивіться, щоб жодних обмежень із цього приводу був;
  • обраний сервіс повинен уміти «вгадувати» текст російською мовою, без цього критерію, у вас навряд чи вдасться зробити процес введення капчу автоматичним;
  • кількість капчі, які можна визначити автоматично, має бути необмеженою.

Дивіться відео - Як увімкнути розпізнавання капчі через antigate, rucaptcha, captcha24, captchabot на DelphiXE5

Перелік безкоштовних програм для обходу капч та їх відмінності

Отже, почнемо розгляд наявних безкоштовних варіантів, на черзі онлайн сервіс Google Диск. Для того щоб скористатися програмою, що розглядається, необхідно буде зареєструватися, такий хід подій чекає користувача практично у всіх сервісах аналогічного призначення. В тому випадку. Якщо ви вже коли-небудь створювали. Наприклад, блог на blogspot, тоді реєстрація вам у даному випадкуне знадобиться. Тут можливо автоматичне введення такий капчі: PDF, JPG, PNG та GIF. Необхідно відзначити, що обсяг файлів для розпізнавання повинен бути не більше ніж 2-3 Мб.

Онлайн-сервіс OCR Convert Тут реєстрацію користувачеві не знадобиться. Формати капчі, що підтримуються, такі: JPEG, GIF, BMP. Слід зазначити, що збережені файли мають вигляд URL посилання, розширення у форматі TXT. Тут користувач зможе одночасно поставити на завантаження 5-7 документів.

Сервіс i2OCR Для того, щоб розпізнати капчі, необхідно для початку зареєструватися. Одночасно завантажених файлів та документів може бути не більше 10. Користуватися цим сервісом зручно та просто. Формати, що він розпізнає такі: GIF, PBM, PGM, PPM.

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

Вирішити CAPTCHA

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

Перший погляд на TesserCap

Що зробив автор програми? Він переглянув, як зазвичай підходять до проблеми автоматизованого рішення CAPTCHA і спробував узагальнити цей досвід в одному інструменті. Автор зауважив, що для видалення шумів із зображення, тобто вирішення найскладнішого завдання при розпізнаванні капч, найчастіше застосовуються ті самі фільтри. Виходить, що якщо реалізувати зручний інструмент, що дозволяє без складних математичних перетворень накладати фільтри на зображення, і поєднати його з OCR-системою для розпізнавання тексту, можна отримати цілком працездатну програму. Це, власне, і зробив Гурсєв Сінгх Калра із компанії McAfee. Навіщо це було потрібне? Автор утиліти вирішив у такий спосіб перевірити, наскільки безпечні капчі великих ресурсів. Для тестування були обрані ті інтернет-сайти, які є найбільш відвідуваними за версією відомого сервісу статистики. Кандидатами на участь у тестуванні стали такі монстри як Wikipedia, eBay, а також провайдер капч reCaptcha.

Якщо розглядати в загальних рисахпринцип функціонування програми, він досить простий. Вихідна капча надходить у систему попередньої обробки зображень, що очищає капчу від будь-яких шумів і спотворень і за конвеєром, що передає отримане зображення OCR-системі, яка намагається розпізнати текст на ньому. TesserCap має інтерактивний графічний інтерфейс і має такі властивості:

  1. Має універсальну систему попередньої обробки зображень, яку можна налаштувати для кожної окремої капчі.
  2. Включає систему розпізнавання Tesseract , яка витягує текст із попередньо проаналізованого і підготовленого CAPTCHA-зображення.
  3. Підтримує використання різних кодувань у системі розпізнавання.

Думаю, загальний сенсзрозумілий, тому пропоную подивитися, як це виглядає. Універсальність утиліти не могла не призвести до ускладнення інтерфейсу, тому вікно програми може ввести в невеликий ступор. Отже, перед тим як переходити безпосередньо до розпізнавання капч, пропоную розібратися з її інтерфейсом та закладеним функціоналом.


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

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, що починається з параметра tessedit char 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, відповідний колірний компонент не змінюється.
  2. Якщо значення не дорівнює -1, всі знайдені компоненти вказаного кольору (червоний, зелений або синій) змінюються відповідно до введеного значення. Значення 0 видаляє компонент, значення 255 встановлює його максимальну інтенсивність і т.д.

Етап 3. Градація сірого (Шкала яскравості)

На третьому етапі всі зображення конвертуються зображення в градаціях сірого. Це єдиний обов'язковий етап перетворення зображень, який не можна пропустити. Залежно від вибраної кнопки виконується одна з наступних дій, пов'язаних з колірною складовою кожного пікселя:

  1. Average -> (Red + Green + Blue)/3.
  2. Human -> (0.21 * Red + 0.71 * Green + 0.07 * Blue).
  3. Середня кількість мінімальних і максимальних кольорових компонентів -> (Мінімум (Red + Green + Blue) + Maximum (Red + Green + Blue))/2.
  4. Minimum -> Minimum (Red + Green + Blue).
  5. Maximum -> Maximum (Red + Green + Blue).

Залежно від інтенсивності та розподілу колірної складової CAPTCHA будь-який з цих фільтрів може покращити вилучене зображення для подальшої обробки.


Етап 4. Згладжування та різкість

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

  1. Фіксовані маски. За замовчуванням TesserCap має шість найпопулярніших масок зображення. Ці маски можуть згладжувати зображення або збільшувати різкість (перетворення Лапласа). Зміни відображаються відразу після вибору маски за допомогою кнопок.
  2. Користувальницькі маски зображення. Користувач також може налаштувати маски обробки зображень, вводячи значення в числові поля і натискаючи кнопку Save Mask. якщо сума коефіцієнтів у цих віконках менша за нуль, видається помилка і маска не застосовується. При виборі фіксованої маски не потрібно використовувати кнопку Save Mask.

Етап 5. Вводимо відтінки сірого

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

  1. Залишити без зміни (Leave As Is).
  2. Замінити білим (White).
  3. Замінити чорним (Black).

Завдяки цим опціям можна контролювати різні діапазонивідтінків сірого, а також скорочувати/видаляти шум шляхом, змінюючи відтінки сірого у бік білого або чорного.

Етап 6. Налаштування відсікання (cutoff)

Цей фільтр будує графік залежності значення рівня сірого від частоти народження і пропонує вибрати відсікання. Принцип роботи фільтра, що відсікає, показаний нижче в псевдокоді:

If (pixel's grayscale value<= Cutoff) pixel grayscale value = (0 OR 255) ->в залежності від того, яка опція обрана (<= или =>: 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 ти передаєш сервісу зображення, а через нетривалий час повертає рішення. Вирішує капчу реальна людина(наприклад, з Китаю), отримуючи за це свою копійчину. Тут уже жодного захисту немає. 🙂