Распознавание капчи что это
Четыре сервиса для распознавания капчи: обзор и сравнение
Капча — это тест, позволяющий отличить робота от человека, установленный на сайте. Эти тесты были придуманы для защиты от спама и вредоносных ботов. Например, капча защищает соцсети и форумы от массового постинга рекламных или оскорбительных комментариев. С капчей сталкиваются и в ситуациях, когда не имеют ввиду ничего плохого — при парсинге информации из соцсетей или при проверке позиций в поисковиках. Различные системы статистики — Google Analytics или Wordstat от Яндекс — выдают капчу, чтобы снизить нагрузку на свои серверы. Работа многих полезных онлайн-сервисов основана на массовых запросах к поисковым системам и, чтобы пользователям не пришлось долго ждать результата, они тоже используют программы и сервисы для распознавания капчи.
Основные критерии, которые важны при выборе сервиса — набор распознаваемых капч, скорость и, разумеется, цена. Чтобы разобраться, что в данный момент предлагает рынок, сравним три онлайн-сервиса и одну программу: RuCaptha (они же 2captcha), Антикапча (ex-Антигейт), DeathByCaptcha, XEvil.
Так как капчи чаще всего разгадывают живые люди, цена для сервисов зависит от загрузки и сложности самой капчи. Простые текстовые — самые дешевые, ReCaptсha с картинками от Google или GeeTest с ребусами обойдутся заказчику дороже. Вариант с абонентской платой удобен, если вы постоянно парсите очень большие объемы информации, во всех остальных случаях предпочтительнее платить за каждую разгаданную капчу.
RuCaptha
От 18, но не более 44 рублей за 1000 решений простых капч, цена складывается честно — в зависимости от нагрузки на сервис; большие капчи — 50 рублей за 1000 решений; ReCaptcha v2 token: 160 рублей за 1000 решений — самый дорогой вариант. Цена фиксированная, но за большие объемы можно получить скидку. Абонентской платы нет.
Антикапча
От 40 рублей за 1000 решений простых капч, reCaptcha будет стоить уже от 130 рублей за 1000 решений. Абонентской платы также нет. Цена порой значительно выше, чем у ближайшего конкурента, RuCaptсha:
DeathByCaptcha
От 91 рубля за 1000 решений, но есть специальные предложения для премиум-пользователей.
XEvil
Бесплатная версия с ограничениями по скорости и невысокой точностью, есть вариант с высокой скоростью и точностью распознавания, но только для владельцев лицензии XRumer. Как правило, если пользователь ищет решение для разгадывания капчи, остальная функциональность XRumer может не пригодиться, так что получается очень дорого — стандартная лицензия стоит 14000 рублей. Есть абонентская плата.
Какие капчи решает сервис
Все представленные в обзоре сервисы решают наиболее распространенные капчи, но есть нюансы. В любом случае, подбирать сервис нужно в зависимости от ваших потребностей — парсинг выдачи, массовое распространение комментариев в блогах и на форумах или массфолловинг в соцсетях.
RuCaptсha
Простые текстовые, графические ReCaptcha V2, KeyCaptcha, FunCaptcha, reCaptcha V3 и многие другие, а недавно появилась возможность разгадывать GeeTest. Кстати, RuCaptcha умеет распознавать чеки, анкеты, документы и прочие типовые изображения.
Антикапча
Те же простые текстовые капчи, ReCaptcha V2, Funkaptcha, GeeTest.
DeathByCaptcha
Как сообщают разработчики, решает любые виды капч, но не поддерживает капчи к русскими буквами.
XEvil
Если верить информации на официальном сайте, разгадывает более 8 тысяч видов капч. Некоторые капчи, например, популярная ReCaptcha V2, поддерживаются только в платной версии программы, которую можно приобрести вместе с XRumer. Для разгадывания некоторых видов капч использует другие сервисы. Эмулирует работу rucaptcha.com и других капча-сервисов, при этом вносит в файл hosts директивы 127.0.0.1 rucaptcha.com или 127.0.0.1 anti-captcha.com, но после себя не удаляет эти записи. В итоге пользователь, попробовавший XEvil, уже не может зайти на сайты других капча-сервисов, пока не проверит hosts. Неудобный момент.
Скорость работы
Скорость принципиально важна, если вы работаете с большими объемами информации или разрабатываете сервис для пользователей, которым некогда ждать.
RuCaptha
Среднее время решения — менее 9 секунд.
Антикапча
Если верить информации, опубликованной на официальном сайте, среднее время распознавания простых капч — 8-9 секунд. Тем не менее, при большой нагрузке на сервис заявленная скорость доступна только при установке более высокой цены за разгадывание капчи, чем у других пользователей, сервис работает по принципу аукциона. Если тратить много денег вы не готовы, придется подождать.
DeathByCaptcha
Среднее время распознавания — 15 секунд, что очень много в сравнении с другими сервисами.
XEvil
Для бесплатной версии среднее время распознавания — 1 секунда. Очень быстро в сравнении с другими сервисами, но не стоит забывать, что программа работает без участия людей, поэтому качество и возможности распознавания ограничены.
Точность распознавания
Простые текстовые капчи хорошо разгадывают почти все сервисы, сложности начинаются, когда капча чувствительна к регистру или представляет собой изображение. В этом случае однозначно предпочтительны сервисы, которые используют ручной труд.
RuCaptha
Точность распознавания капч — около 99%, есть возможность получить 100% распознавание, когда одну капчу разгадывает несколько человек.
Антикапча
Так же, около 99%, используется работа живых людей.
DeathByCaptcha
Средняя точность на момент написания этого обзора, отображенная на сайте — 85%.
XEvil
В зависимости от версии программы, 60-80% или 90-100%.
API используют для программного взаимодействия с сервисами распознавания капчи. Сервисы интегрируются с программным обеспечением пользователя, чтобы автоматизировать разгадывание капч.
RuCaptha
Антикапча
DeathByCaptcha
Есть, но информация доступна только для зарегистрированных пользователей, которые уже сделали заказ. Не очень удобно, если вы только принимаете решение об использовании сервиса.
XEvil
Интерфейс, доступность информации, поддержка
Самые важные критерии выбора решения для распознавания капчи — цена, скорость и точность, но довольно сложно работать с сервисом, если не получается найти нужную информацию или связаться с технической поддержкой.
RuCaptha
Простой и понятный для использования сайт, есть разделы для заказчиков и для людей, желающих заработать на разгадывании капчи. Полная информация об API и других возможностях, а также есть форум для заказчиков, где можно уточнить любые вопросы. В любой момент можно посмотреть статистику по решению капч — цена за 1000, средняя скорость решения, загрузка работников. Круглосуточная поддержка и очень лояльное отношение к пользователям:
Антикапча
Понятный интерфейс, доступная статистика работы сервиса онлайн, информация об API, техподдержка. Правда, иногда возникают курьезные ситуации. Например, некоторое время назад в личном кабинете можно было увидеть такое сообщение:
DeathByCaptcha
Поддержка только для тех, кто использует API.
XEvil
Информации о сервисе на сайте не много, есть небольшой раздел FAQ.
Выводы
Все четыре предложения имеют похожую функциональность и универсальны, основные отличия — цена и скорость и точность. Можно с уверенностью сказать, что в сравнении по этим параметрам лидирует RuCaptcha. А дополнительные фишки вроде разгадывания анкет или форума для пользователей будут приятным бонусом.
Решение главных проблем CAPTCHA
Как часто вы сталкиваетесь с тем, что не можете ввести предлагаемую капчу с первого раза? Теперь подумайте, какие трудности могут возникнуть у современного человека, который разговаривает с компьютером «на Вы»? Для него преграда в виде reCAPTCHA становится сильнее, чем для робота.
Однако трудность распознавания капчи человеком является вовсе не самой острой проблемой, как может показаться на первый взгляд. Можно было бы конечно закрыть на это глаза, если бы капча действительно защищала нас от различных автоматизированных систем распознавания. Но это далеко не так!
И я хочу рассказать о средстве, которое решает эти проблемы.
Для того, чтобы создать адекватную защиту для CAPTCHA, необходимо сначала классифицировать способы ее распознавания.
Автоматизированное распознавание капчи
В настоящее время существуют три основных способа автоматизированного распознавания капчи:
1. Использование ошибок в алгоритме защиты
Такой подход направлен на поиск логических ошибок (уязвимостей), позволяющих корректно отправлять форму, без распознавания самой капчи.
Это самый простой способ обхода защиты, но его можно применить в основном, только в простеньких самодельных решениях.
Наиболее популярной ошибкой является передача проверочного кода капчи через поля формы или cookie в открытом виде, в base64, или в md5-хеше без применения соли.
Атакующему не составит труда его получить, даже если ему придется сгенерировать rainbow-таблицу в соответствии с алфавитом капчи (только 5-тизначные буквы русского языка или только 6-тизначные цифры и т.п.) и сделать сопоставление.
Ошибкой так же считается, когда одна и та же капча может быть разгадана более одного раза. Это касается в основном случаев, в которых сгенерированный иднетификатор капчи действителен в течении 5-10 минут, но ограничений на количество проверок у него нет. Тем самым давая возможность атакующему, который уже знает ответ, многократно использовать идентификатор разгаданной капчи. Можно использовать брутфорс с одним и тем же идентификатором капчи, что, в конечном итоге, приведет к желаемому результату.
2. Автоматическое распознавание
Есть три основных пути успешного автоматического распознавания капчи:
I. Использовать готовые средства оптического распознавания (OCR)
Это самый простой подход, не требующий специальных навыков программирования. Такие программы в основном распространяются бесплатно, и их существует достаточно много: ocropus, cuneiform, tesseract, gocr, orcad и другие.
Атакующему нужно только передать картинку капчи такой программе, где на выходе он получит уже распознанный текст. Обычно такие программные продукты имеют множество тонких настроек, позволяющих сделать распознавание более эффективным.
Именно для предотвращения распознавания подобным образом, применяют различные искажения, скручивания, добавление мусора и т.п.
В данном случае процент распознавания может быть совсем небольшим (всего около 10%), но атакующий все равно добьется успеха.
II. Самописные скрипты с применением библиотек GD, ImageMagick и других
Такие скрипты позволяют очистить картинку от мусора, убрать фон, выровнить текст по вертикали, обрезать картинку, оставив только текст, убрать многоцветность, сделать усреднение цвета и т.д. На практике же полноценное распознавание такими скриптами весьма затруднено.
Гораздо более эффективно можно использовать такой скрипт только для предварительной очистки картинки, оставив сам процесс разбора другим способам.
III. Нейронные сети
Наибольший интерес сейчас представляют именно нейронные сети. Для многих это до сих пор похоже на некую магию.
Нейронные сети стали применяться атакующими, с целью автоматического распознавания любых капч.
Они обучают нейронную сеть, которая способна с высокой степенью вероятности распознать даже самую сложную reCAPTCH’у.
Существует множество различных библиотек для разных языков программирования, которые распространяются бесплатно. Одна из таких библиотек, Fast Artificial Neural Network, ранее освещалась в журнале Харкер.
3. Полуавтоматическое распознавание с привлечением дешевых человеческих ресурсов
Есть множество сайтов, таких как antigate.com, rucaptcha.com, captchabot.com и т.д., которые предоставляют своим клиентам выгодную услугу. Они принимают от клиента, в автоматическом режиме, картинку с капчей, и через несколько (10-30) секунд выдают правильный, по их мнению, ответ. Процент удачного распознавания в таком случае очень высокий, порядка 90-95%.
Стоит отметить, что у неподготовленного посетителя этот процент намного ниже.
Конечно, первое, что приходит на ум создателям капчи, это ввести русский алфавит и полностью исключить английский.
Некоторые удаляют даже цифры. Но как вы понимаете, эти полумеры не способны дать адекватную защиту и уже в ближайшее время владельцы сервисов перенаправляют трафик с таких капч уже только тем, кто умеет читать по-русски.
Другие же стараются усложнить сами капчи, накладывают различные фильтры, искажения, мусор и т.д., думая, что их распознает робот.
Тем самым они усложняют прочтение и распознавание не только людям занятым в этих сервисах и всевозможным скриптам, но и обычным пользователям, чья подготовка оказывается в разы ниже. Все это начинает напоминать современную медицину, которая борется не с причинами заболеваний, а лишь с их симптомами, в результате чего страдает только пациент.
Основными потребителями таких услуг, в основном, являются крупные SEO-компании, и различного рода информационные агрегаторы, которые в автоматическом режиме получают информацию о статистике по поиску ключевых слов, о позициях в поисковой выдаче, саму поисковую выдачу и т.д. Так же их услугами пользуются всевозможные спаммеры, рассылающие сообщения в социальных сетях, регистрирующие в автоматическом режиме учетные записи в почтовых сервисах, форумах и т.п.
По моему мнению, количество распознаваний капч для целей спама, хоть и носит негативный характер, все же является не основным направлением сбыта такой услуги, являясь всего лишь вершиной айсберга. В то время, как сам айсберг, это — ни что иное, как предоставление доступа к консолидированной информации.
Вот вам пример. В нашей стране информацию по почтовым отправлениям (трекингу), находящимся на территории РФ, можно получить только на государственном сайте Почта России. Год назад они добавили капчу в форму отслеживания отправления, что сделало невозможным получение информации по интересующим отправлениям в автоматическом режиме.
А теперь подумайте, откуда берется на этих сайтах информация по отправлениям, но уже без капчи?
Противостоять таким сервисам очень не просто. Этому способствует несколько факторов:
Все без исключения владельцы сервисов перенесли ответственность за загрузку самих картинок на своих клиентов, что, в конечном итоге, не позволят вычислять ip-адреса, их собственные или людей, которые занимаются самим распознаванием, для последующей блокировки.
Если клиент такого сервиса обладает необходимыми знаниями, то он без труда подключит базу прокси-серверов, для обхода возможных блокировок.
Стоит так же отметить, что не было ни одного сервиса, включая reCAPTCHA, способного эффективно противостоять этому.
Простота распознавания пользователем
Лучшим решением для пользователя будет обычный текст на картинке, добившись того, чтобы использование автоматических способов распознавания существенно усложнилось.
На помощь приходит свойство прозрачности форматов изображений gif или png. Нужно сделать так, чтобы при наложении нескольких частей картинки друг на друга, пользователь мог видеть неискаженный текст. Абсолютно любые браузеры поддерживают эту функцию, и даже IE6.
Теперь немного усложним. Для начала создадим несколько прозрачных изображений, по размерам, сходным с оригиналом, и раскидаем попиксельно все исходное изображение на эти, заранее подготовленные слои. При просмотре каждого отдельного слоя невозможно будет точно сказать, что именно изображено на картинке-оригинале. Автоматически собрать воедино такое решение все еще так же легко.
Продолжим усложнять, и сделаем наши слои случайных размеров и из случайных мест исходного изображения.
Теперь вынесем всю информацию о слоях в отдельный css-файл стилей, который будет описывать положение каждого слоя относительно левого верхнего угла исходного изображения. Однако, нам потребуется как-то идентифицировать слои и отличать их друг от друга. Для этого присвоим всем картинкам случайные идентификаторы, и опишем их.
Пример сформированной html-страницы:
Пример css-файла /captcha/954f836a78de1d510d28ce70fa7b6a4a.css:
В дальнейшем этот процесс можно усложнять до бесконечности — на одних слоях рисовать лишние пиксели, на последующих слоях их закрашивать и т.д.
Не правда ли, все гениальное – просто?!
Защита от автоматизированного распознавания
Большой ошибкой, по моему мнению, является блокирование ip-адресов, которые многократно вводили значения капчей неверно.
Кто угодно может вводить сколько угодно раз неверные значения, и это ни на что не влияет. Капча как раз и рассчитана на такую фильтрацию.
Нужно блокировать только тех, кто уже указал X правильных значений. И разблокировать, если в течении N минут этот пользователь больше не вводил правильных значений.
Иными словами, ip-адрес посетителя сайта, который был замечен за правильным вводом Х капч за последние N минут, автоматически должен получить отказ.
Стоит так же отметить, что такой подход начинает эффективно работать в случае единого, централизованного сервиса.
Идеальным решением является такое, в котором подобные ограничения не являются обязательными, и имеется возможность изменения этих параметров под свои требования.
Кто-то из вас захочет сделать ограничения в 1 капчу раз в 30 минут, кто-то захочет 5 капч в течение 5 часов, а кто-то и вовсе предпочтет отключить проверку.
В случае использования такого ограничения, становится абсолютно не важно, каким способом происходит автоматизированное распознавание капчи.
Любое из них перестает быть эффективным решением.
Вы наверняка спросите: Что мешает использовать огромное множество прокси-серверов?
Прокси-сервера все берут из свободного доступа, с одинаковых сайтов по всему миру. Последний раз, когда мне приходилось ими пользоваться, реально работающими были около 20000 серверов, где 3000 из них работали постоянно.
Процесс поиска/создания собственных прокси-серверов для большинства затруднителен. В этот список попадают те сервера, которые были взломаны брутфорсом, заражены вирусами и т.д. Это специфическая ниша, реально доступная лишь немногим.
Если бы только один атакующий эксклюзивно владел бы такой базой в 20000 ip-адресов, он бы мог претендовать на распознавание 40000 капчей в течение каждого часа.
Это 960000 капчей в сутки – отличный результат!
А теперь представьте, что все атакующие полностью или частично владеют этой базой. Децентрализованное ее использование приведет к перманентному отказу в обслуживание по всем из них.
Рассмотрим пример. Вы только что использовали один ip-адрес для успешного распознавания капчи любым способом, и теперь ждете около полу часа, чтобы не попасть под блокировку, для совершения повторной попытки. Но оказывается, пока вы ждали, кто-то еще использовал этот адрес для ввода капчи на другом интересующем его ресурсе.
Такая попытка обернется ему отказом, так как этот ip-адрес был уже задействован вами несколькими минутами ранее. Вы, дождавшись, когда истечет время, распознаете капчу второй раз, но получаете отказ.
И так все начинает идти по кругу и до бесконечности.
Protection Privacy as a Service
До этого момента это была лишь теория. Но вы можете посмотреть на то, как это работает на практике – http://ppaas.org.
Сервис позволяет защищать любую текстовую информацию, такую как адреса email, телефонные номера и т.п.
UPD: Пожалуйста читайте пост внимательно, графическое исполнение, это просто для удобства прочтения, основная защита от автоматизированного распознавания заключается в другом.
Спасибо за внимание. Вместе мы сделаем этот мир лучше.
Как это работает: CAPTCHA
Сколько лет существует Хабр — столько лет на нём регулярно появляются посты про очередную капчу — будь то скрипт генерации картинки, новая идея капчи с котиками и тому подобное. Самый свежий пример того, что человек не совсем понимает — как же всё таки должна работать капча (см. текст поста и последние комментарии), но при этом делится своими заблуждениями с сообществом. Складывается ощущение, что капча — это такая terra incognita для большинства разработчиков — как для тех, кто просто прикручивает её к очередной форме в надежде на то, что она будет работать «из коробки», так и для тех кто придумывает капчи вроде тех, на которых надо выбрать картинку с котиком из нескольких фото.
Статья содержит полезную информацию для тех, кто использует капчу на своём сервере, вместо того чтобы довериться стороннему сервису вроде reCaptcha.
Captcha
Согласно своему определению, captcha — это автоматизированный публичный тест Тьюринга (тест который может пройти человек, но не компьютер). В статье я буду рассматривать свойтсва капчи на примере самого распространненого её вида — текста на картинке, хотя почти все написанное одинаково применимо к любому виду капчи.
Два главных свойства капчи
Любая капча должна обладать двумя свойствами, без которых она не будет работать:
Устойчивость к распознаванию — свойство, защищающее капчу от распознавания алгоритмом — например системой распознавания текста. Гарантирует то, что человек сможет прочитать текст на картинке, а компьютер нет.
Антипример: стандартная капча форумов phpBB 2.x таким свойством не обладала — из-за относительной простоты распознавания появились скрипты, которые спамили все подряд форумы вынуждая веб-мастеров менять капчу на более стойкую.
Устойчивость к угадыванию — свойство капчи, не позволяющее угадать её значение за небольшое число попыток (менее 1000). Если набор возможных значений капчи невелик, программе не составит труда угадать её подбором вместо распознавания.
Антипример: арифметическая капча вроде «1+2» (перебор чисел от 1 до 20 в скором времени даст результат).
Антипример: выбрать из нескольких картинок ту, на которой изображён котик.
Проверка капчи
Значение для проверки должно храниться на сервере, а не передаваться вместе с картинкой в браузер. Для сопоставления посетителя и правильного значения капчи необходимо использовать некий ключ, который передаётся вместе с капчей (идентификатор сессии, номер капчи и т.п.)
Антипример: если передавать саму капчу и значение для ее проверки (в том числе зашифрованное), то человеку достаточно один раз распознать такую капчу и далее использовать комбинацию «ответ»-«значение для проверки» в своём скрипте (по ссылке в начале поста как раз такой случай)
После проверки, сохраненное значение капчи необходимо удалить. Если не сделать этого, злоумышленник сможет использовать данное значение снова неограниченное число раз. Да, при обновлении страницы с формой обновляется и капча (либо при генерации формы, либо при генерации картинки), вот только скрипт может не загружать форму снова (надо упомянуть, что это не актуально если на сайте используются одноразовые csrf-токены для форм).
Антипример: гипотетическая форма логина, в которой достаточно один раз ввести капчу правильно, и далее подбирать пароль скриптом, избегая перегенерации капчи на сервере.
Пуленепробиваемая капча
Защита от перебора. Если ваша капча устойчива к распознаванию, но не очень устойчива к перебору (например на ней надо прочитать всего 3-4 цифры), желательно ограничить число неправильных ответов «с одного ip» / «для одного логина» / etc. Такие ограничения необходимо проверять ДО проверки самой капчи (то есть даже в случае правильно введенной капчи, при наличии ограничения она не должна считаться пройденной) иначе оно не будет препятствовать перебору.
Защита от DoS. При генерации капчи на своем сервере, надо понимать что это удобный вектор проведения DoS атак (которую, в отличие от DDoS, может устроить любой школьник). Для защиты можно ограничить число генерации капчи для одного ip, кэшированием капч и т.д. Подробнее про это
Защита от распознавания. Если вы выбираете капчу, или вдруг собираетесь написать её сами, желательно понимать какая капча более защищена от распознавания. Существуют готовые универсальные скрипты распознавания капчи, работающие по принципу OCR, а в случае если ваш сайт заинтересует спамеров есть риск, что будут использовать / писать скрипт конкретно под вашу капчу. Последнее правда относится больше к сайтам уровня Яндекс или vk, а вот вариант с защитой от банальных OCR желательно предусмотреть.
Защита от антигейтов. Если говорить формально, то капча как тест Тьюринга не обязана защищать вас от антигейтов, так как в этом случае её будет распознавать человек. С практической же точки зрения, этот вопрос весьма актуален и защищаться как-то надо.
Тут нет и не может быть «золотого стандарта» (ибо в таком случае антигейты внедрят его поддержку), поэтому вы вольны дополнять капчу любыми ухищрениями, чтобы сделать её распознавание через антигейт невозможным. Например:
— нестандартная капча (сбор паззла, поворот изображения, клик по области на фото и т.п.);
— кириллическая капча — самое простое решение, но имеет ряд минусов: подходит только для проектов с русскоязычной аудиторией, есть антигейты с поддержкой кириллицы;
— использование виртуальной клавиатуры рядом с капчей для ввода нестандартных символов или фигур (может быть неудобно пользователям мобильных);
Юзабилити
Не просите ввести капчу, если вы уже убедились, что перед вами человек. Тут однако, надо быть осторожным, чтобы форму нельзя было использовать скриптом неограниченное число раз после однократного ввода капчи человеком.
Пример: форма регистрации. Если я где-то регистрируюсь, и забыл ввести поле «почтовый индекс», но правильно ввёл капчу — не надо показывать мне новую. Потратьте 10 минут на то, чтобы сохранить где-то у себя, что вот эту конкретную форму сейчас пытается заполнить живой человек.
Для облегчения распознавания человеком: не используйте в капче одновременно буквы и цифры, не используйте одновременно прописные и строчные буквы, исключите похожие символы.
Отказ от использования капчи
Лучшая капча — отсутствие капчи. Там где можно отказаться от её использования — это надо сделать. Возможно для этого придется реализовать дополнительные лимиты и проверки, но пользователи скажут вам спасибо.
Но тут надо быть очень осторожным. Например: форма регистрации без капчи, с полем email на который приходит письмо с активацией. Без дополнительных средств защиты такую форму могут завалить «левыми» адресами, и ваш сайт включат в черные списки почтовые службы. В таком случае можно обходиться без капчи, но только если у вас есть другой рубеж защиты, вроде лимита по ip.
Кому то информация в этом топике покажется очевидной, но если бы я не сталкивался с примерами непонимания этих простых принципов в жизни, в том числе у опытных коллег-разработчиков, я бы не стал тратить время на написание этого текста.