Filtrado por user agent: qué es el UA y por qué no basta para protegerte de los bots

El filtrado por user agent es la forma más antigua de cortar bots: el servidor lee la cadena con la que se presenta el navegador y decide según ella. Vemos qué contiene esa cadena, cuándo se puede confiar en ella y por qué un UA por sí solo no basta para proteger el tráfico publicitario.

Bots y fraude12 min de lectura
Filtrado por user agent: qué es el UA y por qué no basta para protegerte de los bots
Contenido
  1. Qué es el user agent y qué dice
  2. Cómo funciona el filtrado por user agent
  3. El user agent de un bot: quién se presenta con honestidad
  4. Falsificar el user agent: por qué un filtro basado solo en el UA es débil
  5. Dónde sí es útil el filtrado por user agent
  6. Combinarlo con otras señales: el UA como una voz entre muchas
  7. Cómo funciona en ArtisanClo
  8. Errores típicos al filtrar por user agent
  9. En resumen

El user agent (UA) es la cadena con la que el navegador o cualquier otro programa se presenta al servidor en la cabecera de cada petición: nombre y versión del navegador, motor, sistema operativo y, a veces, modelo del dispositivo. El filtrado por user agent significa que el servidor lee esa cadena y decide según ella a quién deja pasar, a quién le muestra otra página y a quién corta como bot.

El método es sencillo y barato, por eso todavía aparece en scripts caseros y plugins «antibot». Pero la cadena la escribe el propio cliente, y falsificarla es más fácil que cualquier otra señal de la visita. A continuación: qué hay exactamente en el UA, cuándo se puede confiar en esa cadena, cuándo no y cómo usarla junto con otras señales.

Qué es el user agent y qué dice

Una cadena típica de Chrome móvil en Android es así:

Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Mobile Safari/537.36

Es más fácil leerla por partes:

Fragmento Qué significa
Mozilla/5.0 Prefijo histórico de compatibilidad; lo llevan casi todos los navegadores y no dice nada
(Linux; Android 10; K) Plataforma y SO; en los navegadores actuales, el modelo del dispositivo suele sustituirse por un marcador
AppleWebKit/537.36 (KHTML, like Gecko) Motor de renderizado y otro guiño a la compatibilidad
Chrome/130.0.0.0 Navegador y versión principal; los números menores hace tiempo que se ponen a cero
Mobile Safari/537.36 Señal de maquetación móvil

De esta cadena, el servidor suele sacar cuatro cosas: el tipo de dispositivo (smartphone, tableta, ordenador, televisor), el sistema operativo, el navegador y si lo que tiene delante no es un navegador, sino un programa o un robot.

Fíjate: la cadena casi no tiene información única. Millones de teléfonos envían el mismo UA, y justamente por eso los navegadores lo «congelaron», para que costara más rastrear a las personas con él.

Client Hints: adónde se mudan los detalles

Los navegadores basados en Chromium van recortando la cadena clásica y entregan los detalles mediante Client Hints: un conjunto de cabeceras Sec-CH-UA, Sec-CH-UA-Mobile, Sec-CH-UA-Platform y otras. Algunas llegan con cada petición y otras solo si el servidor las pide expresamente. Para el filtrado son útiles de dos maneras: es más difícil inventarlas de forma creíble desde cero, y se pueden contrastar con la cadena principal. Un navegador que en el UA dice ser Chrome en Windows y en las pistas informa de otra plataforma se comporta de forma extraña.

También hay una limitación: Safari y Firefox admiten las pistas de otra forma o no las admiten, así que la ausencia de Client Hints por sí sola no dice nada.

Cómo funciona el filtrado por user agent

En su forma más simple es una lista de subcadenas: si el UA contiene una de las palabras prohibidas, el visitante va a una página de relleno. Un poco más complejo es un parser que descompone la cadena en navegador, SO y dispositivo, con reglas sobre el resultado: «solo smartphones», «sin Smart TV», «solo Android».

Aquí es importante distinguir dos tareas diferentes:

  1. Segmentación: elegir el público objetivo. ¿Esta oferta necesita escritorio? ¿Encaja iOS? La cadena UA funciona bien aquí, porque las personas normales no la falsifican y el error sale barato.
  2. Protección contra bots: descartar la automatización. Aquí el UA es casi inútil como señal por sí sola: quien programa un bot lo primero que hace es poner la cadena de un navegador real.

Los filtros de audiencia por dispositivo, SO y navegador se explican en el artículo sobre el filtro por geo, dispositivo y horario. A partir de aquí hablamos de la segunda tarea.

El user agent de un bot: quién se presenta con honestidad

Parte del tráfico automático sí se presenta tal como es. Son dos clases distintas.

Scripts y utilidades toscos. Las librerías de peticiones HTTP, los descargadores de consola y los scrapers envían por defecto su propio UA, con el nombre de la librería y la versión, o no envían ninguno. Una cadena UA vacía o el nombre de una librería en lugar de un navegador es una señal fiable: una persona real que viene de un anuncio no llega así. Esas visitas se cortan al instante y casi sin riesgo.

