CAPSOLVER
Blog
Cambiar agentes de usuario para raspado web con Go Colly

Cambiar agentes de usuario para el web scraping con Go Colly

Logo of CapSolver

Ethan Collins

Pattern Recognition Specialist

27-Sep-2024

¿Qué es el Agente de Usuario de Colly?

El Agente de Usuario es una cadena especial que se encuentra en los encabezados de las solicitudes y permite a los servidores identificar el sistema operativo y la versión del cliente, el tipo de navegador y su versión, y otros detalles.

Para los navegadores normales, las cadenas de Agente de Usuario se parecen a esto:

  1. Google Chrome versión 128 en el sistema operativo Windows:

    Copy
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36
  2. Firefox:

    Copy
    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0

Sin embargo, en Colly (un framework de raspado web), el Agente de Usuario predeterminado es:

Copy
colly - https://github.com/gocolly/colly

En el contexto del raspado de datos, una de las medidas anti-raspado más comunes es determinar si la solicitud proviene de un navegador normal examinando el Agente de Usuario. Esto ayuda a identificar bots.

El Agente de Usuario predeterminado de Colly es obviamente equivalente a decirle directamente al sitio web de destino: "Soy un bot". Esto facilita que los sitios web detecten y bloqueen potencialmente los intentos de raspado que utilizan Colly con su configuración predeterminada.

Código adicional

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

¿Por qué cambiar el Agente de Usuario?

Antes de sumergirnos en el código, echemos un vistazo rápido a por qué es crucial cambiar el Agente de Usuario:

  1. Evitar la detección: Muchos sitios web utilizan mecanismos anti-bot que analizan las cadenas de Agente de Usuario entrantes para detectar patrones sospechosos o repetitivos. Si tu raspador envía el mismo Agente de Usuario en cada solicitud, se convierte en un objetivo fácil para la detección.
  2. Imitar navegadores reales: Al cambiar la cadena de Agente de Usuario, tu raspador puede imitar navegadores reales como Chrome, Firefox o Safari, lo que reduce la probabilidad de que se le marque como un bot.
  3. Mejorar la experiencia del usuario y resolver CAPTCHA: Muchos sitios web utilizan desafíos CAPTCHA para verificar que un usuario no es un bot, lo que garantiza una experiencia de navegación más segura. Sin embargo, para las tareas de automatización, estos desafíos pueden interrumpir el flujo de trabajo. Si tu raspador encuentra estos desafíos CAPTCHA, puedes integrar herramientas como CapSolver para resolverlos automáticamente, lo que permite que tu automatización continúe sin problemas sin interrupciones.

Cómo configurar un Agente de Usuario personalizado en Colly

¡Por supuesto! Traduciré el texto al español y lo formatearé correctamente. Aquí tienes la versión traducida y formateada:

Manejando Agentes de Usuario en Colly

Podemos comprobar el valor de nuestro Agente de Usuario visitando https://httpbin.org/user-agent. Colly proporciona principalmente tres métodos para gestionar las solicitudes:

  • Visitar: Acceder al sitio web de destino
  • OnResponse: Procesar el contenido de la respuesta
  • OnError: Manejar errores de solicitud

Aquí tienes un ejemplo completo de código para acceder a httpbin e imprimir el Agente de Usuario:

go Copy
package main

import (
    "github.com/gocolly/colly"
    "log"
)

func main() {
    // Crear un nuevo recolector
    c := colly.NewCollector()

    // Llamar a la devolución de llamada onResponse e imprimir el contenido HTML
    c.OnResponse(func(r *colly.Response) {
       log.Println(string(r.Body))
    })

    // Manejar errores de solicitud
    c.OnError(func(e *colly.Response, err error) {
       log.Println("Solicitud fallida, err:", err)
    })

    // Comenzar a raspar
    err := c.Visit("https://httpbin.org/user-agent")
    if err != nil {
       log.Fatal(err)
    }
}

Esto imprimirá:

json Copy
{
  "user-agent": "colly - https://github.com/gocolly/colly"
}

Personalización de Agentes de Usuario

Colly proporciona el método colly.UserAgent para personalizar el Agente de Usuario. Si quieres utilizar diferentes Agentes de Usuario para cada solicitud, puedes definir una lista de Agentes de Usuario y seleccionarlos aleatoriamente. Aquí tienes un ejemplo:

go Copy
package main

import (
    "github.com/gocolly/colly"
    "log"
    "math/rand"
)

var userAgents = []string{
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:130.0) Gecko/20100101 Firefox/130.0",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 Edg/128.0.0.0",
    "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36 OPR/113.0.0.0",
}

func main() {
    // Crear un nuevo recolector
    c := colly.NewCollector(
       // Establecer el agente de usuario
       colly.UserAgent(userAgents[rand.Intn(len(userAgents))]),
    )

    // Llamar a la devolución de llamada onResponse e imprimir el contenido HTML
    c.OnResponse(func(r *colly.Response) {
       log.Println(string(r.Body))
    })

    // Manejar errores de solicitud
    c.OnError(func(e *colly.Response, err error) {
       log.Println("Solicitud fallida, err:", err)
    })

    // Comenzar a raspar
    err := c.Visit("https://httpbin.org/user-agent")
    if err != nil {
       log.Fatal(err)
    }
}

