Construire un pipeline de détection de fraude
Un signal suspect isolé raconte rarement toute l'histoire. Un email peut sembler normal seul, mais associé à une IP de datacenter et un domaine fraichement enregistré, le tableau change vite. Combiner plusieurs APIs Veille dans un pipeline offre une vue composite du risque pour chaque inscription.
Vue d'ensemble de l'architecture
Le principe est simple : valider l'email (/v1/intelligence/email), vérifier l'âge du domaine (/v1/intelligence/domain) et scorer l'IP (/v1/intelligence/ip). Trois appels, trois signaux, un score composite.
Intégration rapide
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,
};
}
Pondérations recommandées
| Signal | Poids | Pourquoi |
|---|---|---|
| Score de risque email | 40 % | Les emails jetables et de rôle sont l'indicateur de fraude le plus fiable |
| Risque lié à l'âge du domaine | 35 % | Les domaines récemment enregistrés sont fortement corrélés à la fraude |
| Score de menace IP | 25 % | Les VPN sont aussi utilisés par des utilisateurs légitimes soucieux de leur vie privée |
5 cas d'utilisation
- Inscription utilisateur - calculer un score composite à l'inscription et rejeter automatiquement au-dessus d'un seuil.
- Vérification au checkout - exécuter le pipeline avant de traiter un paiement pour détecter les identités synthétiques.
- Onboarding de vendeurs marketplace - filtrer les nouveaux marchands en combinant les signaux email, domaine et IP.
- Modération de contenu - prioriser la revue des publications provenant de comptes à haut risque.
- Sécurité des webhooks - valider l'IP et le domaine d'origine des webhooks entrants avant de les traiter.
Articles connexes
- Réputation IP : pourquoi votre pare-feu ne suffit pas - analyse approfondie du signal IP utilisé dans ce pipeline
- Comment les emails jetables sont utilisés dans la fraude aux comptes - analyse approfondie du signal email utilisé dans ce pipeline
- Validation IBAN : plus qu'un simple checksum - ajouter la validation des paiements pour réduire la fraude au checkout
- Utiliser l'API Veille dans une entreprise autonome Paperclip - implémenter ce pipeline de fraude dans un org chart Paperclip avec heartbeats et contrôle des coûts