Documentazione

Aggiungi l'agente alla pagina di registrazione, chiama un endpoint dal tuo server, agisci in base alla decisione.

Avvio rapido

1. Aggiungi l'agente alla pagina di registrazione

Raccoglie i segnali del dispositivo e inserisce un token visitatore di breve durata in un campo nascosto chiamato attrelix_visitor in ogni modulo della pagina. Espone anche window.attrelix.token() per le single-page app.

<script src="https://attrelix.com/v1.js?v=0bbe74b52d" data-key="pk_live_…" async></script>

// single-page apps: wait for the token before you submit
const visitor = await window.attrelix.token();

2. Controlla la registrazione dal tuo server

Invia email, IP del client e token visitatore con la tua chiave segreta. Facoltativi: external_id (l'id del tuo utente), user_agent e card_fingerprint (per esempio card.fingerprint di Stripe).

curl https://attrelix.com/v1/check \
  -H "Authorization: Bearer $ATTRELIX_SECRET" \
  -H "Content-Type: application/json" \
  -d '{"email":"jdoe+7@gmail.com","ip":"203.0.113.9","visitor":"vt1.…"}'
# Python
r = requests.post("https://attrelix.com/v1/check", timeout=3,
    headers={"Authorization": f"Bearer {SECRET}"},
    json={"email": email, "ip": ip, "visitor": form["attrelix_visitor"]})
decision = r.json().get("decision", "allow") if r.ok else "allow"

3. Agisci in base alla decisione

allow: concedi i crediti gratuiti. review: chiedi qualcosa che costi soldi a una farm — una carta, un numero di telefono — o concedi meno crediti. block: rifiuta l'account o i crediti. Se la chiamata fallisce, consenti: non bloccare mai utenti reali per colpa nostra.

Chiavi e token

  • Chiave pubblica (pk_live_…): pubblica per scelta. Sta nella tua pagina e può solo raccogliere segnali, dalle origini che consenti nella dashboard.
  • Chiave segreta (sk_live_…): solo lato server. Esegue i controlli e legge i risultati. Ne conserviamo solo l'hash: copiala quando la crei.
  • Token visitatore: firmato da noi, valido 15 minuti e per un solo controllo, legato al tuo progetto. Un token usato due volte, o proveniente da una rete diversa da quella della registrazione, alza il punteggio.

POST /v1/check

Corpo della richiesta (JSON). Invia almeno uno tra email, ip e visitor.

emailL'indirizzo digitato dall'utente.
ipL'IP del client nella richiesta di registrazione (non quello del tuo server).
visitorIl valore attrelix_visitor del modulo.
user_agentL'intestazione User-Agent della richiesta di registrazione.
external_idIl tuo id dell'account, se esiste già.
card_fingerprintUn'impronta della carta, quando una carta viene aggiunta alla registrazione.

Risposta

decision è allow, review o block. score va da 0 a 100: la somma dei punti dei motivi, con un tetto. Ogni motivo ha un codice stabile da registrare o mostrare.

{
  "id": "chk_3fJ8kQ2mN7pX1aZb",
  "decision": "block",
  "score": 100,
  "reasons": [
    { "code": "linked_accounts_10", "points": 45, "detail": "14" },
    { "code": "alias_of_existing", "points": 30, "detail": "3 variants of jdoe@gmail.com" },
    { "code": "datacenter_ip", "points": 25, "detail": "aws" }
  ],
  "email":   { "normalized": "jdoe@gmail.com", "disposable": false, "relay": false, "mx": "yes", … },
  "network": { "ip": "3.88.0.1", "type": "datacenter", "provider": "aws", "signups_24h": 2 },
  "device":  { "id": "dev_9c1e…", "token": "valid", "browser": "Firefox 144", "flags": ["canvas_noise"] },
  "linked":  { "accounts": 14, "by_device": 12, "by_card": 0, "cluster": "cl_7q2f…" },
  "latency_ms": 38
}

Errori

Gli errori sono JSON: {"error": code, "message": text}.

401chiave mancante, sconosciuta, revocata o del tipo sbagliato (una chiave pk_ su /v1/check).
400il corpo non è JSON o non contiene né email, né ip, né visitor.
402i controlli mensili del piano sono esauriti.
403l'agente è stato eseguito su un'origine che non hai consentito.
429troppe richieste da un indirizzo.

Punteggio

I punti si sommano con un tetto di 100. Predefiniti: verifica da 50, blocco da 80 — entrambi regolabili. Una casella usa e getta da sola porta a verifica; nessun singolo segnale di dispositivo o di rete ci arriva.

CodicePuntiSignificato
invalid_email+50L'indirizzo non è valido
disposable_email+50Dominio email usa e getta
no_mx+35Il dominio non può ricevere posta
alias_of_existing+30Altra grafia di una casella già vista
relay_email+10Indirizzo di inoltro
plus_tag+5Tag + o punti di Gmail
tor_exit+35Nodo di uscita Tor
datacenter_ip+25Indirizzo di datacenter o cloud
vpn_ip+20Indirizzo VPN
ip_signups_24h+103+ account da questo IP in 24 h
ip_signups_24h_high+2510+ account da questo IP in 24 h
subnet_burst+1510+ account da questa sottorete in 1 h
automation_webdriver+40Automazione WebDriver
headless_browser+40Browser headless
automation_cdp+10Automazione via protocollo DevTools (Puppeteer, Playwright)
antidetect_browser+15Browser anti-detect (più travestimenti insieme)
headless_viewport+15Finestra senza barra né schede del browser
webgl_os_mismatch+25La scheda grafica appartiene a un altro sistema operativo
memory_cpu_mismatch+10Numero di core e memoria non coincidono
no_human_interaction+30Inviato subito, senza digitare, muovere il mouse o toccare
instant_signup+25Compilato e inviato entro un secondo dal caricamento
os_mismatch+20Il sistema operativo si contraddice
browser_mismatch+20Il browser contraddice il proprio user agent
fonts_mismatch+15I font non corrispondono al sistema dichiarato
canvas_noise+15Impronta canvas casuale
software_renderer+15Grafica software (macchina virtuale o headless)
zero_window+15Finestra senza dimensioni
permissions_mismatch+15Stati dei permessi contraddittori
no_plugins+10Chrome desktop senza plugin
no_languages+10Browser senza lingue
utc_timezone+5Orologio in UTC
token_missing0–100Nessun token visitatore (agente non caricato o bloccato)
token_invalid+30Token visitatore falsificato o estraneo
token_replayed+35Token visitatore già usato
token_expired+10Token visitatore scaduto
token_ip_mismatch+8Token raccolto su un'altra rete
token_ua_mismatch+15Token raccolto da un altro browser
linked_accounts+15Collegato ad altri account
linked_accounts_3+30Collegato a 3+ account
linked_accounts_10+45Collegato a 10+ account
shared_card+30Carta usata da un altro account
device_burst+155+ controlli da questo dispositivo in 1 h

Fonti dei dati

Domini usa e getta: il progetto disposable-email-domains (CC0) e disposable/disposable-email-domains (MIT), aggiornati ogni giorno. Intervalli di datacenter: gli elenchi pubblicati da AWS, Google Cloud, Oracle Cloud, DigitalOcean e Linode. Tor: l'elenco dei nodi di uscita del Tor Project, aggiornato ogni ora.

In questo momento: 98,644 domini usa e getta e 21,665 intervalli.