Utilizando la biblioteca fake-useragent

En lugar de mantener una lista de Agentes de Usuario personalizada, podemos utilizar la biblioteca fake-useragent para generar Agentes de Usuario aleatorios. Aquí tienes un ejemplo:

go Copy
package main

import (
    browser "github.com/EDDYCJY/fake-useragent"
    "github.com/gocolly/colly"
    "log"
)

func main() {
    // Crear un nuevo recolector
    c := colly.NewCollector(
       // Establecer el agente de usuario
       colly.UserAgent(browser.Random()),
    )

    // Llamar a la devolución de llamada onResponse e imprimir el contenido HTML
    c.OnResponse(func(r *colly.Response) {
       log.Println(string(r.Body))
    })

    // Manejar errores de solicitud
    c.OnError(func(e *colly.Response, err error) {
       log.Println("Solicitud fallida, err:", err)
    })

    // Comenzar a raspar
    err := c.Visit("https://httpbin.org/user-agent")
    if err != nil {
       log.Fatal(err)
    }
}

Integrando CapSolver

Si bien la aleatorización de los Agentes de Usuario en Colly puede ayudar a evitar ser identificado como un bot hasta cierto punto, puede no ser suficiente cuando se enfrentan a desafíos anti-bot más sofisticados. Los ejemplos de estos desafíos incluyen reCAPTCHA, captcha, captcha, captcha WAF, captcha, Cloudflare Turnstile y otros. Estos sistemas comprueban la validez de los encabezados de tu solicitud, verifican tu huella digital del navegador, evalúan el riesgo de tu IP y pueden requerir parámetros de encriptación JS complejos o tareas difíciles de reconocimiento de imágenes.

Estos desafíos pueden obstaculizar significativamente tus esfuerzos de raspado de datos. Sin embargo, no hay que preocuparse, todos los desafíos de bots mencionados anteriormente se pueden manejar con CapSolver. CapSolver utiliza tecnología de desbloqueo web automático basada en IA para resolver CAPTCHAs automáticamente. Todas las tareas complejas se pueden resolver con éxito en cuestión de segundos.

El sitio web oficial proporciona SDKs en varios idiomas, lo que facilita su integración en tu proyecto. Puedes consultar la documentación de CapSolver para obtener más información sobre cómo implementar esta solución en tus proyectos de raspado.

¡Por supuesto! Aquí tienes una conclusión para el artículo sobre el cambio de Agentes de Usuario en Go Colly:

Conclusión

Cambiar el Agente de Usuario en Go Colly es una técnica crucial para un raspado web efectivo y resistente. Al implementar Agentes de Usuario personalizados, puedes reducir significativamente el riesgo de que tu raspador sea detectado y bloqueado por los sitios web de destino. Aquí tienes un resumen de los puntos clave que hemos cubierto:

  1. Hemos aprendido por qué es importante cambiar el Agente de Usuario para los proyectos de raspado web.

  2. Hemos explorado diferentes métodos para establecer Agentes de Usuario personalizados en Colly, incluyendo:

    • Utilizar una lista predefinida de Agentes de Usuario
    • Implementar la selección aleatoria de esta lista
    • Utilizar la biblioteca fake-useragent para obtener opciones más diversas
  3. Hemos discutido cómo estas técnicas pueden ayudar a imitar el comportamiento de los navegadores reales y evitar la detección.

  4. Para desafíos anti-bot más avanzados, hemos introducido el concepto de utilizar herramientas especializadas como CapSolver para manejar CAPTCHAs y otros sistemas de verificación complejos.

Recuerda, si bien cambiar los Agentes de Usuario es una estrategia efectiva, es solo una parte del raspado web responsable y eficiente. Respeta siempre los términos de servicio y los archivos robots.txt de los sitios web, implementa la limitación de frecuencia y considera las implicaciones éticas de tus actividades de raspado.

Al combinar estas técnicas con otras mejores prácticas en el raspado web, puedes crear raspadores más robustos y fiables utilizando Go Colly. A medida que las tecnologías web continúan evolucionando, mantenerse actualizado con las últimas técnicas y herramientas de raspado será crucial para mantener la efectividad de tus proyectos de raspado web.

Nota sobre el cumplimiento

Importante: Al realizar raspado web, es crucial adherirse a las directrices legales y éticas. Asegúrate siempre de tener permiso para raspar el sitio web de destino y respeta el archivo robots.txt y los términos de servicio del sitio. CapSolver se opone firmemente al uso indebido de nuestros servicios para cualquier actividad no conforme. El uso indebido de herramientas automatizadas para eludir CAPTCHAs sin autorización adecuada puede acarrear consecuencias legales. Asegúrate de que tus actividades de raspado cumplen con todas las leyes y regulaciones aplicables para evitar posibles problemas.

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