Join And Get Free Trial!

cómo resolver recaptcha al realizar web scraping en 2024 con el solucionador de recaptcha#

logoNextCaptcha
May 20,2024

Descripción general de reCAPTCHA#

reCAPTCHA es un servicio gratuito proporcionado por Google que ayuda a proteger los sitios web del spam y el abuso. Utiliza técnicas avanzadas de análisis de riesgos y desafíos adaptativos para distinguir a los humanos de los robots. El término "CAPTCHA" significa "Prueba de Turing pública completamente automatizada para diferenciar las computadoras de los humanos". Ha habido varias versiones de reCAPTCHA a lo largo de los años:
  • reCAPTCHA v1: Esta era la versión original que presentaba a los usuarios un texto distorsionado que debían descifrar e ingresar en un cuadro. Esto era útil para digitalizar libros y otros materiales impresos, pero a menudo era difícil de resolver para los humanos.

    • nextcaptcha recaptcha-badge

  • reCAPTCHA v2: Esta versión introdujo la casilla de verificación "No soy un robot" en la que los usuarios deben hacer clic. Si el sistema no está seguro de si el usuario es humano o no, presentará desafíos adicionales, como identificar objetos en imágenes.

    • nextcaptcha RecaptchaLogo

  • reCAPTCHA v3: Esta versión se ejecuta en segundo plano y no interrumpe a los usuarios con desafíos. En cambio, asigna una puntuación de riesgo a cada visitante en función de sus interacciones con el sitio web. Los propietarios de sitios web pueden usar esta puntuación para decidir cómo manejar al visitante (por ejemplo, bloquearlo, presentarle un desafío, etc.).

    • nextcaptcha solve-recaptcha-enterprise

Resolviendo reCAPTCHA#

Requisitos previos#

  • Solicitar biblioteca
    • Usamos la solicitud de Python como código de ejemplo.
  • SiguienteClave de cliente Captcha

obtenga la clave del cliente NextCaptcha desde el panel#

Regístrese en NextCaptcha para obtener su clave API gratuita y créditos de prueba gratuitos de inmediato.

código Python para resolver 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)
 

código de ejemplo de Python para resolver 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)

código de ejemplo de Python para resolver 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)

código de ejemplo de Python para resolver 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)
 

código de ejemplo de Python para resolver reCAPTCHA móvil#

 
    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)
 

Conclusión#

NextCaptcha Servicio ReCaptcha Mobile Solver altamente mantenido, actualizado y más económico, soporte estable 24 horas al día, 7 días a la semana
Para una recuperación de datos exitosa, necesita una herramienta poderosa en la que confiar completamente para manejar CAPTCHA. NextCaptcha proporciona una API fácil de configurar que le permite superar todos los desafíos anti-bot y puede probarla gratis hoy.

Más#