Puntuar tráfico de bots
Un formulario, un intento de inicio de sesión o un comentario no anuncian si los envió una persona o un script, y tratar toda solicitud igual deja pasar bots o molesta a usuarios reales con fricción que no necesitaban. Este endpoint puntúa la probabilidad de que una solicitud provenga de automatización, para que decida qué hacer a continuación.
Ejecútela online
Ejecute esto en nuestros servidores con su cuenta. Las herramientas gratuitas corren en su navegador; esta cobra de su saldo del KIT según el precio de arriba.
La pregunta que todo endpoint abierto termina enfrentando
Cualquier formulario, API o página de inicio de sesión accesible desde internet eventualmente recibirá tráfico de scripts, navegadores sin interfaz y herramientas de scraping junto a visitantes reales. Lo difícil no es bloquear los bots evidentes — es distinguir los que se parecen casi a un humano de las personas que navegan o escriben de forma genuinamente inusual.
Qué representa el puntaje
El endpoint devuelve un puntaje numérico que refleja qué tan probable es que la solicitud sea automatizada, basado en señales presentes en la propia solicitud — cosas como la consistencia de los encabezados, características de la conexión y patrones asociados a tráfico generado por script frente a una sesión típica de navegador. Es una probabilidad, no una certeza, y está pensado para alimentar una decisión, no para ser la decisión en sí misma.
Por qué un puntaje es mejor que un sí o no
Una respuesta binaria de bot o no bot obliga a aplicar la misma política a todos los casos, pero un puntaje permite fijar umbrales distintos según lo que está en juego: un registro a un boletín de bajo valor puede tolerar un umbral más laxo que un restablecimiento de contraseña o un checkout. Esa flexibilidad es la razón de devolver un puntaje en vez de una etiqueta.
Una carrera que la automatización volvió necesaria
A medida que las herramientas de scraping y relleno de credenciales mejoraron para imitar el comportamiento de un navegador real, revisiones simples como el user-agent dejaron de bastar por sí solas, lo que hizo que puntuar con base en varias señales de la solicitud se volviera el enfoque más duradero — ninguna señal cuenta toda la historia, pero combinadas son más difíciles de falsificar de forma convincente.
Cómo se integra en su flujo
Envía el contexto de la solicitud, recibe un task_id de inmediato, y el puntaje llega por su webhook firmado o por un enlace firmado válido por 24 horas. La mayoría de las integraciones lo llaman en el momento del envío y dirigen la respuesta hacia su lógica existente de límite de tasa o verificación, sin reemplazarla.
Qué puede hacer con ella
Reducción de spam en formularios
Puntúe los envíos de formularios de contacto o registro para descartar en silencio el spam probablemente automatizado, sin imponer un CAPTCHA visible a todos.
Protección del inicio de sesión
Agregue verificación adicional solo a los intentos de inicio de sesión que puntúan como probablemente automatizados, manteniendo el flujo sin fricción para usuarios reales.
Defensa contra bots de reventa e inventario
Marque intentos de compra rápidos y repetitivos que puntúan como automatizados durante lanzamientos de productos con stock limitado.
Calidad de reseñas y comentarios
Filtre reseñas o comentarios probablemente generados por bots antes de que lleguen a la cola de moderación.
Preguntas frecuentes
¿Cómo genera el puntaje esta api para detectar bots?
Evalúa señales presentes en la propia solicitud, como la consistencia de encabezados y de la conexión, y patrones típicos de tráfico generado por script, y devuelve un puntaje numérico de qué tan probable es que sea automatizada.
¿Un puntaje de bot es lo mismo que un CAPTCHA?
No. Un CAPTCHA interrumpe al usuario para que demuestre que es humano; este endpoint puntúa la solicitud en silencio, en segundo plano, y le deja decidir si agregar fricción solo cuando el puntaje lo amerita.
¿Qué puntaje se considera un bot?
No hay un umbral universal — el puntaje es una probabilidad, y el umbral correcto depende de cuánto riesgo tolera cada acción, desde laxo para formularios de bajo valor hasta estricto para inicios de sesión o checkout.
¿Garantiza detectar todos los bots?
Ningún método de detección atrapa absolutamente todo; la automatización sofisticada que imita muy bien el comportamiento real puede seguir puntuando bajo, por eso el puntaje complementa otras defensas en vez de sustituirlas.
¿Es gratuita?
No hay capa gratuita: las capas gratis se abusan y ralentizan a todos. El acceso funciona con un saldo prepago de ForHosting KIT: se recarga desde $10.00 (no caduca) y cada solicitud se cobra a su precio publicado, así que una llamada sin saldo devuelve HTTP 402. Sin suscripción, sin tokens ni créditos inventados, y una tarea fallida no se cobra.
¿Puedo puntuar solicitudes en bloque?
Cada llamada puntúa una solicitud; para tráfico alto, envíe una solicitud por evento y deje que el modelo asíncrono maneje el volumen en paralelo.
¿Qué tan rápido llega el puntaje?
El task_id se devuelve de inmediato, y el puntaje llega por su webhook firmado o por un enlace firmado válido por 24 horas.
¿Se conservan los datos de la solicitud después de puntuar?
No, se eliminan al terminar el periodo de retención y nunca se usan para entrenar modelos, y las solicitudes fallidas se reintentan hasta tres veces sin cobrarse.
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/bot-score \
-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/bot-score", {
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/bot-score",
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/bot-score", 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/bot-score", 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.bot_score",
"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. |