как решить рекапчу при парсинге веб-страниц в 2024 году с помощью программы рекапчи#
Обзор reCAPTCHA#
reCAPTCHA – это бесплатная служба Google, которая помогает защитить веб-сайты от спама и злоупотреблений. Он использует передовые методы анализа рисков и адаптивные задачи, чтобы отличить людей от ботов. Термин «CAPTCHA» означает «Полностью автоматизированный публичный тест Тьюринга, позволяющий отличить компьютеры от людей».
За прошедшие годы существовало несколько версий reCAPTCHA:
reCAPTCHA v1: Это была оригинальная версия, в которой пользователям предлагался искаженный текст, который им приходилось расшифровывать и вводить в поле. Это было полезно для оцифровки книг и других печатных материалов, но людям часто было трудно решить эту задачу.
reCAPTCHA v2: В этой версии появился флажок «Я не робот», который пользователям предлагается щелкнуть. Если система не уверена, является ли пользователь человеком или нет, у нее возникнут дополнительные проблемы, например, идентификация объектов на изображениях.
reCAPTCHA v3: Эта версия работает в фоновом режиме и не мешает пользователям решать проблемы. Вместо этого он присваивает оценку риска каждому посетителю на основе его взаимодействия с веб-сайтом. Владельцы веб-сайтов могут затем использовать эту оценку, чтобы решить, как обращаться с посетителем (например, заблокировать, бросить вызов и т. д.).
Решение reCAPTCHA#
Предварительные условия#
Запросить библиотеку
мы используем запрос Python для примера кода
СледующийКлюч клиента Captcha
Зарегистрируйтесь в NextCaptcha, чтобы немедленно получить бесплатный ключ API и бесплатные пробные кредиты.
код Python для решения reCAPTCHA#
# create task
"""
Create NextCaptcha CAPTCHA solver task.
:param task: task of captcha dict.
:param client_key: the client key form nextcaptcha dashboard.
:param solft_id: Optional. The value of the 'solft_id'.
:param callback_url: Optional. callback when the captcha task finish.
:return: A dictionary containing the solution of the reCAPTCHA.
"""
def send_task (task, client_key, solft_id, callback_url):
HOST = "https://api.nextcaptcha.com"
session = requests.session()
data = {
"clientKey" : client_key,
"solftId" : solft_id,
"callbackUrl" : callback_url,
"task" : task,
}
resp = session.post( url = HOST + "/createTask" , json = data)
if resp.status_code != 200 :
return resp.json()
resp = resp.json()
task_id = resp.get( "taskId" )
start_time = time.time()
while True :
if time.time() - start_time > TIMEOUT :
return { "errorId" : 12 , "errorDescription" : "Timeout" , "status" : "failed" }
resp = session.post( url = HOST + "/getTaskResult" ,
json = { "clientKey" : client_key, "taskId" : task_id})
if resp.status_code != 200 :
return resp.json()
status = resp.json().get( "status" )
if status == READY_STATUS :
return resp.json()
if status == FAILED_STATUS :
return resp.json()
time.sleep( 1 )
Пример кода Python для решения reCAPTCHA v2#
def recaptchav2 (self, website_url: str , website_key: str , recaptcha_data_s_value: str = "" ,
is_invisible: bool = False , api_domain: str = "" , page_action: str = "" ) -> dict :
"""
Solve reCAPTCHA v2 challenge.
:param website_url: The URL of the website where the reCAPTCHA is located.
:param website_key: The sitekey of the reCAPTCHA.
:param recaptcha_data_s_value: Optional. The value of the 'data-s' parameter if present.
:param is_invisible: Optional. Whether the reCAPTCHA is invisible or not.
:param api_domain: Optional. The domain of the reCAPTCHA API if different from the default.
:return: A dictionary containing the solution of the reCAPTCHA.
"""
task = {
"type" : "RecaptchaV2TaskProxyless" ,
"websiteURL" : website_url,
"websiteKey" : website_key,
"recaptchaDataSValue" : recaptcha_data_s_value,
"isInvisible" : is_invisible,
"apiDomain" : api_domain,
"pageAction" : page_action,
}
return send_task(task)
Пример кода Python для решения reCAPTCHA v2 Enterprise#
def recaptchav2enterprise (self, website_url: str , website_key: str , enterprise_payload: dict = {},
is_invisible: bool = False , api_domain: str = "" , page_action: str = "" ) -> dict :
"""
Solve reCAPTCHA v2 Enterprise challenge.
:param website_url: The URL of the website where the reCAPTCHA is located.
:param website_key: The sitekey of the reCAPTCHA.
:param enterprise_payload: Optional. Additional enterprise payload parameters.
:param is_invisible: Optional. Whether the reCAPTCHA is invisible or not.
:param api_domain: Optional. The domain of the reCAPTCHA API if different from the default.
:return: A dictionary containing the solution of the reCAPTCHA.
"""
task = {
"type" : "RecaptchaV2EnterpriseTaskProxyless" ,
"websiteURL" : website_url,
"websiteKey" : website_key,
"enterprisePayload" : enterprise_payload,
"isInvisible" : is_invisible,
"apiDomain" : api_domain,
"pageAction" : page_action,
}
return send_task(task)
Пример кода Python для решения reCAPTCHA v3#
def recaptchav3 (self, website_url: str , website_key: str , page_action: str = "" , api_domain: str = "" ,
proxy_type: str = "" , proxy_address: str = "" , proxy_port: int = 0 , proxy_login: str = "" ,
proxy_password: str = "" ) -> dict :
"""
Solve reCAPTCHA v3 challenge.
:param website_url: The URL of the website where the reCAPTCHA is located.
:param website_key: The sitekey of the reCAPTCHA.
:param page_action: Optional. The action parameter to use for the reCAPTCHA.
:param api_domain: Optional. The domain of the reCAPTCHA API if different from the default.
:param proxy_type: Optional. The type of the proxy (HTTP, HTTPS, SOCKS4, SOCKS5).
:param proxy_address: Optional. The address of the proxy.
:param proxy_port: Optional. The port of the proxy.
:param proxy_login: Optional. The login for the proxy.
:param proxy_password: Optional. The password for the proxy.
:return: A dictionary containing the solution of the reCAPTCHA.
"""
task = {
"type" : "RecaptchaV3TaskProxyless" ,
"websiteURL" : website_url,
"websiteKey" : website_key,
"pageAction" : page_action,
"apiDomain" : api_domain,
}
if proxy_address:
task[ "type" ] = "RecaptchaV3Task"
task[ "proxyType" ] = proxy_type
task[ "proxyAddress" ] = proxy_address
task[ "proxyPort" ] = proxy_port
task[ "proxyLogin" ] = proxy_login
task[ "proxyPassword" ] = proxy_password
return send_task(task)
Пример кода Python для решения reCAPTCHA на мобильных устройствах#
def recaptcha_mobile (self, app_key: str , app_package_name: str = "" , app_action: str = "" ) -> dict :
"""
Solve Mobile reCAPTCHA challenge.
:param app_key: The app key of the Mobile reCAPTCHA.
:param app_package_name: Optional. The package name of the mobile app.
:param app_action: Optional. The action parameter to use for the Mobile reCAPTCHA.
:return: A dictionary containing the solution of the Mobile reCAPTCHA.
"""
task = {
"type" : "RecaptchaMobileProxyless" ,
"appKey" : app_key,
"appPackageName" : app_package_name,
"appAction" : app_action,
}
return send_task(task)
Заключение#
NextCaptcha Высоко поддерживаемый, актуальный и дешевый сервис ReCaptcha Mobile Solver, стабильная круглосуточная поддержка.
Для успешного получения данных вам нужен мощный инструмент, на который можно полностью положиться при обработке CAPTCHA. NextCaptcha предоставляет простой в настройке API, который позволит вам преодолеть все проблемы защиты от ботов, и вы можете
попробовать его бесплатно уже сегодня.
Более#