Crawlers de buscadores y robots «educados». Los buscadores, los servicios de vista previa de enlaces y los monitores de disponibilidad suelen indicar con honestidad su nombre y un enlace a su descripción. Para un sitio normal son visitas útiles, y no se bloquean. Pero también aquí hay un matiz: los scrapers copian a menudo la cadena de un robot de búsqueda conocido para que los dejen pasar donde se deja pasar al buscador. Por eso los propios buscadores recomiendan verificar al robot no por el UA, sino con una consulta DNS inversa a la dirección IP: un crawler auténtico llega desde la red de su empresa.

Conclusión: el filtro por UA atrapa bien a quienes no intentan esconderse. Es una parte notable de las peticiones basura, y cortarla sale barato. Pero no es la parte del tráfico de bots que se come el presupuesto publicitario.

Falsificar el user agent: por qué un filtro basado solo en el UA es débil

Cualquier programa que se disfrace un poco envía la cadena de un Chrome o un Safari recientes. Se hace con una línea de código, y en el navegador, con un selector en las herramientas para desarrolladores. A partir de ahí surgen tres problemas.

La falsificación no se ve en la propia cadena. El UA correcto de un navegador real y el mismo UA en la petición de un script son idénticos byte a byte. No se puede comprobar la cadena contra sí misma, solo contrastarla con otras señales.

Las listas se quedan viejas. Una lista negra de subcadenas exige actualizarla constantemente: aparecen herramientas nuevas, las antiguas cambian de nombre y los navegadores reales cambian el formato de la cadena. Una lista que no se ha actualizado en medio año atrapa sobre todo lo que hace tiempo que no llega.

Falsos positivos con personas reales. Los navegadores integrados en apps, los WebView, los teléfonos antiguos y las versiones corporativas de navegadores envían cadenas poco habituales. La regla «es sospechoso todo lo que no parezca un Chrome estándar» corta justo el tráfico móvil de redes sociales, el que estás pagando. Las particularidades de los navegadores integrados se explican en detalle en el artículo sobre el tráfico in-app y el fraude móvil.

Consejo. Si una regla por UA salta en una parte notable del tráfico de pago, lo más probable es que esté cortando a personas reales, no a bots. Los bots contra los que vale la pena protegerse llegan con una cadena perfecta.

Dónde sí es útil el filtrado por user agent

Pese a todo lo anterior, el UA es una señal normal y necesaria si sabes cuál es su lugar.

  • Descartar la automatización tosca. UA vacío, nombre de una librería, de una utilidad de consola o de un framework de scraping: un «no» inmediato. Una capa barata que quita carga al resto de comprobaciones.
  • Detectar el tipo de dispositivo para segmentar y enrutar. Smartphone u ordenador, Android o iOS: para repartir el tráfico entre ofertas, la cadena UA suele bastar.
  • Reconocer los navegadores integrados. Por el UA se ve que la visita llegó desde un navegador dentro de una app. Esto no sirve para bloquear, sino al contrario: para no castigar esa visita por señales que en un WebView suelen ser falsas.
  • Contrastar con otras señales. El UA dice «iPhone», pero la pantalla, las fuentes y el comportamiento del script no. Esa discrepancia es la señal.
  • Analítica. Los desgloses por navegador y SO en los informes muestran dónde cae la conversión y de dónde viene un pico sospechoso.

Combinarlo con otras señales: el UA como una voz entre muchas

Una buena protección no pregunta «qué UA tiene la visita», sino «encaja el UA con todo lo demás». Estas son las señales con las que se suele contrastar:

Señal Con qué se contrasta el UA
Dirección IP y red Un navegador móvil desde una red de hosting merece atención; más detalles en el artículo sobre VPN, proxies e IP de centros de datos
Cabeceras de la petición El conjunto y el orden de cabeceras de un navegador real difieren de los de una librería, aunque la cadena UA sea la misma
Client Hints La plataforma y la marca del navegador en las pistas deben coincidir con la cadena
Ejecución de JavaScript Un navegador que dice ser un Chrome actual pero no ejecutó el script no se comporta como un navegador
Propiedades del navegador en el script Plataforma, pantalla, señales de automatización; más detalles en el artículo sobre navegadores headless y huella digital
Comportamiento Tiempo en la página, movimiento del ratón y toques

Cada señal por separado se equivoca. Juntas dan una evaluación que se equivoca mucho menos. Así funciona cualquier filtro de tráfico inteligente actual: una señal aislada añade un poco de sospecha, y una conclusión segura sale de la coincidencia de varias. El esquema general de capas de protección lo vimos en el artículo sobre cómo filtrar bots.

Cómo funciona en ArtisanClo

En ArtisanClo, la cadena user agent es una de las señales, no una regla aparte «por lista». La decisión sobre una visita se compone de varios pasos, y el UA participa en cada uno a su manera.

