CAPSOLVER
Blog
Cómo resolver CAPTCHA con Selenium en Ruby

Cómo resolver CAPTCHA con Selenium en Ruby

Logo of CapSolver

Adélia Cruz

Neural Network Developer

29-Aug-2024

Los CAPTCHA, o pruebas de Turing públicas completamente automatizadas para distinguir entre computadoras y humanos, están diseñados para proteger los sitios web de los bots automatizados. Si bien desempeñan un papel crucial en la seguridad de las plataformas en línea, pueden ser un obstáculo importante al automatizar tareas con herramientas como Selenium. Si está trabajando con Selenium en Ruby y necesita resolver CAPTCHA, esta guía le proporcionará un enfoque paso a paso para manejarlos de manera efectiva.

¿Qué son Selenium y Ruby?

Antes de sumergirnos en la resolución de CAPTCHA, es esencial comprender las herramientas con las que trabajará: Selenium y Ruby.

  • Selenium es una poderosa herramienta de código abierto que se utiliza para automatizar los navegadores web. Permite a los desarrolladores escribir scripts en varios lenguajes de programación para simular interacciones del usuario con las páginas web, lo que lo convierte en una opción popular para las pruebas y el raspado web.
  • Ruby es un lenguaje de programación dinámico y orientado a objetos conocido por su simplicidad y productividad. Se utiliza a menudo en el desarrollo web y, cuando se combina con Selenium, ofrece un marco robusto para automatizar tareas del navegador.

Comprender los CAPTCHA y sus tipos

Antes de sumergirse en la solución, es importante comprender los diferentes tipos de CAPTCHA que puede encontrar:

  • CAPTCHA de ImageToText: Estos requieren que el usuario ingrese caracteres que se muestran en una imagen distorsionada. Puede encontrar algunos casos comunes aquí
  • CAPTCHA basados en imágenes: Los usuarios deben seleccionar imágenes que coincidan con un criterio determinado (por ejemplo, seleccionar todas las imágenes con semáforos). Mayormente de reCAPTCHA
  • reCAPTCHA: El sistema CAPTCHA avanzado de Google que a menudo requiere reconocer objetos en imágenes o simplemente hacer clic en una casilla de verificación para demostrar que no es un bot.
  • captcha: Similar a reCAPTCHA, pero a menudo utilizado por sitios web que buscan soluciones más centradas en la privacidad.

Reclama tu Código de bonificación para las mejores soluciones de captcha; CapSolver: WEBS. Después de canjearlo, obtendrás un bono adicional del 5% después de cada recarga, ilimitado

¿Puede Selenium Ruby resolver CAPTCHAs?

Una de las preguntas más comunes entre los desarrolladores es si Selenium con Ruby puede resolver CAPTCHAs. La respuesta corta es: no directamente. Selenium solo no tiene capacidades incorporadas para resolver CAPTCHAs porque están diseñados específicamente para diferenciar entre usuarios humanos y bots.
Sin embargo, existen varios enfoques para manejar CAPTCHAs en Selenium Ruby:

  1. Intervención manual: En algunos casos, los desarrolladores resuelven manualmente el CAPTCHA durante el proceso de automatización. Sin embargo, esto anula el propósito de la automatización completa.
  2. Resolutor de CAPTCHA de terceros: El método más efectivo es integrar servicios de terceros como CapSolver que se especializan en resolver CAPTCHAs utilizando algoritmos avanzados e inteligencia humana.
  3. Resolver CAPTCHAs simples: Para CAPTCHAs de texto muy básicos, los desarrolladores pueden escribir scripts personalizados para reconocer patrones, aunque este enfoque es limitado y a menudo poco confiable.

Si bien Selenium Ruby no puede resolver CAPTCHAs por sí solo, con las herramientas y servicios adecuados, es completamente posible automatizar el proceso de omitir CAPTCHAs, lo que exploraremos en esta guía.

Configurar Selenium en Ruby

Preparación

  • Google Chrome: Instala la última versión del navegador Chrome, ya que utilizaremos código para interactuar con Chrome.
  • Ruby: Asegúrate de que Ruby esté instalado en tu computadora.
  • Selenium-webdriver: La biblioteca Ruby para la herramienta de automatización Selenium.
  • CapSolver: La documentación oficial de CapSolver te ayudará a resolver los CAPTCHA.

Una vez que Ruby esté instalado en tu computadora, puedes instalar la biblioteca Selenium WebDriver ejecutando el comando gem install selenium-webdriver. Comprueba tu versión de Chrome y, en función de ella, descarga el controlador chromedriver.exe correspondiente. Puedes encontrar los enlaces de descarga en las siguientes ubicaciones:

Analizando el sitio web objetivo

Usaremos el sitio web https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php como ejemplo para resolver reCAPTCHA utilizando Ruby Selenium.

Antes de comenzar, necesitamos comprender los conceptos básicos del envío de formularios HTML. Observando esta página y abriendo las herramientas del desarrollador, podemos resolver manualmente el reCAPTCHA y luego hacer clic en el botón enviar. Esta acción envía una solicitud POST, enviando tres campos: ex-a, ex-b y g-recaptcha-response, como se muestra a continuación:

