Лайфхаки

Маленькие, полезные хитрости

Эффективные способы обхода капчи с помощью Python

01.03.2024 в 23:05

Эффективные способы обхода капчи с помощью Python

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

Для обхода капчи можно использовать различные методы, один из самых популярных - это использование сторонних сервисов распознавания капчи. Например, сервиса AntiCaptcha, RuCaptcha, 2Captcha и другие. Эти сервисы предоставляют программный интерфейс(API) для отправки изображения с капчей и получения распознанного текста.

Связанные вопросы и ответы:

1. Какие способы обхода капчи на Python существуют

Для обхода капчи на Python существует несколько способов, включая использование библиотеки Pillow для распознавания изображений, использование сервисов распознавания капчи (например, Anticaptcha или 2Captcha), использование машинного обучения для создания собственного решателя капчи и использование методов обхода защиты, таких как использование скрытых полей или CSS-трюков.

2. Как работает обход капчи с использованием библиотеки Pillow

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

3. Какие сервисы распознавания капчи можно использовать на Python

На Python можно использовать сервисы распознавания капчи, такие как Anticaptcha, 2Captcha, RuCaptcha и другие. Эти сервисы предоставляют API для отправки изображения с капчей и получения результата распознавания в виде текста.

4. Как создать собственный решатель капчи с использованием машинного обучения на Python

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

5. Какие методы обхода капчи можно использовать на Python, кроме библиотек и сервисов распознавания

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

6. Какие могут быть последствия при обходе капчи на Python

При обходе капчи на Python могут возникнуть различные последствия, такие как блокировка IP-адреса, бан аккаунта, ухудшение репутации пользователя, негативное воздействие на SEO позиции сайта и другие проблемы связанные с нарушением правил использования ресурса.

7. Как выбрать наиболее эффективный способ обхода капчи на Python

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

Какие существуют методы обхода капчи

Какие существуют методы обхода капчи. Обход капчи из-за ошибок реализации

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

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

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

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

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

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

Как можно использовать библиотеки Python для решения капчи

В целом, можно сказать, что модель готова. НО ! Тут, как всегда, не без сюрпризов. А сюрпризы в данном случае: 2ГБ библиотеки Tensorflow, 10-15 секунд на её import , долгое время работы и т.п.

В общем, после длительных поисков, было решено переходить на формат onnx . А что, стильно, модно, молодёжно, подумал я. Но, естественно, с 1-го раза ничего не заработало

Конвертируем модель в ONNX

Сначала я попытался использовать keras2onnx , но он у меня не заработал. Погуглив ошибку, я пришёл к выводу, что во всём виновата windows (о великие линукса ), перешел на виртуалку, попробовал на ней и…. Опять ничего не заработало (после 4х часов попыток заставить что-либо двигаться).

Далее на очередь пришёл tf2onnx . Но заработал он у меня только с 3-го раза: в первый раз, после установки, оказалось, что python3.10 не поддерживается, затем, на 2й раз — что я обучал модель на слишком новой версии tensorflow , которую tf2onnx пока не поддерживает (вот зараза).

Какие техники машинного обучения помогают в обходе капчи

Гостевая статья

Машинное обучение (machine learning, МО) теперь стало больше, чем модным словом. Учитывая огромный диапазон задач, которые, например, решает машинное обучение на Python (питон), вопрос обхода капчи — лишь очередная трудность. Рассматривая возможности свёрточных нейронных сетей, мы обнаружили большой потенциал в решении этой проблемы. Пока что пользователей не устраивают текущие показатели точности. Но давайте же подробно разберемся, какие инструменты у нас есть для решения этой проблемы и какие из них наиболее эффективны.

Что такое капча?

Термин “капча” больше не является новым в Интернет-сообществе. Эта надоедливая проверка “на человечность” присутствует на множестве сайтов. Аббревиатура CAPTCHA означает в переводе “полностью автоматизированный публичный тест Тьюринга, отличающий компьютеры от людей”. Капчу можно представить, как компьютерную программу, разработанную для отделения человека и машины, чтобы предотвратить любой вид нежелательной деятельности на веб-сайтах. Предположение, которое лежит в основе концепции капчи, состоит в том, что только человек способен пройти этот тест, а боты или автоматизированные скрипты потерпят неудачу.

Зачем автоматизировать решение капчи?

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

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

Классификация популярных методов автоматического решения капч

Популярные методы, доступные пользователям для решения как обычных капч, так и ReCaptcha:

  1. Боты с поддержкой оптического распознавания символов — в этом подходе используется метод оптического распознавания символов (OCR), что позволяет решать капчи автоматически. Существуют такие инструменты, как Ocrad и tesseract и они действительно решают капчи, но с очень низкой точностью.
  2. Машинное обучение — супервизорный способ, состоящий из сверточной нейронной сети (CNN), а также фреймворков и библиотек Python, таких как Keras и tensorflow. Мы можем обучить модели глубоких сверточных нейронных сетей находить и распознавать буквы и цифры на изображаемых капчах.
  3. Онлайн-сервисы по решению капч — в таких сервисах решением капч занимаются реальные люди и такие работники постоянно доступны онлайн. Когда вы отправляете запрос на решение капчи, сервис пересылает капчу работникам, которые её решают и возвращают решение вам.

