Volver al blog

Cómo configurar y rotar proxies con Watir (Ruby)

Michael Lee
Michael Lee

Expert Network Defense Engineer

16-Dec-2025
Echa un vistazo rápido

Asegúrate de que tu scraping web basado en Watir esté libre de bloqueos y sea escalable con las soluciones de proxy confiables de Scrapeless.

Puntos clave

  • Watir (Pruebas de Aplicaciones Web en Ruby) es una herramienta poderosa para la automatización y el scraping web.
  • Los proxies son esenciales en Watir para enmascarar tu dirección IP y prevenir que los sistemas anti-bot bloqueen tu scraper.
  • Puedes configurar un proxy directamente al inicializar la instancia de Watir::Browser.
  • Implementar un simple rotador de proxies aleatorios en Ruby es necesario para hacer múltiples solicitudes sin ser bloqueado.
  • Para un scraping fiable a gran escala, se recomienda un servicio premium como Scrapeless Proxy para manejar automáticamente la rotación compleja y las comprobaciones de salud de IP.

Cómo configurar y rotar proxies con Watir (Ruby)

Watir (Pruebas de Aplicaciones Web en Ruby) es una familia de bibliotecas Ruby de código abierto construidas sobre Selenium WebDriver [1], diseñada para automatizar navegadores web. Es una herramienta altamente efectiva para el scraping web en Ruby, pero, como cualquier herramienta de automatización, puede ser bloqueada por sitios web que emplean medidas anti-bot.

En este tutorial, aprenderás los pasos esenciales para configurar un proxy con Watir para evitar detección y bloqueos, asegurando que tus operaciones de scraping web se ejecuten sin interrupciones.

Configurar un proxy único con Watir

Para comenzar, necesitas instalar la gema Watir:

bash Copy
gem install watir

A continuación, vamos a crear un script básico. Inicializaremos una nueva instancia del navegador Chrome en modo sin cabeza y navegaremos a HTTPBin [2], un servicio que devuelve la dirección IP del cliente.

scraper.rb

ruby Copy
require 'watir'

# inicializar el navegador
browser = Watir::Browser.new :chrome, headless: true

# navegar a la URL
url = 'https://httpbin.io/ip'
browser.goto(url)

# obtener el contenido de la página
page_content = browser.text
puts page_content

# cerrar el navegador
browser.close

Ejecutar este script revelará la dirección IP real de tu máquina, lo cual es una mala práctica para el scraping web ya que te expone a bloqueos inmediatos. Para enmascarar tu solicitud, debemos integrar un proxy.

Integrando el proxy

Para utilizar un proxy, debes definir la configuración del proxy y pasarlas durante la inicialización del navegador. Puedes encontrar un proxy de una lista de mejores proveedores de proxies.

Define la configuración del proxy (reemplaza la IP y el puerto de ejemplo con los tuyos):

scraper.rb

ruby Copy
# ...
# definir proxy
proxy = {
   http: '8.219.97.248:80',
   ssl: '8.219.97.248:80'
}

# inicializar el navegador con la configuración del proxy
browser = Watir::Browser.new :chrome, headless: true, proxy: proxy
# ...

El código completo para usar un solo proxy se ve así:

scraper.rb

ruby Copy
require 'watir'

# definir proxy
proxy = {
   http: '8.219.97.248:80',
   ssl: '8.219.97.248:80'
}

# inicializar el navegador
browser = Watir::Browser.new :chrome, headless: true, proxy: proxy

# navegar a la URL
url = 'http://httpbin.io/ip'
browser.goto(url)

# obtener el contenido de la página
page_content = browser.text
puts page_content

# cerrar el navegador
browser.close

La salida ahora reflejará la dirección IP del servidor proxy, enmascarando exitosamente tu IP original.

Agregar proxies rotativos a Watir

Usar un solo proxy es solo una solución temporal. Si haces varias solicitudes desde esa misma IP, tu actividad seguirá siendo detectada y bloqueada. Los proxies rotativos son necesarios para distribuir tus solicitudes a través de múltiples direcciones IP, haciendo que tu scraper sea mucho más resistente.

Vamos a construir un simple rotador que seleccione aleatoriamente un proxy de una lista predefinida para cada sesión de navegación.

