Перейти к содержимому

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

  • автор:

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

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

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

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

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

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

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

Обход капчи Яндекса средствами пхп

Пробую парсить выдачу Яндекса — получаю ввод капчи Как средствами пхп обойти?

На сайте с 19.05.2008

22 февраля 2010, 17:22

никак ты ее не обойдешь, задержки ставь при парсинге

На сайте с 08.06.2006

23 февраля 2010, 12:39

cadillac:
никак ты ее не обойдешь, задержки ставь при парсинге

позно уже задержки ставить! видит меня как робота как обойти?

На сайте с 17.11.2006

23 февраля 2010, 13:11

Использовать поиск, основанный на Я.XML.

На сайте с 28.10.2005

23 февраля 2010, 19:20

joost:
Пробую парсить выдачу Яндекса — получаю ввод капчи
Как средствами пхп обойти?

Распознавалку через antigate прикрутить

23 февраля 2010, 19:25

joost, диссертацию напиши по Pattern recognition, станешь миллионером

23 февраля 2010, 19:26

Unabashed:
Использовать поиск, основанный на Я.XML.

Верно, и менять IP 🙂

На сайте с 25.11.2009

24 февраля 2010, 09:51

А чем парсишь? может версию парсера нужно апдейтнуть.

список полезных сервисов для работы с ключевиками (http://blackpig.ru/keyword-tools/)

24 февраля 2010, 09:57

Такая же проблема, уже и ip менял, ниче не помогает 🙁

На сайте с 28.10.2005

24 февраля 2010, 16:47

Вручную попробывал прокликивать, через каждых пять страниц каптча; без распознавания никак или стопицот айпи

На сайте с 04.09.2009

24 февраля 2010, 19:31

12 запросов за 5 минут гарантировано не банит, с одного ip, само собой без использования XML. Я так понимаю самопис, не важно как много вы ранее делали запросов, банит на несколько часов, т.е. по истечении определенного времени все нормально будет. Делайте проверку, при получении качпи вырубайте скрипт. Для большого количества проверок по любому использовать XML, количество ip уже по необходимости.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий

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

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

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

Комментировать
Решения вопроса 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, и можно сказать что я обошел капчу, так как она больше в процессе парсинга у меня не выскакивала.

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

Обход капчи

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

И оффлайн ПО — 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

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

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