Далее мы рассмотрим эффективность каждого из методов.

Анализ эффективности метода на основе OCR

Хотя метод OCR и является экономически выгодным, когда речь идет о решении большого количества простых капч, он всё же примитивен, как чайник и не обеспечивает требуемой точности. Решения на основе системы оптического распознавания символов стали редкостью после выхода Google ReCaptcha V3. Таким образом, боты с поддержкой OCR не созданы для того, чтобы решать капчи, используемые такими титанами, как Google, Facebook или Twitter — это потребует более совершенных методов.

Решения на основе оптического распознавания символов корректно распознают 1 из 3 простых капч.

Анализ эффективности метода на основе МО

Давайте посмотрим, как работают решения на основе машинного обучения:

  • Решение на основе МО использует OpenCV для поиска контуров в изображении и обнаруживает непрерывные области. Изображения предварительно обрабатываются техникой пороговой обработки.
  • Все изображения преобразуются в черно-белые.
  • Изображение капчи разбивается на символы, используя функцию OpenCV findContour (). Обработанные изображения теперь представляют собой отдельные буквы и цифры.
  • Затем всё это передаётся модели CNN, чтобы обучить её.
  • Обученная модель CNN готова решать настоящие капчи.

Какие популярные сервисы предоставляют API для обхода капчи

Cloudflare  —  это служба безопасности, которая помогает защитить сайты от онлайн-угроз, таких как хакеры и боты. Она работает, располагаясь перед сайтом и действуя как барьер или “щит”, блокирующий вредоносный трафик и открывающий доступ к сайту легитимным посетителям.

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

  • Файрвол, который блокирует известные вредоносные IP-адреса и ботов.
  • DDoS-защита, обнаруживающая и блокирующая распределенные атаки типа “отказ в обслуживании”.
  • SSL/TLS-шифрование (шифрование данных при их передаче между сайтом и браузером посетителя), которое позволяет сохранить конфиденциальную информацию, например пароли и номера кредитных карт.

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

Один из способов обойти такую защиту  —  техника под названием “обход Cloudflare”. Она заключается в определении IP-адреса сервера, стоящего за Cloudflare, и последующем установлении прямого соединения с этим сервером. Это можно сделать с помощью таких инструментов, как Censys, Shodan и CloudFail.

Другой способ заключается в использовании техники под названием “распознавание Cloudflare”. Она предполагает использование скрипта или инструмента для автоматического определения IP-адреса сервера, стоящего за Cloudflare. Это можно сделать с помощью таких инструментов, как Cloudflare Resolver, Cloudflare и Cloudflare Resolver API.

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

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

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

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

Как обеспечить безопасность при обходе капчи

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

Это те самые нудные картинки, на которых нужно соединить пазлы в единое изображение, разобрать кривые и раскиданные по всей области теста буквы или слова и вписать их в нужное поле. Иногда можно просто поставить галочку «Я не робот» и продолжить дальше взаимодействовать с сайтом.

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

Google (reCAPTCHA) и Intuition Machines (hCAPTCHA) — два самых популярных поставщика капчи. Тесты призваны для защиты от:

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

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

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

Можно ли использовать ботов для решения капчи

Помним, что 100% результата не будет. В целом, распознавание 5 чисел занимает около 10 сек.

Итак, подключим файл для распознавания к нашему основному коду:

import sys sys.path.append('путь до директории, где лежит директория с обученной моделью') import captcha

Следующая задача – выяснить все необходимые координаты для работы эмулятора мыши.

import pyautogui import keyboard while True: if keyboard.is_pressed('space'): mouse_x, mouse_y = pyautogui.position() print(mouse_x, mouse_y)

Суть проста: наводим мышкой на нужную позицию, нажимаем «пробел» и получаем нужные нам координаты. Перейдем к основному коду эмулятора:

Пишем функцию для упрощения общего кода.

def click(x, y, n, key): pyautogui.click(x, y, button=key) time.sleep(n) time.sleep(2) # Переходим в папку с проектом, где лежит обученная модель os.chdir(путь до директории проекта\project') # Формируем два датафрейма: в первом содержится наш файл, а второй будет содержать итоговую информацию после отработки кода. df1 = pd.read_excel(r'путь до excel-файла\значения_для_проверки_.xlsx') df1=df1<:> df2 = pd.DataFrame()

Логика проста: данные из столбца нашего Excel-файла будут вноситься в поле ввода на веб-ресурсе, после – распознается и вводится капча, нажимается кнопка проверки и текстовый результат проверки вносится во второй датафрейм, формируя таким образом таблицу Excel с итоговыми данными, взятыми из веб-ресурса.

