Esta publicación mostrará:
¿Qué es un agente usuario?
El término se refiere a cualquier pieza de software que facilita la interacción del usuario final con el contenido web. Una cadena de agente de usuario (UA) es un texto que el software del ordenador cliente envía a través de una solicitud.
La cadena de agente de usuario ayuda al servidor de destino a identificar qué navegador, tipo de dispositivo y sistema operativo se está utilizando. Por ejemplo, la cadena indica al servidor que está utilizando el navegador Chrome y Windows 10 en su ordenador. El servidor puede utilizar esta información para ajustar la respuesta al tipo de dispositivo, sistema operativo y navegador.
La mayoría de los navegadores envían una cabecera de agente de usuario con el formato a continuación, aunque no hay mucha coherencia en la forma de elegir los agentes de usuario:
Cada navegador añade sus propios componentes de comentario, como plataforma o RV ( versión de lanzamiento). Mozilla ofrece ejemplos de cadenas que pueden utilizarse para los rastreadores:
Puede conocer más sobre las diferentes cadenas que se pueden utilizar para el navegador Mozilla en su sitio web “>developers’ site.
A continuación encontrará ejemplos del sitio para desarrolladores de Chrome sobre el formato de la cadena UA para diferentes dispositivos y navegadores:
Chrome para Android
Agente usuario para teléfono:
Tablet UA:
¿Por qué debería usar un agente usuario?
Cuando se raspa la web, a veces se encuentra que el servidor web bloquea ciertos agentes de usuario. Esto se debe principalmente a que identifica el origen como un bot, y ciertos sitios web no permiten rastreadores bot o raspadores. Los sitios web más sofisticados lo hacen al revés, es decir, sólo permiten que los agentes de usuario que consideran válidos realicen tareas de rastreo. Los verdaderamente sofisticados comprueban que el comportamiento del navegador coincida realmente con el agente de usuario que declara.
Se podría pensar que la solución correcta sería no incluir un agente de usuario en las peticiones. Sin embargo, esto hace que las herramientas utilicen un UA por defecto. En muchos casos, el servidor web de destino lo incluye en su lista negra y lo bloquea.
¿Cómo puede asegurarse de que no se bloquee su agente de usuario?
Recomendaciones para evitar que su UA resulte bloqueado al raspar datos:
#1: Use un agente de usuario verdadero
Si su agente de usuario no pertenece a un navegador importante, algunos sitios web bloquearán sus peticiones. Muchos raspadores web basados en bots se saltan el paso de definir un UA, con la consecuencia de ser detectados y baneados por omitir el UA erróneo/por defecto.
Este problema puede evitarse estableciendo un UA de uso generalizado para su rastreador web. Se puede consultar una lista extensa de agentes de usuario populares aquí . Es posible compilar una lista de cadenas populares y rotarlas realizando una solicitud cURL para un sitio web. No obstante, recomendamos que se utilice el agente de usuario del navegador, ya que es más probable que el comportamiento del navegador coincida con lo que se espera del agente de usuario si no se modifica demasiado.
#2: Rotación de agentes de usuario
Cuando realice numerosas solicitudes durante el raspado web, debe aleatorizarlas. Esto minimizará la posibilidad de que el servidor web identifique y bloquee sus UA.
¿Cómo se aleatoriza solicitudes?
Una solución sería cambiar la dirección IP de solicitud utilizando rotating pproxies. De este modo, enviará un conjunto diferente de cabeceras cada vez. En el servidor web, parecerá que la solicitud procede de distintos ordenadores y navegadores.
Pro tip: Un agente de usuario es una cabecera, pero las cabeceras incluyen mucho más que agentes de usuario. No se puede enviar cabeceras al azar, hay que asegurarse de que el agente de usuario que se envía coincide con las cabeceras que se envían.
Se puede utilizar botcheck.luminatio.io para comprobar si las cabeceras que se envían coinciden con lo que se espera del agente de usuario.
Cómo rotar gentes de usuario
En primer lugar, es necesario recopilar una lista de cadenas de agentes de usuario. Recomendamos utiliza cadenas de navegadores reales , mismas que se pueden encontrar aquí. El paso a continuación es agregar las cadenas a una Lista Python. Y por último, definir que cada petición elija una cadena aleatoria de la lista.
Un ejemplo de cómo rotar agentes de usuario usando Python 3 y Selenium 4 es la discusión en torno a stack overflow. El ejemplo de código luce de la siguiente manera:
Sea cual sea el programa o método que se elija para rotar las cabeceras UA, es necesario seguir las mismas técnicas para evitar que le detecten y bloqueen:
- #1: Rotar un conjunto completo de cabeceras asociadas a cada UA.
- #2: Envío de cabeceras en el orden en que lo haría un navegador real.
- #3: Utilizar la página visitada anteriormente como “encabezado de referencia”.
Consejo de profesionales: Debe asegurarse de que la dirección IP y las cookies no cambien al utilizar un encabezado de referencia. Lo ideal es visitar la página anterior para que quede constancia de ello en el servidor de destino.
#3: Rotación de agentes de usuario usando un servidor Proxy.
Se puede evitar el dolor de cabeza y la molestia de tener que definir manualmente listas y rotar IPs manualmente mediante el uso de una red de proxy rotativa. Las proxies tienen la capacidad de configurar la rotación automática de IP y la rotación de cadenas de UA. Esto significa que sus peticiones parecen originadas desde una variedad de navegadores web. Esto disminuye drásticamente los bloqueos y aumenta las tasas de éxito, ya que las solicitudes parecen haber surgido de usuarios web reales. Tenga en cuenta que sólo proxies muy especiales que emplean la tecnología de desbloqueo de datos pueden gestionar y rotar correctamente sus agentes de usuario.
Lista de agentes de usuario para raspado web.
Existe una gran variedad de Agentes de Usuario basados en navegadores/teléfonos/dispositivos/bots/motores de búsqueda/herramientas de desarrollo que pueden utilizarse para emular varios navegadores utilizando herramientas como wget y cURL. Estos incluyen:
- Lynx: Lynx/2.8.8pre.4 libwww-FM/2.14 SSL-MM/1.4.1 GNUTLS/2.12.23
- Wget: Wget/1.15 (linux-gnu)
- Curl: curl/7.35.0
- HTC: Mozilla/5.0 (Linux; Android 7.0; HTC 10 Build/NRD90M) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/58.0.3029.83 Mobile Safari/537.36
- Google Nexus: Mozilla/5.0 (Linux; U; Android-4.0.3; en-us; Galaxy Nexus Build/IML74K) AppleWebKit/535.7 (KHTML, como Gecko) CrMo/16.0.912.75 Mobile Safari/535.7
- Samsung Galaxy Note 4: Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG SM-N910F Build/MMB29M) AppleWebKit/537.36 (KHTML, como Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36
- Samsung Galaxy Note 3: Mozilla/5.0 (Linux; Android 5.0; SAMSUNG SM-N900 Build/LRX21V) AppleWebKit/537.36 (KHTML, como Gecko) SamsungBrowser/Chrome 2.1/ Mobile 34.0.1847.76 Safari/537.36
- Samsung Phone: Mozilla/5.0 (Linux; Android 6.0.1; SAMSUNG SM-G570Y Build/MMB29K) AppleWebKit/537.36 (KHTML, como Gecko) SamsungBrowser/4.0 Chrome/44.0.2403.133 Mobile Safari/537.36
- Bot para motor de búsqueda de Bing: Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)
- Bot para motor de búsqueda de Google: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
- iPhone de Apple: Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 como Mac OS X) AppleWebKit/603.1.30 (KHTML, como Gecko) Versión/10.0 Mobile/14E304 Safari/602.1
- iPad de Apple: Mozilla/5.0 (iPad; CPU OS 8_4_1 como Mac OS X) AppleWebKit/600.1.4 (KHTML, como Gecko) Versión/8.0 Mobile/12H321 Safari/600.1.4
- Microsoft Internet Explorer 11 / IE 11: Mozilla/5.0 (compatible, MSIE 11, Windows NT 6.3; Trident/7.0; rv:11.0) como Gecko
- Microsoft Internet Explorer 10 / IE 10: Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0; MDDCJS)
- Internet Explorer 9 de Microsoft / IE 9: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.0; Trident/5.0; Trident/5.0)
- Internet Explorer 8 de Microsoft / IE 8: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
- Internet Explorer 7 de Microsoft / IE 7: Mozilla/5.0 (Windows; U; MSIE 7.0; Windows NT 6.0; en-US)
- Internet Explorer 6 de Microsoft / IE 6: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
- Microsoft Edge: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393
- Mozilla Firefox: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:53.0) Gecko/20100101 Firefox/53.0
- Google Chrome: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, como Gecko) Chrome/58.0.3029.110 Safari/537.36
En resumen
Dado que la mayoría de los sitios web bloquean las peticiones que carecen de un agente de usuario de navegador válido o reconocible, aprender a rotar correctamente el UA es importante para evitar los bloqueos de sitios. Utilizar el agente de usuario correcto indicará al sitio web de destino que su solicitud procede de un origen válido, lo que le permitirá recopilar datos de sus sitios web objetivo.
Bright Data desarrolló una solución automatizada para desbloqueo de datos que ahorra a los equipos tiempo y uso de algoritmos de aprendizaje automático para generar agentes de usuario de navegador específicos para ciertos sitios, además de sortear sistemas para detección de bots.