Primero, define tu lista de proxies y configura el registrador de Selenium WebDriver para reducir el ruido de los registros:

scraper.rb

ruby Copy
require 'watir'
require 'logger'

# lista de proxies (reemplaza con tu propia lista)
proxies = [
  { http: '8.219.97.248:80', ssl: '8.219.97.248:80' },
  { http: '20.235.159.154:80', ssl: '20.235.159.154:80' },
  { http: '18.188.32.159:3128', ssl: '18.188.32.159:3128' },
]

# configurar el registrador de Selenium WebDriver
logger = Selenium::WebDriver.logger
logger.ignore(:jwp_caps, :logger_info)

A continuación, define una función para seleccionar aleatoriamente un proxy de la lista:

scraper.rb

ruby Copy
# ...
# función para rotar proxies
ruby Copy
def obtener_proxy_rotativo(proxies)
  proxies.sample
end
# ...

Finalmente, integra la lógica de rotación en tu script utilizando un bloque begin/rescue/ensure para un manejo de errores y limpieza robusto:

scraper.rb

ruby Copy
# ...
begin
  # inicializa el navegador con un proxy seleccionado aleatoriamente
  proxy = obtener_proxy_rotativo(proxies)
  logger.info("Usando proxy: #{proxy}")
  browser = Watir::Browser.new :chrome, headless: true, proxy: proxy

  # navega a la URL
  url = 'https://httpbin.io/ip'
  browser.goto(url)

  # obtiene el contenido de la página
  contenido_pagina = browser.text
  puts contenido_pagina

rescue => e
  # maneja el error
  logger.error("Ocurrió un error: #{e.message}")
ensure
  # cierra el navegador
  browser.close
end

Al envolver tu código en esta estructura, aseguras que se utilice un proxy diferente en cada ejecución, y el navegador siempre se cierra, incluso si ocurre un error. Este es un paso fundamental para construir un scraper confiable.

Rotación de Proxy Automatizada con Scrapeless Proxy

Mientras que la rotación manual con una lista de proxies gratuitos es un buen punto de partida, no es una solución viable para scraping web profesional o a gran escala. Los proxies gratuitos son notoriamente lentos, poco confiables, y rápidamente se vuelven inutilizables. Para tareas de alto volumen, como extraer datos de seguidores de Instagram o ejecutar un flujo de trabajo de generación de leads B2B, necesitas un servicio premium que maneje la complejidad de la gestión de proxies de manera automática.

Scrapeless Proxy ofrece una solución automatizada de alto rendimiento que es perfectamente adecuada para la automatización con Watir. En lugar de gestionar una lista de proxies individuales, simplemente enrutas todas tus solicitudes a través de un único punto final autenticado de Scrapeless. El servicio luego gestiona un enorme grupo de IPs residenciales y de ISP rotativos, manejando automáticamente la rotación, reintentos y verificación de la salud de las IP para asegurar una tasa de éxito casi perfecta.

Este enfoque te permite concentrarte en tu lógica de automatización con Watir, sabiendo que la infraestructura de proxies subyacente es robusta y confiable.

Por qué Scrapeless es el Proxy Ideal para Watir

  • Rotación Automática: Scrapeless maneja toda la rotación de IP, eliminando la necesidad de la lógica manual de Ruby mostrada anteriormente.
  • Alta Tasa de Éxito: Aprovechando un enorme grupo de más de 90 millones de IP residenciales, Scrapeless asegura que tus solicitudes eviten bloqueos.
  • Integración Simplificada: Integra tu script de Watir utilizando un único punto final autenticado, haciendo que tu código sea más limpio y robusto.
  • Enfoque en los Datos: Puedes dedicar tu tiempo a extraer datos en lugar de depurar problemas de proxy.

Para probar la fiabilidad y velocidad de la red residencial de Scrapeless, puedes comenzar una prueba gratuita hoy:

Integrando Scrapeless con Watir

Al usar un servicio premium como Scrapeless, necesitarás incluir detalles de autenticación. Esto se hace pasando las credenciales dentro de la cadena de proxy.

ruby Copy
# Reemplaza con tus credenciales de Scrapeless reales
HOST_PROXY = 'gate.scrapeless.com'
PUERTO_PROXY = 8000
USUARIO_PROXY = 'tu_nombre_de_usuario'
CONTRASENA_PROXY = 'tu_contrasena'