Можно ли использовать ботов для решения капчи? В целом, ответ на этот вопрос - да, но с ограничениями. Ведь 100% результата не будет. В целом, распознавание 5 чисел занимает около 10 сек.

Подключение файла для распознавания

Следующая задача – выяснить все необходимые координаты для работы эмулятора мыши.

Определение координат мыши

Суть проста: наводим мышкой на нужную позицию, нажимаем «пробел» и получаем нужные нам координаты.

Основной код эмулятора

Пишем функцию для упрощения общего кода.

Логика проста: данные из столбца нашего Excel-файла будут вноситься в поле ввода на веб-ресурсе, после – распознается и вводится капча, нажимается кнопка проверки и текстовый результат проверки вносится во второй датафрейм, формируя таким образом таблицу Excel с итоговыми данными, взятыми из веб-ресурса.

for i in range(0, len(df1)): # 1) Поле ввода значения из таблицы excel: click(174, 461, 1, 'left') pyautogui.typewrite(str(df1 )) # вводит в поле ввода из столбца «id» значение n-ой строки time.sleep(2) # 2) Блок работы с капчей while True: click(150, 679, 1, 'left') # поле ввода капчи click(361, 673, 2, 'right') # ПКМ по изображению click(501, 688, 3, 'left') # скачать click(582, 565, 5, 'left') # сохранить # Изображение скачено, теперь необходимо эту распознать капчу. Для этого мы используем ранее подключенный созданный нами модуль numbers = captcha.content() click(150, 679, 3, 'left') # поле ввода капчи pyautogui.typewrite(numbers) # вводит распознанную капчу time.sleep(3) click(323, 773, 5, 'left') # кнопка «проверить» pyperclip.copy('') # очищаем буфер обмена # 3) Следующий блок проверки. Если капча введена не верно, то возвращаемся в начало цикла pyautogui.click(140, 713, button='left', clicks=3) # проверка time.sleep(3) pyautogui.hotkey('ctrl', 'c') # копируем valid = pyperclip.paste() time.sleep(1) if re.findall(r'ведите\s', valid): os.remove("number.jpg") else: os.remove("number.jpg") break # 5) Если капча введена верно, то сохраняем значения в переменные. pyautogui.click(190, 156, button='left', clicks=3) time.sleep(2) pyautogui.hotkey('ctrl', 'c') time.sleep(2) result = pyperclip.paste() time.sleep(1) pyautogui.click(177, 187, button='left', clicks=3) time.sleep(2) pyautogui.hotkey('ctrl', 'c') time.sleep(2) description = pyperclip.paste() time.sleep(1) # 6) Блок формирования результирующей таблицы. Формируем строку в новый датафрейм. new_row = {'id': df1 , 'number': df1 , 'text': result, 'description': description} print(i, new_row) df2 = df2.append(new_row, ignore_index=True) pyautogui.scroll(1000) # Перемещаемся снова наверх.

Какие сценарии использования обхода капчи на Python можно выделить

Мы все сталкивались с этими разочаровывающими проблемами на веб-сайтах, где нам нужно было доказать, что мы не роботы — они обычно включают визуально искаженные буквы, цифры или изображения, которые пользователи должны идентифицировать и правильно вводить, чтобы получить доступ к определенным частям веб-сайта. Это CAPTCHA, которые представляют собой меры безопасности, используемые веб-сайтами для различения ботов/скраперов и законных пользователей.

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

Но что побуждает веб-сайт генерировать CAPTCHA в первую очередь (что, следовательно, блокирует нашу попытку парсинга)? Давайте рассмотрим некоторые причины этого:

  • Отпечатки пальцев браузера . Веб-сайты могут использовать такие методы, как снятие отпечатков пальцев браузера или устройства, для идентификации ботов или парсеров. Эти методы анализируют различные атрибуты браузера и устройства пользователя, такие как разрешение экрана, установленные шрифты и плагины браузера, для создания уникального отпечатка пальца, содержащего информацию о конфигурации браузера пользователя, а также о программно-аппаратной среде. При обнаружении отпечатка пальца скребка веб-сайт может ответить CAPTCHA для проверки пользователя.
  • Необычный пользовательский агент . Веб-скраперы часто используют стандартные или идентифицируемые строки пользовательского агента, что делает их легко обнаруживаемыми веб-сайтами. Когда веб-сайт обнаруживает нестандартный или подозрительный пользовательский агент, он может активировать CAPTCHA для проверки легитимности запроса.
  • Отслеживание файлов cookie. Веб-сайты могут использовать файлы cookie для отслеживания действий пользователей и выявления ботов. Парсеры могут неправильно обрабатывать файлы cookie или могут не иметь достоверной информации о сеансе, что может побудить веб-сайт представить CAPTCHA для проверки личности пользователя.
  • Движение мыши и шаблоны кликов . Современные CAPTCHA, такие как ReCaptcha, могут анализировать движения мыши и шаблоны кликов, чтобы определить поведение, подобное человеческому. Движения ботов часто предсказуемы, что может привести к показу CAPTCHA.