Red y petición. El primer paso mira la dirección, la red, el proveedor, las cabeceras, el identificador de clic y las reglas del flujo, antes de comprobar el navegador. Aquí se cortan los programas en lugar de navegadores y los robots de las plataformas que generan vistas previas de enlaces: esas visitas reciben siempre la White Page, con cualquier configuración, y el registro muestra el motivo «Un programa, no un navegador» o «Crawler de buscador o plataforma». Es el paso que menos afecta a las personas reales.

Audiencia. En la configuración de filtrado del flujo hay listas de «Dispositivos», «Sistemas operativos» y «Navegadores» con los botones «Permitidos» y «Bloqueados». Entre los dispositivos se distinguen aparte «Bot / rastreador» y «Desconocido». Esto es segmentación: el visitante que no pasa la lista ve la White Page con un motivo claro.

Comprobación del navegador. Quien envió la cadena de un navegador real pasa la comprobación del script, y es su respuesta la que muestra si la visita parece automatizada. El bloqueo de navegadores headless con rastros claros de automatización corta al instante; las señales menos claras van a la puntuación de confianza junto con la red, la VPN y la presencia de proveedor y sitio de origen.

Navegadores integrados. Los navegadores integrados de Facebook, Instagram y TikTok y los WebView de las apps se reconocen aparte. Una señal de automatización en ellos no corta la visita de inmediato, sino que se tiene en cuenta en la puntuación de confianza junto con la red, el tiempo y el referer, porque en esos navegadores suele ser falsa.

Transparencia. Cada clic del registro tiene el motivo de su decisión entre decenas posibles, y el enlace «Informe de la visita» muestra todas las señales y conclusiones de una visita. Si sospechas que el filtro se equivocó, empieza por el artículo por qué el clic fue a la White Page. Todas las posibilidades de filtrado están en la página de funciones.

Errores típicos al filtrar por user agent

  1. Basar la protección en una lista negra de subcadenas. Solo atrapa a quien no se esconde y exige actualizarla sin fin.
  2. Bloquear todo lo «no estándar». Caen los navegadores integrados de las redes sociales y los dispositivos antiguos: tráfico de pago real.
  3. Creer a una cadena que parece correcta. Un UA perfecto de un navegador actual es justo lo que envía un bot bien hecho.
  4. Confundir segmentación con protección. Elegir «solo Android» es una decisión sobre el público de la oferta, no una forma de librarse de los bots.
  5. No mirar los motivos del descarte. Si no ves qué regla actuó, no puedes saber si el filtro corta bots o personas. Las señales con las que se ve el tráfico de bots en los informes están en el artículo sobre las señales del tráfico de bots.

En resumen

La cadena user agent es lo que el cliente dice de sí mismo. Se le puede creer cuando hay poco en juego: para detectar el dispositivo, repartir el tráfico y hacer analítica. No se le puede creer como prueba de que delante hay una persona. El filtrado por user agent elimina bien los scripts toscos y las peticiones vacías, pero la protección de verdad empieza cuando el UA se contrasta con la red, las cabeceras, los Client Hints, la ejecución del script y el comportamiento. Entonces una cadena falsificada no ayuda al bot, y una cadena poco habitual no perjudica al visitante real.

Preguntas frecuentes

01

¿Qué es el user agent en palabras simples?

Es una breve tarjeta de presentación en texto que el navegador o el programa envía al servidor con cada petición. Indica qué programa es, qué versión tiene y en qué sistema funciona. Con ella, el servidor elige la maquetación, cuenta estadísticas y a veces decide si deja pasar al visitante.

02

¿Se puede falsificar el user agent?

Sí, y muy fácilmente. En cualquier librería de peticiones HTTP es una línea de configuración, y en el navegador, una opción de las herramientas para desarrolladores o una extensión. Por eso, que el UA coincida con un Chrome normal no demuestra nada, pero una discrepancia clara entre el UA y el resto de señales de la visita sí es una señal de peso.

03

¿Cómo saber cuál es mi user agent?

Lo más sencillo es abrir la consola de desarrollador del navegador y ejecutar navigator.userAgent: aparecerá la cadena completa. También se ve en la pestaña de red, en las cabeceras de cualquier petición. Muchas webs de comprobación también la muestran, pero para trabajar bastan las herramientas del propio navegador.

04

¿Por qué no se bloquea a los robots de búsqueda por su user agent?

Para un sitio normal, los robots de búsqueda son útiles: sin ellos, la página no aparece en los resultados. Además, su UA se falsifica a menudo, así que los propios buscadores recomiendan verificar al robot no por la cadena, sino con una consulta DNS inversa a su IP. Bloquearlos o dejarlos pasar es decisión del dueño del sitio, no tarea de un filtro publicitario.

05

¿Los Client Hints sustituirán la cadena user agent?

En parte. Los navegadores basados en Chromium ya están recortando la cadena clásica y llevando los detalles a las cabeceras Sec-CH-UA, y algunas solo las recibe el servidor si las pide. Otros navegadores no las admiten del todo, así que en la práctica los sitios leen ambas fuentes y las comparan entre sí.

Sigue leyendo

Comprueba tu tráfico en la práctica

Conecta ArtisanClo a tu sitio, mira quién llega realmente desde tus anuncios y por qué cada clic recibió su decisión.