Analizar un user agent
Una cadena de user agent en bruto es densa, inconsistente entre proveedores y cambia de forma con cada nueva versión de navegador, lo que hace que las reglas de análisis escritas a mano se vuelvan obsoletas rápido. Esta api para analizar user agent descompone cualquier cadena UA en navegador, motor, sistema operativo, tipo de dispositivo y una clasificación de bot, para que sus registros y analíticas dejen de adivinar.
Ejecutar — gratis
Corre en su navegador. Gratis y sin límite: sus datos no salen de esta página.
Por qué la cadena en sí es un desorden
El encabezado de user agent nunca siguió una especificación estricta, evolucionó como una cadena de navegadores que fingían ser otros navegadores por razones de compatibilidad que se remontan a las guerras de navegadores de los años noventa. Por eso un UA moderno de Chrome todavía contiene la palabra 'Mozilla' y a menudo 'like Gecko' y 'Safari' aunque no sea ninguno de los dos. Analizarlo correctamente exige conocer esa historia, no solo separar por espacios, y por eso los enfoques ingenuos con expresiones regulares se rompen en cuanto sale una nueva versión de navegador o una nueva línea de dispositivos.
Qué devuelve POST /verify/user-agent
Envía la cadena UA en bruto y la tarea extrae la familia y versión del navegador, el motor de renderizado, el sistema operativo y su versión, el tipo de dispositivo (escritorio, móvil, tablet o no reconocido) y una marca de clasificación que indica si la cadena coincide con un patrón conocido de cliente automatizado, rastreador o bot. Obtiene campos estructurados en lugar de una cadena que de otro modo tendría que descifrar usted mismo.
Quién necesita esto en realidad
Equipos de analítica cansados de que los buckets de 'dispositivo desconocido' distorsionen sus paneles, plataformas publicitarias que necesitan separar tráfico humano de tráfico de rastreadores antes de facturar a un cliente, y equipos de soporte que intentan reproducir un error reportado contra una versión específica de navegador, todos dependen de la misma tarea de fondo: convertir una cadena opaca en algo consultable. Es una pieza pequeña de infraestructura que sostiene silenciosamente una cantidad sorprendente de decisiones.
Cómo encaja en un flujo existente
Como cada llamada es asíncrona, puede registrar las cadenas UA en bruto conforme llegan y analizarlas en lote después, en lugar de hacerlo en el camino crítico de la solicitud, o enviarlas una por una si necesita la clasificación antes de decidir cómo responder. Los resultados llegan por webhook firmado o por un enlace firmado válido por 24 horas, y nada de lo que envía se conserva más allá del periodo de retención indicado ni se usa para entrenar nada.
Dónde están los límites
Una cadena de user agent se puede falsificar, así que la detección de bots basada solo en ella es una señal, no una garantía. El tráfico automatizado sofisticado puede presentar un UA que parece legítimo, y por eso este endpoint funciona mejor como una capa entre varias, no como el único filtro para algo crítico de seguridad.
Qué puede hacer con ella
Limpieza de paneles de analítica
Reemplace los buckets de 'navegador desconocido' y 'dispositivo desconocido' con desgloses estructurados y precisos extraídos directamente de los registros de solicitudes.
Segregación de tráfico de bots
Marque las solicitudes que coinciden con patrones conocidos de rastreadores y clientes automatizados antes de que se cuenten como sesiones humanas en un reporte.
Soporte para reproducir errores
Convierta la cadena de user agent pegada por un cliente en una versión clara de navegador y sistema operativo para que soporte técnico reproduzca el entorno exacto.
Decisiones de contenido por dispositivo
Clasifique el tráfico entrante por tipo de dispositivo en lote para decidir qué solicitudes históricas debieron recibir una respuesta optimizada para móviles.
Preguntas frecuentes
¿Qué extrae exactamente esta api para analizar user agent?
Familia y versión del navegador, motor de renderizado, sistema operativo y versión, tipo de dispositivo, y una clasificación de bot o cliente automatizado, todo a partir de una sola cadena UA en bruto.
¿Puede detectar bots y rastreadores?
Marca las cadenas que coinciden con patrones conocidos de bots y rastreadores, pero como el encabezado de user agent se puede falsificar, trátelo como una señal más y no como prueba definitiva.
¿Soporta navegadores poco comunes o antiguos?
Analiza la amplia variedad de patrones de navegador, sistema operativo y dispositivo en uso activo e histórico, aunque una cadena verdaderamente nueva o mal formada puede devolver una clasificación parcial o no reconocida.
¿Hay plan gratuito?
La herramienta de arriba es gratis en su navegador. La API es de pago: cada llamada se descuenta de su saldo prepago de ForHosting KIT — se recarga desde $10.00 (no caduca), se paga el precio publicado de cada solicitud, y una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens, y una tarea fallida no se cobra.
¿Cuál es el precio por análisis?
$0.002 por solicitud, y solo se cobra por las tareas que se completan con éxito.
¿Puedo analizar cadenas de user agent en lote?
Sí, como el análisis corre de forma asíncrona, puede enviar lotes grandes desde registros almacenados sin bloquear nada de su lado.
¿Cómo llegan los resultados?
POST /verify/user-agent devuelve un task_id de inmediato, y el resultado analizado se entrega por webhook firmado o por un enlace firmado válido por 24 horas.
¿Qué pasa con las cadenas UA que envío?
Se eliminan después del periodo de retención indicado y nunca se usan para entrenar ningún modelo.
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, y pronto desde nuestra app, el email y Telegram.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/verify/user-agent \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"items":["valor-1","valor-2"]}'const res = await fetch("https://api.kit.forhosting.com/verify/user-agent", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"items": [
"valor-1",
"valor-2"
]
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/verify/user-agent",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"items": [
"valor-1",
"valor-2"
]
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/verify/user-agent", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"items":["valor-1","valor-2"]}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"items":["valor-1","valor-2"]}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/verify/user-agent", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"items": [
"valor-1",
"valor-2"
]
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "verify.user_agent",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |