- Saved searches
- Use saved searches to filter your results more quickly
- License
- xHossein/PyPasser
- Name already in use
- Sign In Required
- Launching GitHub Desktop
- Launching GitHub Desktop
- Launching Xcode
- Launching Visual Studio Code
- Latest commit
- Git stats
- Files
- README.md
- About
- Как байпасить reCaptcha V3 с помощью Selenium Python?
- Как обойти капчу на Python?
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 (ну, классика).
Если у вас возникла такая-же проблема как у меня, а именно капча при парсинге сайта, то прочитайте как я её решил.
Изначально я использовал библиотеки 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, и можно сказать что я обошел капчу, так как она больше в процессе парсинга у меня не выскакивала.
Можете попробовать все описанные выше способы, может что и поможет. С каждым сайтом нужно извращаться по своему)