# Define la cadena de proxy autenticada
proxy_autenticado = "#{USUARIO_PROXY}:#{CONTRASENA_PROXY}@#{HOST_PROXY}:#{PUERTO_PROXY}"

# Define los ajustes del proxy
proxy = {
   http: proxy_autenticado,
   ssl: proxy_autenticado
}

# Inicializa el navegador con el proxy autenticado
browser = Watir::Browser.new :chrome, headless: true, proxy: proxy
# ... tu código de automatización con Watir

Al usar un proveedor premium, obtienes acceso a proxies de alta calidad y confiables que manejan la rotación y las verificaciones de salud automáticamente, permitiendo que tu scraper de Watir funcione a gran escala sin interrupciones. Este es un componente clave para cualquier exitoso servicio de scraping web para extracción de datos.

Conclusión

Configurar un proxy con Watir es un proceso sencillo que es esencial para eludir las medidas anti-bot. Aunque la rotación manual es posible, la solución más robusta y escalable para un scraping web serio en Ruby es aprovechar un servicio de proxy premium automatizado como Scrapeless Proxy. Esto permite que tus scripts de Watir se beneficien de un vasto conjunto de IPs rotativas y de alta calidad, asegurando una alta tasa de éxito y permitiéndote concentrarte en la tarea principal de extracción de datos.

Preguntas Frecuentes (FAQ)

¿Qué es Watir?

Watir, que significa Pruebas de Aplicaciones Web en Ruby, es una familia de bibliotecas de Ruby de código abierto utilizadas para automatizar navegadores web. Te permite escribir scripts que interactúan con páginas web de la misma manera en que lo haría un usuario, lo que lo hace popular tanto para pruebas como para scraping web.

¿Por qué necesito un proxy para el scraping con Watir?

Necesitas un proxy para enmascarar la dirección IP real de tu computadora. Cuando un script de Watir envía un alto volumen de solicitudes, el sistema anti-bot del sitio web objetivo detectará el patrón de tráfico inusual de una sola IP y lo bloqueará. Un proxy, especialmente uno rotativo, evita esto haciendo que las solicitudes parezcan provenir de muchos usuarios diferentes.

¿Puedo usar un proxy gratuito con Watir?

Puedes, pero se desaconseja encarecidamente para cualquier proyecto serio. Los proxies gratuitos suelen ser lentos, poco fiables, tienen un tiempo de actividad limitado y a menudo ya están en listas negras por sitios web importantes. Solo son adecuados para pruebas básicas o con fines de aprendizaje. Para producción, deberías usar un servicio premium como Scrapeless.

¿Watir soporta autenticación de proxy?

Sí, Watir soporta autenticación de proxy. Como se muestra en el ejemplo de integración, puedes incluir el nombre de usuario y la contraseña directamente en la cadena del proxy al definir la configuración del proxy para la instancia Watir::Browser.

¿Es Watir mejor que Selenium para Ruby?

Watir está construido sobre Selenium WebDriver y a menudo se considera más "amigable con Ruby" debido a su API limpia y expresiva. Para los usuarios que ya trabajan en el ecosistema Ruby, Watir proporciona una manera más idiomática y legible de interactuar con el navegador en comparación con el uso de los enlaces en bruto de Selenium.


Referencias

[1] Documentación de Selenium WebDriver
[2] Servicio HTTPBin
[3] Sitio Web Oficial del Lenguaje de Programación Ruby
[4] Sitio Web Oficial de Watir
[5] Especificación del Proxy HTTP de W3C

En Scrapeless, solo accedemos a datos disponibles públicamente y cumplimos estrictamente con las leyes, regulaciones y políticas de privacidad del sitio web aplicables. El contenido de este blog es sólo para fines de demostración y no implica ninguna actividad ilegal o infractora. No ofrecemos garantías y renunciamos a toda responsabilidad por el uso de la información de este blog o enlaces de terceros. Antes de realizar cualquier actividad de scraping, consulte a su asesor legal y revise los términos de servicio del sitio web de destino u obtenga los permisos necesarios.

Artículos más populares

Catalogar