Bot Protection we antifrod API
1) Bu näme üçin zerur?
Botlar we hüjümçiler ösüşiň we puluň giriş nokatlaryna hüjüm edýärler: hasaba alyş, login (ATO), goýumlar/netijeler, mahabat-mehanika, oýunlaryň/koeffisiýentleriň kataloglary. El düzgünleri we arassa rate limit indi ýeterlik däl: köp derejeli signallar, hakyky wagtda skoring we iş wakalaryndan (çarjbekler, chargeback-ratio, KYC-feýller) seslenme bilen çözgüt gözegçiligi (allow/deny/challenge/throttle) gerek.
2) Howplaryň taksonomiýasy
Hasaba alyş/onbording: köpçülikleýin hasaplar, bir gezek ulanylýan e-mail/sim-banklar, enjamlaryň fermalary.
ATO (Account Takeover): credential stuffing, password spraying, session hijack.
Bonus-hyýanat: multiakkauting, geo/ýurisdiksiýa arbitraji, öz-özünden aýlanyp geçmek.
Karting/töleg frody: kartlaryň synagy, ogurlanan gapjyklar, serişdeleri yzyna gaýtarmak.
Skraping/inwentar: mazmuny, bahalary, koeffisiýentleri agressiw çekmek.
Pes intensiwlikli API-DoS: pyşbagalar hüjümleri, slow-POST, ykjam SDK emulýasiýalary.
Webhuki/integrasiýa: HMAC/mTLS, replay bolmasa habarnamalaryň galplaşdyrylmagy.
3) Gorag arhitekturasy
3. 1 gatlak
1. Edge (CDN/WAF/şlýuz): irki şowsuzlyklar (ASN/Geo/IP-abraýy), ýeňil kynçylyklar, çäkler, PoW.
2. Töwekgelçilik API (töwekgelçilik boýunça PDP): düzgünleriň merkezleşdirilen hereketlendirijisi/ML; ответ — `decision`, `score`, `reason`, `ttl`.
3. App-derejesi: domen üýtgemeleri, işewürlik logikasy (çäkler, KYC, AML), asinhron rebyu.
4. Wakalaryň akymy: Kafka/Kinesis → feature store/model → töleglerden/jedellerden seslenme.
3. 2 Çözgüdiň kontury
[Request] → Edge Plugins → (enrich) → Risk API (rules+ML) → Decision:
allow deny throttle challenge(type=captcha sms PoW biometry)
Çözgüt açar boýunça (mysal üçin device × account × route) 'ttl' sekuntda açylýar.
4) Signallar we baýlaşdyrmak
Tor/kanal: IP/ASN, proxy/VPN/Tor, rdns, rtt/jitter, SYN-rate, TLS-fingerprint (JA3/JA4), HTTP/2/3 özüni alyp barşy.
Enjam/brauzer: canvas/audio/WebGL FP (seresaplylyk bilen), platforma/SDK, timezone/locale, çözgüt, şriftler, WebDriver/headless görkezijileri, mobile attestation (SafetyNet/DeviceCheck, mümkin boldugyça).
Özüni alyp barşy: giriş tizligi, syçan/taç traýektoriýalary, ekranlaryň yzygiderliligi, dwell-wagt, synanyşyklaryň ýygylygy, brauzer kesgitleýjileriniň arasynda geçişler.
Mazmun/haýyş: e-poçta/domen görnüşi, disposable-provayderler, telefon HLR/ýa-da nomer görnüşi, BIN kartoçkasy, sank-reýestrlerdäki/IBAN hasaby, familiýasynyň/salgylarynyň meňzeşligi.
Hasap/taryh: hasap ýaşy, KYC-status, retenşn, ARPPU, depozitler/hasaplar/bonuslar boýunça velocity.
Daşarky çeşmeler: eglişik sanawlary (HIBP-meňzeş), töleg töwekgelçilik signallary (PSP), ASN-abraý.
5) Çözgüt: Düzgünler + ML
5. 1 Düzgünler (kesgitlenen)
Velocity: "10 minutda/24-den hasaba alyş N", "X hasaplara bir enjam bilen M loginleri", "K 3DS feýlleri yzly-yzyna".
Geo/ýurisdiksiýa: IP-geo gapma-garşylyklary vs salgy/resminama, duýdansyz ýeriň bökmegi.
Iş-invarantlar: jogapkär tölegleriň çäkleri, öz-exclusion, sanksiýa sanawlary.
5. 2 ML-skoring (real wagt)
Onlaýn alamatlarda ýeňil model (GBM/logreg): 'ip _ risk', 'device _ age', 'account _ age', 'pwd _ fail _ rate', 'bin _ risk', 'velocity _', 'behavioral _'.
ATO üçin we tölegler/netijeler üçin aýratyn model.
Ýurisdiksiýa/tenant boýunça segmentasiýa (per-bazar bosagalaryny kalibrlemek).
5. 3 Çözgüt kabul etmek
if ip_blacklisted or bad_asn then deny else if rule_severe then challenge(hard)
else if score >= 0. 9 then deny else if 0. 7 <= score < 0. 9 then challenge(soft)
else allow
Geçmegiň/şowsuzlygyň faktlaryny 'challenge' saklasyn; sürtülmegi dinamiki taýdan güýçlendirmek/azaltmak.
6) Welocity we kwotalar (açarlar we penjireler)
Ключи: `ip`, `ip/24`, `device_id`, `account_id`, `payment_instrument`, `email_domain`, `bin`.
Penjireler: süýşýän (1m/5m/1h/24h) + aýratyn "burst "/" sustained ".
Syýasatçylar: gyzgyn ýollarda (giriş/goýum) "gaty" deny, mazmunda ýumşak throttle.
pseudo allow, retry_after = gcra_allow(key="login:ip:"+ip, rate=60/min, burst=30)
if not allow:
return 429, {"Retry-After": retry_after}
7) Kynçylyklar we "adamzadyň" barlagy
CAPTCHA/turnstile: как soft-challenge; "arassa" sessiýada ýokary ynamdan soň arassalamak.
Proof-of-Work (PoW): API/skriptlar üçin - berlen çylşyrymlylyk bilen heşi hasaplamak; ýüküň köpelmegindäki dinamiki çylşyrymlylyk.
OTP/SMS/Email/Push: ATO/möhüm amallar üçin; hyýanatçylykly peýdalanmazlyk (bahasy/UX).
WebAuthn/biometrika: cash-out/payout-bölekleriniň üýtgemegine bolan ynamyň ýokary derejesi.
Device trust: bind hasaby barlanan enjam üçin; täze enjamlar → challenge.
8) Şlýuza/proksä goşulmak
8. 1 Envoy: ext_authz → Risk API (psevdo)
yaml http_filters:
- name: envoy. filters. http. ext_authz typed_config:
http_service:
server_uri: { uri: http://risk-api:8080, cluster: risk, timeout: 80ms }
authorization_request:
allowed_headers:
patterns:
- exact: "x-tenant"
- exact: "x-device-id"
- exact: "user-agent"
authorization_response:
allowed_upstream_headers:
patterns: [{ exact: "x-risk-score" }, { exact: "x-risk-decision" }]
- name: envoy. filters. http. router
8. 2 NGINX/Lua: ýeňil PoW we velocity
nginx lua_shared_dict vel 20m;
access_by_lua_block {
local ip = ngx. var. remote_addr if not gcra_allow("reg:ip:"..ip, 20, 40) then ngx. header["Retry-After"] = 30; return ngx. exit(429)
end
local pow = ngx. req. get_headers()["X-POW"]
if not verify_pow(pow, ngx. var. request_id, 18) then ngx. status = 401; ngx. say('need-pow'); return ngx. exit(401)
end
}
9) Töwekgelçilik API şertnamasy
Haýyş (baýlaşdyrylan):json
{
"tenant":"eu-1",
"route":"POST /v1/login",
"subject":{"account_id":"a123","email":"u@d. com"},
"device":{"id":"d-xyz","fp":"...","ja3":"...","headless":false},
"network":{"ip":"203. 0. 113. 10","asn":12345,"country":"DE","rtt_ms":42},
"context":{"fail_5m":3,"pwd_reset_24h":1}
}
Jogap:
json
{ "decision":"challenge", "score":0. 83, "reason":"high_velocity+new_device", "ttl_sec":900, "challenge":"captcha" }
10) Maglumatlar, çyzgylar we modeller
Feature Store (onlaýn): Redis/Scylla/KeyDB - hasaplaýjylar/velocity/wagt bellikleri.
Batch/offline: DWH (BigQuery/S3 + Athena) Akym belliklerini, çargeback, el ýazgylaryny saklaň.
Modeller: real-time üçin ýönekeý (logreg/GBM); agyr (XGBoost/NN) - PGMs/ölçeg we soňraky distilýasiýa bilen awtonom.
Drift gözegçiligi: PSI, AUC/PR, sebitler/kanallar boýunça çäkleri kalibrlemek.
11) Gözegçilik etmek we operasiýa kontury
Metrikler:- `risk_requests_total{route,decision}`
- `risk_score_bucket` (distribution)
- `waf_block_total`, `velocity_block_total`, `challenge_pass_rate`
- `ato_incidents`, `carding_detected`, `cashout_denied`
- iş ölçegleri: 'chargeback _ rate', 'bonus _ abuse _ rate', 'false _ positive _ rate'
- Loglar (redaktirlenen): 'decision', 'score', esasy signallar, 'trace _ id', PII/syrsyz.
- A/B we Şadow: shadow-re modeiminde täze syýasat (çözgütleri logo edýäris), soňra canary (1-5%), SLO/FP boýunça awtorollbek.
- Playbooks: möwjemek, wagtlaýyn berkitmek, yza gaýdyp gelmek, "wirtual ýamalar".
12) Gizlinlik we laýyklyk
PII iň az; Durnukly kesgitleýjileri (mysal üçin, email SHA-256 duzly).
Sebit ýurisdiksiýasyna hormat goýuň (maglumatlaryň lokalizasiýasy, razylyk).
El sesleri üçin çözgütleriň aç-açan düşündirişleri; diňe zerur zatlary we TTL bilen saklaň.
13) iGaming/Maliýe aýratynlyklary
Hasaba alyş: disposable e-mail/VoIP, velocity/24, enjam-fermalar → challenge/deny.
Giriş/ATO: täze enjamlar/geo-böküşler → OTP/WebAuthn; password spraying → throttle/deny.
Bonuslar: "ýuwulmagyň ýoly" üçin çäklendirmeler (goýum → bonus → iň az dolanyşyk → çykyş), affiliatiwanyň graph-derňewi (salgylar/enjamlar/kartlar).
Tölegler/netijeler: BIN-töwekgelçilik, country-mismatch, PSP-signallar; Täze gural üçin cashout → KYC ýokary bosagasy we barlagy.
PSP/KYC webhukki: HMAC + mTLS, dar IP-allow-listi, anti-replay ('X-Timestamp', penjire ± 5 minut).
14) Antipatternler
Bir ähliumumy captcha "hemme ýerde we hemişe" → ýokary FP/konwersiýanyň peselmegi.
Diňe özüňi alyp barşyň/enjamyň signallary bolmazdan rate limit.
"Çig" yzlary we PII-ni saklamak möhletsiz.
Täze syýasatlar üçin älem-ädim we kanary ýok.
Öz tassyklamasyz daşarky "abraýly" belliklere doly ynam.
Serwer barlagy bolmazdan müşderide karar kabul etmek (JS/jübi SDK).
15) Düzgünleriň we galp kodlaryň mysallary
15. 1 Kompozit düzgün (hakyky wagt)
pseudo score = 0 if ip_asn in bad_asn_list then score += 0. 5 if device_age < 1d and route in {login, withdraw} then score += 0. 3 if velocity("login:account", 5m) > 10 then score += 0. 3 if geovelocity(last_login_loc, current_loc) > 800km/h then score += 0. 2 decision = score>=0. 9? "deny": score>=0. 7? "challenge": "allow"
15. 2 Baglanyşyk grafasy (multiakkaunt)
edge(accountA, deviceX)
edge(accountB, deviceX)
edge(accountB, cardY)
edge(accountC, cardY)
Threshold by common nodes → investigation/deny bonus
16) Prod-taýynlyk çek-sanawy
- Köp derejeli binagärlik: Edge → Risk API → App, wakalar akymy.
- Signallar: tor, enjam, özüni alyp baryş, mazmun, töleg; PII-ni azaltmak.
- ip/device/account/payment açarlaryndaky Velocity/GCRA, süýşýän penjireler.
- Çözgütler: allow/deny/challenge/throttle; TTL bilen çözgüt keşi; challenge faktlaryny saklamak.
- Kynçylyklar: captcha/PoW/OTP/WebAuthn; dinamiki çylşyrymlylyk.
- Töwekgelçilik API: SLA <100 ms, nagt pul, "iň az howpsuz" re modeime pese gaçmak.
- syn edilişi: töwekgelçilik metrikleri, FP/FN, daşbordlar, aladalar; iş metrikleri (chargeback/bonus-abuse).
- Shadow → canary → enforce; eskalasiýa we yza gaýdyp gelmek.
- PSP/KYC webhukki: HMAC + mTLS + anti-replay + allow-list.
- Sebitleýin talaplar we duýgur maglumatlar üçin TTL.
17) TL; DR
Gatlak goragy guruň: irki edge-süzgüçler we kynçylyklar, merkezi töwekgelçilik API + ML düzgünleri we seslenme üçin wakalaryň akymy. Velocity çäklerini, ulgam/enjam/hereket signallaryny, dinamiki challenge (captcha/PoW/OTP/WebAuthn) ulanyň. allow/deny/challenge/throttle karar beriň, FP/FN we iş täsirini ölçäň, shadow/canary arkaly aýlanyň. Töleg/bonus ýollary üçin - aýry-aýry berkidilen profiller we KYC/AML bilen baglanyşyk.