Как обойти капчу при парсинге
Перейти к содержимому

Как обойти капчу при парсинге

  • автор:

Обход капчи при парсинге в PHP

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

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

Результатом данной операции будет картинка. Ее можно сохранить в файл с помощью file_put_contents . После этого капчу можно разобрать ее каким-либо образом (для начала вручную).

Запрос на капчу обязательно следует слать через CURL, а не file_get_contents , так как нам обязательно следует принимать и оправлять куки, ведь капча работает на сессиях PHP.

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

Не ошибитесь и не сделайте лишнего запроса к капче!

Обход капчи

А-Парсер не решает капчу самостоятельно. Для обхода капчи А-Парсер использует прокси и сервисы разгадывания капч.
В зависимости от вида каптчи поддерживается работа с такими онлайн сервисами:

И оффлайн ПО — XEvil, CapMonster.

Для работы с сервисами разгадывания капч А-Парсер имеет пять встроенных парсеров:

  • Util::AntiGateUtil::AntiGate — разгадывает каптчи в виде картинок с надписями букв/цифр/слов
  • Util::ReCaptcha2Util::ReCaptcha2 — разгадывает Google ReCaptcha v2
  • Util::ReCaptcha3Util::ReCaptcha3 — разгадывает Google ReCaptcha v3
  • Util::hCaptchaUtil::hCaptcha — разгадывает каптчи hCaptcha
  • Util::TurnstileUtil::Turnstile — разгадывает каптчи Cloudflare Turnstile

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

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

Настройка​

Util::AntiGate

Все парсеры для разгадывания каптч настраиваются аналогично, ниже показана настройка на примере Util::AntiGate .

Настройка пресета парсера каптчи​

Util::AntiGate

Открыть Настройки и далее открыть Настройки парсеров. Выбрать в выпадающем списке парсер Util::AntiGate .

Открыть настройки Антигейта

  • Выбрать нужный Provider.
  • Парсер автоматически использует правильный url выбранного сервиса, но при необходимости его можно переопределить в поле Provider url.
  • Если требуется выбранным сервисом, то ключ доступа можно указать в Client key.

После чего сохраняем настройки как новый пресет и вводим навание (в примере он назван My Work Captcha Solver).

Шаг 1 - Указать ключ доступаШаг 1 - Добавить новый пресет

Подключение к выбранному парсеру через переопределение​

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

Выбор пресета через override

Подключение к выбранному парсеру через пресет настроек​

SE::Yandex::WordStat

Переходим в Редактор заданий и выбираем парсер в котором будем использовать AntiGate, например SE::Yandex::WordStat .

Переходим в его настройки.

Шаг 2 - Выбор парсера в Редакторе заданий

В настройках ниже в пункте Пресет AntiGate выбираем наш созданный ранее пресет (в примере он был назван My Work Captcha Solver).

Сохраняем все как новый пресет (в примере он назван Use My Work Captcha Solver).

Шаг 3 - Выбор пресета Антигейта в настройках парсераШаг 3 - Добавить новый пресет

SE::Yandex::WordStat

Последним шагом нужно вернуться в Редактор заданий и выбрать последний созданный пресет с настроенным Антигейтом (в примере он был назван Use My Work Captcha Solver) для парсера SE::Yandex::WordStat .

Шаг 4 - Выбор пресета парсера с настроеным Антигейтом

Сервисы разгадывания​

RuCaptcha​

RuCaptcha поддерживает следующие типы каптч:

  • Click CAPTCHA
  • Rotate CAPTCHA
  • reCAPTCHA (v2/v3/Invisible/Enterprise)
  • KeyCAPTCHA
  • Capy Puzzle CAPTCHA
  • Cloudflare Turnstile
  • Amazon CAPTCHA
  • Audio CAPTCHA
  • Arkose Labs CAPTCHA
  • MTCaptcha
  • DataDome CAPTCHA
  • CyberSiARA CAPTCHA
  • Yandex CAPTCHA
  • VK CAPTCHA

Anti-Captcha​

  • Recaptcha V2
  • Recaptcha V3
  • FunCaptcha
  • GeeTest
  • Hcaptcha
  • Turnstile

2captcha​

2captcha поддерживает следующие типы каптч:

  • Click CAPTCHA
  • Rotate CAPTCHA
  • reCAPTCHA V2
  • reCAPTCHA V3
  • KeyCAPTCHA
  • GeeTest CAPTCHA
  • hCaptcha
  • FunCaptcha
  • Capy Puzzle CAPTCHA
  • Lemin CAPTCHA
  • Cloudflare Turnstile
  • Audio CAPTCHA
  • Arkose Labs CAPTCHA
  • Amazon CAPTCHA
  • MTCaptcha
  • DataDome CAPTCHA
  • CyberSiARA CAPTCHA

CapMonster​

CapMonster поддерживает следующие типы каптч:

  • reCAPTCHA (v2, invisible, v3)
  • и т.д.

CapMonster cloud​

  • reCAPTCHA v2
  • reCAPTCHA v3
  • reCAPTCHA Enterprise
  • hCaptcha
  • hCaptcha Enterprise
  • FunCaptcha
  • GeeTest
  • Cloudflare Turnstile
  • Cloudflare Bot Challenge
  • Yandex SmartCaptcha

CapSolver​

CapSolver поддерживает следующие типы каптч:

  • reCAPTCHA (v2/v3/Enterprise)
  • FunCaptcha
  • DataDome
  • Anti-bot Solution
  • hCaptcha (Normal/Enterprise)
  • Geetest v3 / v4

