Filtrar enlaces peligrosos
Cada enlace que su aplicación muestra, guarda o reenvía es un riesgo desde el momento en que alguien más controla el destino final. La API para comprobar URL maliciosa sigue las redirecciones hasta el destino real, examina esa página y devuelve un veredicto claro para que pueda bloquear, advertir o descartar un enlace antes de que llegue a la pantalla de un usuario.
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.
Quién termina necesitando esto
Los equipos que aceptan enlaces enviados por usuarios son el caso obvio: aplicaciones de chat, foros, sistemas de tickets, secciones de comentarios, extensiones de navegador. Menos evidente pero igual de frecuente son las plataformas de correo que reescriben enlaces al enviar, las redes publicitarias que revisan URLs de anuncios, y las herramientas internas que reciben URLs desde hojas de cálculo o exportaciones de CRM que nadie revisó de cerca. En cualquier punto donde una URL cruza una frontera de confianza, este endpoint tiene trabajo que hacer.
Qué pasa realmente con una URL
Al enviar una URL a POST /verify/url-safe, la tarea recorre la cadena de redirecciones hasta su destino verdadero, porque los atacantes suelen esconder una página maliciosa detrás de dos o tres saltos que parecen legítimos. Revisa el dominio y la ruta resueltos contra patrones conocidos de URLs dañinas, evalúa señales estructurales como dominios que imitan marcas, trucos de punycode y combinaciones sospechosas de dominio de nivel superior, y devuelve un veredicto acompañado de las señales concretas que lo motivaron, no solo un puntaje aislado.
Una breve historia de un problema persistente
Los ataques basados en URL han sobrevivido a casi toda otra categoría de amenaza web porque la solución es estructuralmente difícil: una URL es solo texto hasta que algo la resuelve, y para entonces la ventana de daño suele haberse abierto. Los acortadores de enlaces empeoraron el panorama al ocultar el destino por completo, y las cadenas de redirección de publicidad y rastreo hoy agregan saltos que parecen legítimos y que los atacantes explotan a propósito. El resultado es que revisar una URL a simple vista dejó de ser una defensa confiable hace años, y ahí es exactamente donde entra la verificación automatizada.
Cómo encaja en un flujo automatizado
Como la tarea es asíncrona, dispara la solicitud en el momento en que una URL se envía o se ingiere y continúa con lo suyo; el veredicto llega a su webhook, o lo obtiene desde un enlace firmado válido por 24 horas si prefiere consultarlo manualmente. Las verificaciones fallidas nunca se cobran, hay tres reintentos automáticos, y una solicitud que aun así no logra completarse devuelve un error claro en lugar de un silencio, algo que importa cuando la comprobación es lo único entre un usuario y un clic que no puede deshacer.
Lo que deliberadamente no hace
Este endpoint evalúa la URL en sí, no el contenido completo de la página en busca de suplantación de marca ni el historial de reputación del remitente; combínelo con verify.phishing cuando necesite una lectura a nivel de contenido de una página de destino o un correo. Mantener ambas comprobaciones separadas hace que esta siga siendo lo bastante rápida y económica como para ejecutarla en cada enlace al momento del envío, en vez de solo muestrear una fracción del tráfico.
Qué puede hacer con ella
Aplicaciones de chat y mensajería
Analice los enlaces en el instante en que un usuario los pega en una conversación, para marcar una redirección maliciosa antes de que alguien más en el hilo la toque.
Herramientas de soporte y tickets
Revise automáticamente las URLs adjuntas en tickets entrantes, ya que los agentes que manejan alto volumen son un blanco frecuente de phishing mediante enlaces disfrazados.
Secciones de comentarios y foros
Retenga brevemente las publicaciones con enlaces sin verificar, para detectar spam y distribuidores de malware antes de que lleguen a la vista pública.
Auditorías masivas de enlaces
Revise una hoja de cálculo con URLs de campañas antiguas o fuentes recolectadas para saber cuáles ahora apuntan a dominios comprometidos o abandonados.
Preguntas frecuentes
¿Existe un plan gratuito para la API de comprobar URL maliciosa?
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.
¿Cuánto cuesta comprobar una URL?
$0.002 por solicitud, cobrado solo si la tarea se completa con éxito. Los reintentos ante un fallo son automáticos y nunca se cobra una comprobación que no terminó.
¿Cómo recibo el resultado?
Por webhook firmado, que recomendamos para flujos en producción, o descargándolo desde un enlace firmado que permanece válido 24 horas si prefiere consultarlo manualmente.
¿Sigue las cadenas de redirección?
Sí, la tarea resuelve la URL hasta su destino final antes de evaluarla, porque el enlace enviado casi nunca es donde realmente aterriza el clic.
¿Puedo comprobar URLs en lote?
Sí, invoque el endpoint por cada URL a la velocidad que permita su integración; cada llamada es una tarea asíncrona independiente con su propio task_id.
¿Esto sustituye el análisis de contenido de phishing?
No. Este endpoint evalúa la URL y su ruta de resolución; para puntuar las señales de phishing de una página o un correo, úselo junto con verify.phishing.
¿Qué tiempos de respuesta debo esperar?
La tarea corre de forma asíncrona y devuelve un task_id de inmediato; el tiempo real depende de la profundidad de las redirecciones, y el webhook se dispara en cuanto el veredicto está listo.
¿Se conserva la URL que envié?
No, los datos se eliminan al vencer el periodo de retención y nunca se usan para entrenar modelos, sin importar el veredicto que se haya obtenido.
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/url-safe \
-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/url-safe", {
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/url-safe",
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/url-safe", 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/url-safe", 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.url_safe",
"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. |