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.