Estos tres campos corresponden a dos elementos de entrada y un elemento de área de texto dentro del formulario en el código fuente HTML inicial, como se muestra a continuación:

Automatizando el proceso con Ruby Selenium

¿Cómo podemos automatizar todo el proceso usando Ruby Selenium? Los pasos son los siguientes:

  1. Ruby controla Selenium para visitar el sitio web objetivo.
  2. Ruby llama a la API de CapSolver para resolver el reCAPTCHA y obtener un token.
  3. Cambia el estilo CSS del elemento textarea de display: none a display: block para hacerlo interactivo con Selenium.
  4. Simula la entrada del token devuelto por CapSolver en el elemento textarea.
  5. Simula hacer clic en el botón de envío para enviar el formulario y completar la verificación.

Visitando el sitio web objetivo con Ruby Selenium

Asegúrate de reemplazar driver_path en el código a continuación con la ruta real a chromedriver en tu computadora.

ruby Copy
require 'selenium-webdriver'

# Inicializa las opciones del navegador Chrome y accede al sitio web objetivo
driver_path = "path/to/chromedriver.exe"
options = Selenium::WebDriver::Chrome::Options.new
service = Selenium::WebDriver::Service.chrome(path: driver_path)
driver = Selenium::WebDriver.for :chrome, options: options, service: service
url = "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"
driver.navigate.to url

Obteniendo el token

Para usar la API de CapSolver, necesitamos proporcionar la websiteKey, que se puede encontrar buscando la palabra clave data-sitekey en el código fuente de la página:

Ahora, escribamos el código Ruby para usar la API de CapSolver para resolver automáticamente el reCAPTCHA:

ruby Copy
require 'net/http'
require 'json'
require 'time'

def cap_solver(api_key, public_key, page_url)
  payload = {
    "clientKey" => api_key,
    "task" => {
      "type" => 'ReCaptchaV2TaskProxyLess',
      "websiteKey" => public_key,
      "websiteURL" => page_url,
    }
  }

  # Envía una solicitud de creación de tarea
ruby Copy
require 'selenium-webdriver'
require 'net/http'
require 'json'
require 'time'

def cap_solver(api_key, website_key, page_url)
  payload = {
    "clientKey" => api_key,
    "task" => {
      "type" => 'ReCaptchaV2TaskProxyLess',
      "websiteKey" => website_key,
      "websiteURL" => page_url,
    }
  }

  # Enviar una solicitud de creación de tarea
  uri = URI("https://api.capsolver.com/createTask")
  res = Net::HTTP.post(uri, payload.to_json, { "Content-Type" => "application/json" })
  resp = JSON.parse(res.body)
  task_id = resp["taskId"]

  unless task_id
    puts "Error al crear la tarea: #{res.body}"
    return
  end

  puts "Se obtuvo el taskId: #{task_id}"

  # Bucle esperando obtener los resultados de la tarea
  loop do
    sleep(1)
    payload = { "clientKey" => api_key, "taskId" => task_id }
    uri = URI("https://api.capsolver.com/getTaskResult")
    res = Net::HTTP.post(uri, payload.to_json, { "Content-Type" => "application/json" })
    resp = JSON.parse(res.body)
    status = resp["status"]
    if status == "ready"
      token = resp.dig("solution", "gRecaptchaResponse")
      puts "Resolución exitosa, token: #{token}"
      return token
    elsif status == "processing"
      puts "Resolución en progreso..."
    elsif status == "failed"
      puts "La resolución falló! respuesta: #{res.body}"
      return
    end
  end
end

# CapSolver API key (reemplácelo con su propia clave)
cap_solver_api_key = "su_clave_api_de_capsolver"
# Clave del sitio web (reemplácela con la clave del sitio web del sitio web objetivo)
website_key = "clave_del_sitio_web"
# URL de la página (reemplácela con la URL de la página objetivo)
page_url = "https://www.example.com"

# Obtenga el token de CapSolver
token = cap_solver(cap_solver_api_key, website_key, page_url)

# Establecer Selenium WebDriver
driver = Selenium::WebDriver.for :chrome
driver.get(page_url)

# Encontrar el elemento de entrada del token
token_input = driver.find_element(:id, "g-recaptcha-response")
token_input.send_keys(token)

# Hacer clic en el botón de envío (reemplácelo con el selector apropiado)
driver.find_element(:id, "submit_button").click

# Esperar a que se cargue la página (reemplácelo con la condición adecuada)
driver.wait_until { driver.find_element(:id, "success_message").displayed? }

# Imprimir un mensaje de éxito
puts "Se completó con éxito!"

# Cerrar el navegador
driver.quit
ruby Copy
  sleep(1)
  payload = { "clientKey" => api_key, "taskId" => task_id }
  uri = URI("https://api.capsolver.com/getTaskResult")
  res = Net::HTTP.post(uri, payload.to_json, { "Content-Type" => "application/json" })
  resp = JSON.parse(res.body)
  status = resp["status"]
  if status == "ready"
    token = resp.dig("solution", "gRecaptchaResponse")
    puts "Solve succeed, token: #{token}"
    return token
  elsif status == "processing"
    puts "Solve in progress..."
  elsif status == "failed"
    puts "Solve failed! response: #{res.body}"
    return
  end
