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

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Bypassing reCaptcha V3 by sending HTTP requests & solving reCaptcha V2 using speech to text engine.

License

xHossein/PyPasser

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

PyPasser is a Python library for bypassing reCaptchaV3 only by sending HTTP requests and solving reCaptchaV2 using speech-to-text engine.

🔴 reCaptchaV3 bypass does not work on all sites. Test on your target to find out.

pip install PyPasser --upgrade 

Install from Github (latest repo code)

pip install git+https://github.com/xHossein/PyPasser@master 

Bypassing reCaptchaV3

To bypass recaptcha v3, first you must find anchor URL.

  • Open inspect-element on your browser.
  • Go to the web page that has reCaptcha V3 (not V2 invisible).
  • In Network tab you should see many requests.
  • Type anchor in text-field filter to hide unnecessary requests.
  • Now you should see a url like this:

Note that the anchor urls also can have /enterprise/anchor instead of /api2/anchor in other sites.

from pypasser import reCaptchaV3 reCaptcha_response = reCaptchaV3('ANCHOR URL') ## use this response in your request . 
from pypasser import reCaptchaV3 from pypasser.structs import Proxy ## Using Proxy structure proxy = Proxy(Proxy.type.HTTPs,'HOST','PORT') ## with authentication credentials # proxy = Proxy(Proxy.type.HTTPs,'HOST','PORT','USERNAME', 'PASSWORD') reCaptcha_response = reCaptchaV3('ANCHOR URL', proxy)

also you can configure it as Dict.

proxy = "http": "http://HOST:PORT", "https": "https://HOST:PORT"> reCaptcha_response = reCaptchaV3('ANCHOR URL', proxy)

Default timeout is 20 seconds but you can change the amount like this:

from pypasser import reCaptchaV3 reCaptcha_response = reCaptchaV3('ANCHOR URL', timeout = 10)

Bypassing reCaptchaV2

Before start using reCaptchaV2 solver, you must install the following requirements.

Requirements :

  • PocketSphinx (used as speech-to-text engine)
  • ffmpeg (used for audio format conversion)

After installing requirements, you should pass your webdriver to reCaptchaV2 class then PyPasser tries to solve the reCaptcha V2 which is in current tab of browser.

from pypasser import reCaptchaV2 # Create an instance of webdriver and open the page has recaptcha v2 # . # pass the driver to reCaptchaV2 is_checked = reCaptchaV2(driver_instance) # it returns bool

driver: An instance of webdriver.
Play: Click on ‘PLAY’ button. [Default is True means it plays the audio].
Attempts: Maximum solving attempts for a recaptcha. [Default is 3 times].

is_checked = reCaptchaV2( driver = driver_instance, play = False, attempts = 5 )

Note that Google gonna blocks you if you try to solve many recaptcha via audio challenge. In this case PyPasser raises IpBlock exception.

Exception Bypass Description
ConnectionError reCaptchaV3 Raised due to network connectivity-related issues.
RecaptchaTokenNotFound reCaptchaV3 Raised when couldn’t find token due to wrong anchor_url .
RecaptchaResponseNotFound reCaptchaV3 Raised when couldn’t find reCaptcha response due to using PyPasser for site that hasn’t reCaptchaV3.
IpBlock reCaptchaV2 Raised due to solving many recaptcha via audio challenge.

This was made for educational purposes only, nobody which directly involved in this project is responsible for any damages caused. You are responsible for your actions.

About

Bypassing reCaptcha V3 by sending HTTP requests & solving reCaptcha V2 using speech to text engine.

Источник

Как байпасить reCaptcha V3 с помощью Selenium Python?

Мы будем использовать библиотеку python Selenium для байпаса google reCaptcha v3. Следуйте пошаговой инструкции, чтобы получить результат.

Для примера мы будем использовать демо-версию Google reCaptcha api.

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

Для этого зайдите в Настройки в Chrome. И напишите «настройки сайта» в строке поиска.

Перейдите в настройки сайта и найдите «Защищенный контент».

Перейдите к защищенному контенту и отключите его.

Теперь перейдем к части кодирования.

В этой статье мы будем работать с Python 3. Мы будем использовать две библиотеки. Если вы хотите настроить Selenium и узнать, как это сделать — изучите эту статью.

Установите библиотеку Beautiful Soup для скрипта.

pip install beautifulsoup4

Откройте файл-скрипт и импортируйте в него упомянутые библиотеки.

from selenium import webdriver from selenium.webdriver.common.keys import Keys from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By from http_request_randomizer.requests.proxy.requestProxy import RequestProxy import os, sys import time,requests from bs4 import BeautifulSoup

Установите «delayTime» и «audioToTextDelay» в соответствии с вашей скоростью интернета. Установленные значения работают для всех.

delayTime = 2 audioToTextDelay = 10

byPassUrl — это URL, на который вам нужно ориентироваться. Опция используется для выбора драйвера chrome, и ей передаются некоторые аргументы.

filename = ‘1.mp3’ byPassUrl = ‘https://www.google.com/recaptcha/api2/demo' googleIBMLink = ‘https://speech-to-text-demo.ng.bluemix.net/' option = webdriver.ChromeOptions() option.add_argument('--disable-notifications') option.add_argument("--mute-audio")

Остальная часть кода приведена ниже. Теперь я объясню, как это работает.

Когда скрипт запускается, проверяется поле I’m not a robot.

И дальше все появляется (как обычно).

После по скрипту выбирается кнопка аудио внизу слева.

И появляется вот это. После этого загружается аудио с именем «1.mp3».

Это займет несколько секунд, не волнуйтесь. После этого в браузере откроется новая вкладка, которая перейдет от речи watson к конвертеру в текст и загрузит файл.

Как видите, аудиофайл преобразуется в текст. Он копирует текст и вставляет его в текстовое поле.

И далее нажимается кнопка «Проверить».

Вот, смотрите. Проблема решена. Если у вас есть какие-либо проблемы и вопросы, пишите. Я отвечу на них как только смогу.

Источник

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

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

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

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

Источник

Читайте также:  Java define function in function
Оцените статью