Construir un pipeline de deteccion de fraude
Una sola senal sospechosa rara vez cuenta toda la historia. Un email puede parecer normal por si solo, pero combinado con una IP de datacenter y un dominio recien registrado, el panorama cambia rapido. Combinar varias APIs de Veille en un pipeline ofrece una vista compuesta del riesgo de cada registro.
Vista general de la arquitectura
El principio es simple: validar el email (/v1/intelligence/email), comprobar la antiguedad del dominio (/v1/intelligence/domain) y puntuar la IP (/v1/intelligence/ip). Tres llamadas, tres senales, un score compuesto.
Integracion rapida
Python
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.veille.io/v1"
def score_signup(email: str, ip: str) -> dict:
headers = {"x-api-key": API_KEY}
email_data = requests.get(
f"{BASE_URL}/intelligence/email", params={"query": email}, headers=headers
).json()
domain_data = requests.get(
f"{BASE_URL}/intelligence/domain", params={"query": email_data["domain"]}, headers=headers
).json()
ip_data = requests.get(
f"{BASE_URL}/intelligence/ip", params={"query": ip}, headers=headers
).json()
age = min(domain_data.get("domain_age_days", 365), 365)
domain_risk = ((365 - age) / 365) * 100
composite = (
email_data["risk_score"] * 0.40
+ domain_risk * 0.35
+ ip_data["threat_score"] * 0.25
)
return {
"composite_score": round(composite),
"disposable_email": email_data["disposable"],
"vpn_or_proxy": ip_data["is_vpn"] or ip_data["is_proxy"],
"domain_age_days": domain_data.get("domain_age_days"),
}
TypeScript
const API_KEY = "YOUR_API_KEY";
const BASE_URL = "https://api.veille.io/v1";
const headers = { "x-api-key": API_KEY };
async function scoreSignup(email: string, ip: string) {
const [emailResponse, ipResponse] = await Promise.all([
fetch(`${BASE_URL}/intelligence/email?query=${email}`, { headers }),
fetch(`${BASE_URL}/intelligence/ip?query=${ip}`, { headers }),
]);
const [emailData, ipData] = await Promise.all([
emailResponse.json(),
ipResponse.json(),
]);
const domainResponse = await fetch(
`${BASE_URL}/intelligence/domain?query=${emailData.domain}`,
{ headers }
);
const domainData = await domainResponse.json();
const age = Math.min(domainData.domain_age_days ?? 365, 365);
const domainRisk = ((365 - age) / 365) * 100;
return {
compositeScore: Math.round(
emailData.risk_score * 0.4 + domainRisk * 0.35 + ipData.threat_score * 0.25
),
disposableEmail: emailData.disposable,
vpnOrProxy: ipData.is_vpn || ipData.is_proxy,
domainAgeDays: domainData.domain_age_days,
};
}
Ponderaciones recomendadas
| Senal | Peso | Por que |
|---|---|---|
| Puntuacion de riesgo del email | 40 % | Los emails desechables y de rol son el indicador de fraude mas fiable |
| Riesgo por antiguedad del dominio | 35 % | Los dominios recien registrados estan fuertemente correlacionados con el fraude |
| Puntuacion de amenaza IP | 25 % | Las VPN tambien son usadas por usuarios legitimos preocupados por su privacidad |
5 casos de uso
- Registro de usuario : calcular una puntuacion compuesta en el registro y rechazar automaticamente por encima de un umbral.
- Verificacion en el checkout : ejecutar el pipeline antes de procesar un pago para detectar identidades sinteticas.
- Onboarding de vendedores en marketplace : filtrar nuevos comerciantes combinando senales de email, dominio e IP.
- Moderacion de contenido : priorizar la revision de publicaciones de cuentas de alto riesgo.
- Seguridad de webhooks : validar la IP y el dominio de origen de los webhooks entrantes antes de procesarlos.
Artículos relacionados
- Reputación IP: por qué tu firewall no es suficiente - análisis en profundidad de la señal IP utilizada en este pipeline
- Cómo se usan los emails desechables en el fraude de cuentas - análisis en profundidad de la señal de email utilizada en este pipeline
- Validación IBAN: más que un simple checksum - agregar validación de pagos para reducir el fraude en el checkout
- Usar la API de Veille en una empresa autónoma de Paperclip - implementar este pipeline de detección de fraude en un org chart de Paperclip con heartbeats y control de costes