end

# Inicializa las opciones del navegador Chrome y accede al sitio web de destino
driver_path = "path/to/chromedriver.exe"
options = Selenium::WebDriver::Chrome::Options.new
service = Selenium::WebDriver::Service.chrome(path: driver_path)
driver = Selenium::WebDriver.for :chrome, options: options, service: service
url = "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"
driver.navigate.to url

# Llama a la API de CapSolver para resolver ReCaptcha
cap_solver_api_key = 'YOUR_API_KEY'
website_key = '6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9'
token = cap_solver(cap_solver_api_key, website_key, url)
if token.nil? || token.empty?
  puts "Fallo al resolver el captcha, presiona cualquier tecla para salir."
  STDIN.gets
  driver.quit
  return
end

# Cambia la propiedad de estilo de visualización del área de texto a bloque para que sea visible
driver.execute_script("document.getElementById('g-recaptcha-response').style.display = 'block';")
# Simula la introducción del token en el área de texto
textarea = driver.find_element(id: 'g-recaptcha-response')
textarea.send_keys(token)
# Simula el clic y el envío de un formulario
submit_btn = driver.find_element(css: "button[type='submit']")
submit_btn.click

puts "Presiona cualquier tecla para salir."
STDIN.gets
driver.quit

Más información

CapSolver utiliza tecnología de desbloqueo web automático basada en IA para ayudarte a resolver CAPTCHAs en segundos. Puede resolver no solo reCAPTCHA sino también captcha, captcha, Cloudflare Turnstile, captcha, captcha WAF y más. CapSolver también proporciona SDK en múltiples idiomas, así como extensiones de navegador. Puedes consultar la documentación de CapSolver para obtener más información.

Aviso de Cumplimiento: La información proporcionada en este blog es solo para fines informativos. CapSolver se compromete a cumplir con todas las leyes y regulaciones aplicables. El uso de la red de CapSolver para actividades ilegales, fraudulentas o abusivas está estrictamente prohibido y será investigado. Nuestras soluciones para la resolución de captcha mejoran la experiencia del usuario mientras garantizan un 100% de cumplimiento al ayudar a resolver las dificultades de captcha durante el rastreo de datos públicos. Fomentamos el uso responsable de nuestros servicios. Para obtener más información, visite nuestros Términos de Servicio y Política de Privacidad.

Máse

Error de Cloudflare 1006, 1007, 1008
Error de Cloudflare 1006, 1007, 1008 Solución para resolver | Cómo arreglarlo

¿Tienes problemas con errores de Cloudflare 1006, 1007 o 1008? Aprende soluciones prácticas para resolver estos rechazos de acceso y mejorar tu experiencia de rastreo web.

Cloudflare
Logo of CapSolver

Ethan Collins

05-Dec-2025

AI-LLM: La solución del futuro para el control de riesgos, el reconocimiento de imágenes y la resolución de CAPTCHA
IA-MLLE: La Solución del Futuro para el Control de Riesgos, Reconocimiento de Imágenes y Resolución de CAPTCHA

Una exploración profunda de cómo los LLMs reconfiguran la resolución de CAPTCHA gráficos, combinando el razonamiento de cero shots con la precisión de redes neuronales convolucionales para el control de riesgos moderno.

Logo of CapSolver

Adélia Cruz

05-Dec-2025

Cómo resolver CAPTCHAs durante el scraping web con Scrapling y CapSolver
Cómo resolver captchas al realizar scraping web con Scrapling y CapSolver

Scrapling + CapSolver permite el scraping automatizado con ReCaptcha v2/v3 y bypass de Cloudflare Turnstile.

web scraping
Logo of CapSolver

Ethan Collins

05-Dec-2025

Cambiar el Agente de Usuario en Selenium
Cambiar el Agente de Usuario en Selenium | Pasos y Mejores Prácticas

Cambiar el Agente de Usuario en Selenium es un paso crucial para muchas tareas de scraping web. Ayuda a disfrazar el script de automatización como un navegador regular...

The other captcha
Logo of CapSolver

Adélia Cruz

05-Dec-2025

Cómo identificar si la `action` es requerida para resolver Cloudflare Turnstile usando la extensión CapSolver
Cómo identificar si `action` es necesario para resolver Cloudflare Turnstile usando la extensión de CapSolver

Aprende a identificar la acción para resolver eficazmente el captcha de Cloudflare Turnstile. Sigue nuestra guía paso a paso sobre cómo usar las herramientas y técnicas de Capsolver.

Cloudflare
Logo of CapSolver

Adélia Cruz

05-Dec-2025

9proxy
Descubre el Poder de 9Proxy: Una Revisión Completa

En este artículo, te mostraremos qué es 9proxy y los servicios que ofrecen.

Partners
Logo of CapSolver

Emma Foster

04-Dec-2025