Обход капчи при парсинге в PHP
Итак, теперь вы знаете как устроена капча. Давайте теперь о том, как ее обойти. Для этого нужно сделать несколько запросов с помощью CURL.
Первый запрос должен слаться на файл с капчей. Куда его слать — видно в HTML коде формы или же можно отследить в отладчике, куда отправляются запросы.
Результатом данной операции будет картинка. Ее можно сохранить в файл с помощью file_put_contents . После этого капчу можно разобрать ее каким-либо образом (для начала вручную).
Запрос на капчу обязательно следует слать через CURL, а не file_get_contents , так как нам обязательно следует принимать и оправлять куки, ведь капча работает на сессиях PHP.
Итак, получаем капчу, сохраняем его в файл, разбираем эту капчу вручную и шлем второй запрос уже на страницу с формой вместе с POST данными для формы (и с разобранной капчей).
Не ошибитесь и не сделайте лишнего запроса к капче!
Обход капчи
А-Парсер не решает капчу самостоятельно. Для обхода капчи А-Парсер использует прокси и сервисы разгадывания капч.
В зависимости от вида каптчи поддерживается работа с такими онлайн сервисами:
И оффлайн ПО — XEvil, CapMonster.
Для работы с сервисами разгадывания капч А-Парсер имеет пять встроенных парсеров:
Util::AntiGate — разгадывает каптчи в виде картинок с надписями букв/цифр/слов
Util::ReCaptcha2 — разгадывает Google ReCaptcha v2
Util::ReCaptcha3 — разгадывает Google ReCaptcha v3
Util::hCaptcha — разгадывает каптчи hCaptcha
Util::Turnstile — разгадывает каптчи Cloudflare Turnstile
Важно понимать, что настройки распознавания капч задаются в отдельном парсере и затем используются в остальных. Т.е. настраиваем один парсер и используем его настройки как настройки для опции другого. Это даёт возможность иметь одновременно разные настройки для разных сервисов или программ разгадывания капч.
Далее будет описано как настроить каждый парсер для работы с сервисами разгадывания капч.
Настройка

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

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

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


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

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

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

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



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

Сервисы разгадывания
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
⏩ Видео по настройке

Видео, в котором показано использование XEvil совместно с A-Parser для разгадывания Util::ReCaptcha2 :
В видео показано:
- подключение XEvil к A-Parser для работы с
Util::ReCaptcha2 - проверка работы и демонстрация работы в
SE::Google::Modern
Выбор желаемой нейросети
Начиная с XEvil 6.0 [ Beta-10 ] добавлена поддержка параметра corename, через который при отправке обычных капч (картинок) можно указывать желаемую нейросеть. Подробнее тут.

Передать данный параметр можно используя поле Дополнение к строке запроса парсера 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 Автор вопроса
Если у вас возникла такая-же проблема как у меня, а именно капча при парсинге сайта, то прочитайте как я её решил.
Изначально я использовал библиотеки 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, и можно сказать что я обошел капчу, так как она больше в процессе парсинга у меня не выскакивала.
Можете попробовать все описанные выше способы, может что и поможет. С каждым сайтом нужно извращаться по своему)