Construindo um pipeline de detecção de fraudes
Um único sinal suspeito raramente conta a história completa. Um email pode parecer correto por si só, mas combinado com um IP de datacenter e um domínio recém-registrado, o cenário muda rapidamente. Combinar múltiplas APIs da Veille em um pipeline oferece uma visão de risco composta para cada cadastro.
Visão geral da arquitetura
Em sua forma mais simples: validar o email (/v1/intelligence/email), verificar a idade do domínio (/v1/intelligence/domain) e pontuar o IP (/v1/intelligence/ip). Três chamadas, três sinais, uma pontuação composta.
Integração rápida
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,
};
}
Pesos recomendados
| Sinal | Peso | Por quê |
|---|---|---|
| Pontuação de risco do email | 40% | Contas descartáveis/genéricas são o indicador mais forte de fraude |
| Risco de idade do domínio | 35% | Domínios recém-registrados se correlacionam fortemente com fraude |
| Pontuação de ameaça do IP | 25% | VPNs também são usadas por usuários legítimos preocupados com privacidade |
5 casos de uso
- Registro de usuário - calcule uma pontuação composta no cadastro e rejeite automaticamente acima de um limite definido.
- Verificação no checkout - execute o pipeline antes de processar um pagamento para detectar identidades sintéticas.
- Onboarding de vendedores em marketplace - avalie novos comerciantes combinando sinais de email, domínio e IP.
- Moderação de conteúdo - priorize a revisão de publicações de contas de alto risco.
- Segurança de webhooks - valide o IP de origem e o domínio de webhooks recebidos antes de processá-los.
Artigos relacionados
- Reputação de IP: por que seu firewall não é suficiente - uma análise aprofundada do sinal de IP usado neste pipeline
- Como emails descartáveis são usados em fraudes de conta - uma análise aprofundada do sinal de email usado neste pipeline
- Validação de IBAN: mais do que um simples checksum - adicionar validação de pagamento para reduzir fraudes no checkout
- Usar a API Veille em uma empresa autônoma Paperclip - implementar este pipeline de detecção de fraudes em um org chart do Paperclip com heartbeats e controle de custos