captchas.io​

captchas.io поддерживает следующие типы каптч:

  • reCAPTCHA (v2/v3/Invisible/Enterprise)
  • Image CAPTCHA
  • FunCAPTCHA
  • GeeTest
  • hCAPTCHA
  • Cloudflare Turnstile
  • Audio and Text CAPTCHAs

Captcha.Guru​

  • reCAPTCHA (v2/v3/Invisible)
  • hCaptcha
  • SmartCaptcha
  • FunCaptcha
  • ReCaptcha
  • hCaptcha
  • GeeTest
  • Binance
  • TikTok
  • Amazon

White captcha​

  • SmartCaptcha от Яндекса

Capsola​

Capsola поддерживает следующие типы каптч:

  • SmartCaptcha click

Использование XEvil​

⏩ Видео по настройке​

Util::ReCaptcha2

Видео, в котором показано использование XEvil совместно с A-Parser для разгадывания Util::ReCaptcha2 :

В видео показано:

  • подключение XEvil к A-Parser для работы с Util::ReCaptcha2Util::ReCaptcha2
  • проверка работы и демонстрация работы в SE::Google::ModernSE::Google::Modern

Выбор желаемой нейросети​

Начиная с XEvil 6.0 [ Beta-10 ] добавлена поддержка параметра corename, через который при отправке обычных капч (картинок) можно указывать желаемую нейросеть. Подробнее тут.

Util::AntiGate

Передать данный параметр можно используя поле Дополнение к строке запроса парсера Util::AntiGate . Например, для нейросети Default v.1 нужно в данном поле написать corename=Default v.1

Как обойти капчу при парсинге сайтов?

Главная > Блог > Business > Как обойти капчу при парсинге сайтов?

Автор: parser

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

Что такое капча и для чего ее вводить?

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

При обнаружении действий, подпадающих под категорию «подозрительных», система защиты оповещает владельца сайта об этом и он может принять решение – пропустить или заблокировать попытку перехода. В основном, капчи устанавливают на страницах регистрации, в формах заказа, комментирования или отзывов, во избежание несанкционированной накрутки. Тем не менее, этот инструмент зарекомендовал себя как один из самых надежных способов защиты от DDoS-атак.

Какие существуют способы обойти Гугл капчу при парсинге сайтов?

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

  • Использование реального IP-адреса;
  • Аренда выделенного прокси-сервера;
  • Маршрутизация запросов через разные географические точки;
  • Bypass или Death by CAPTCHA через API сервисов;
  • С помощью программ для обхода и расширений для браузеров.

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

Как обойти капчу на Python?

Делаю парсер для одного сайта. При долгом парсинге, сайт выдает капчу.
Сначала я сделал так: добавил подмену User-Agent и IP (proxy) каждый раз, когда программа делает запрос на сайт. Но это не помогло.
Потом так: когда сайт дает на прохождение капчу, тогда остановить парсинг на 1 час и потом продолжить дальше. Это тоже не сработало.
Тогда я принял такое решение: открывать браузер со страницей где выскакивает капча с помощью Selenium, я буду сам проходить капчу, после этого программа останавливается на 10 минут, и продолжать работу дальше. Но и это не помогло.
Как можно обойти капчу, не используя сервисы по типу Антикапча, где нужно платить за каждую пройденную кем-то капчу?
Если что, для парсинга использую requests и beautifulsoup (ну, классика).

  • Вопрос задан более трёх лет назад
  • 13413 просмотров

Комментировать
Решения вопроса 2

Amigun

Amigun @Amigun Автор вопроса

Если у вас возникла такая-же проблема как у меня, а именно капча при парсинге сайта, то прочитайте как я её решил.

Изначально я использовал библиотеки requests (для отправки запросов к сайту) и bs4 (для самого парсинга).
Сначала я сделал задержку, если программа встречает капчу, то она останавливает свою работу на 1 час, и дальше продолжает работать. Это не сработало, ни через час, ни через два, ни через 3 дня.
Дальше я думал подключить selenium, и когда выходит капча, открывать эту страничку с помощью selenium, там проходить капчу вручную, закрывать selenium, и пробовать через requests еще раз отправлять запросы на страницу. Капча все равно осталась.
Переписать парсер под selenium — без использования requests и bs4, хорошее решение, но не всегда подходит. В моем случае было слишком муторно использовать это, поэтому я обратился сюда.
Тут мне подсказали такой вариант: использовать сессии (requests.Session()) и очищать куки при смене IP (кстати да, я подключал библиотеки для смены IP через proxy, а так же библиотека для генерации fake-User-Agent) и передавать в заголовки параметр referer. Возможно это и работает, но не для меня. Капча все равно осталась.

Ну и вот собственно само решение 🙂
Я решил заменить библиотеку requests на selenium. Я через него подключался к сайту (у меня даже открывалось окно браузера) и с помощью метода page_source я получал html-код странички. Кстати, будьте внимательными, я так понял что с помощью этого метода можно получить только html, без js и css. Поэтому если сайт использует js для генерации контента, то у вас вряд-ли это получится. А потом, я просто с помощью bs4 парсил полученную html страничку, и извлекал из нее нужные мне данные. Да, капча все равно появлялась, но она появилась лишь однажды, я её вручную решил прямо через окно selenium, и можно сказать что я обошел капчу, так как она больше в процессе парсинга у меня не выскакивала.

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

Добавить комментарий

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