Bot коргоо жана антифрод API
1) Эмне үчүн керек
Боттор жана чабуулчулар өсүү жана акча киргизүү пункттарына кол салышат: каттоо, логин (АТО), депозиттер/корутундулар, промо-механика, оюн каталогдору/коэффициенттер. Кол эрежелери жана таза rate limit азыртадан эле жетишсиз: көп баскычтуу сигналдар, реалдуу убакыт жана башкаруу чечимдер (allow/deny/challenge/throttle) бизнес-окуялардын пикир менен (chargeback, chargeback-ratio, KYC-feyl) керек.
2) Коркунучтардын таксономиясы
Каттоо/onbording: массалык эсептери, бир жолу колдонулуучу электрондук почта/SIM-банктар, чарба түзмөктөр.
ATO (Account Takeover): credential stuffing, password spraying, session hijack.
Бонус-кыянаттык: multiaccauting, арбитраждык гео/юрисдикция, өзүн-өзү exclusion айланып.
Картинг/төлөм фрод: карттар сынагы, уурдалган капчыктар, акча каражаттарын кайтаруу.
Скрейпинг/инвентаризация: мазмунду, бааларды, коэффициенттерди агрессивдүү тартуу.
API-DoS төмөнкү күч: таш бака кол салуу, жай-POST, мобилдик SDK эмуляциялары.
Vebhuke/Integration: HMAC/mTLS жок жасалма билдирүүлөр, replay.
3) Коргоо архитектурасы
3. 1 катмарлары
1. Edge (CDN/WAF/шлюз): эрте ийгиликсиздик (ASN/Geo/IP-кадыр), жеңил чакырыктар, лимиттер, PoW.
2. Тобокелдик API (PDP тобокелдик): борборлоштурулган эрежелер кыймылдаткычы/ML; ответ — `decision`, `score`, `reason`, `ttl`.
3. App-деңгээл: домендик инварианттар, бизнес-логика (лимиттер, KYC, AML), асинхрондук ревю.
4. Иш-чаралардын агымы: Kafka/Kinesis → feature store/модель → төлөмдөрдөн/талаш-тартыштардан пикир.
3. 2 Чечим схемасы
[Request] → Edge Plugins → (enrich) → Risk API (rules+ML) → Decision:
allow deny throttle challenge(type=captcha sms PoW biometry)
Чечим 'ttl' секунд үчүн ачкыч (мисалы, device × account × route) боюнча кэшдалат.
4) Сигналдар жана байытуу
Тармак/канал: IP/ASN, прокси/VPN/Tor, rdns, rtt/jitter, SYN-rate, TLS-фингерпринт (JA3/JA4), HTTP/2/3 жүрүм-туруму.
Device/browser: canvas/audio/WebGL FP (кылдат), платформа/SDK, timezone/locale, чечим, ариптер, WebDriver/headless көрсөткүчтөр, mobile attestation (SafetyNet/DeviceCheck, мүмкүн болсо).
Жүрүм-туруму: киргизүү ылдамдыгы, чычкан/тач траекториясы, экрандар ырааттуулугу, dwell-убакыт, аракет жыштыгы, браузер IDs ортосунда өтүү.
Мазмун/суроо: форма e-mail/домен, disposable-провайдерлер, phone HLR/же номердин түрү, BIN карталары, санк-реестрдеги эсеп/IBAN, аты-жөнү/даректеринин окшоштугу.
Эсеп/тарых: эсеп жашы, KYC-статус, retenshn, ARPPU, депозиттер/эсептер/бонустар боюнча velocity.
Тышкы булактары: компроматтар тизмеси (HIBP-окшош), төлөм тобокелдик сигналдары (PSP), ASN-аброю.
5) Чечим: эрежелер + ML
5. 1 Эрежелер (детерминацияланган)
Velocity: "10 мүнөттө с/24 каттоолордун N", "X эсептерине бир түзмөк менен M логиндер", "K катары менен 3DS-файлдар".
Гео/юрисдикция: IP-гео карама-каршы дарек/документ, күтүлбөгөн жерден жер секирүү.
Бизнес инварианттар: жоопкерчиликтүү төлөмдөрдүн лимиттери, өз алдынча exclusion, санкциялык тизмелер.
5. 2 ML-эсеби (реалдуу убакыт)
Жеңил модель (GBM/логрег) онлайн белгилеринде: 'ip _ risk', 'device _ age', 'account _ age', 'pwd _ fail _ rate', 'bin _ risk', 'velocity _', 'behavioral _'.
АТО үчүн өзүнчө модель жана өзүнчө - төлөмдөр/корутундулар үчүн.
Юрисдикция/тенант боюнча сегменттөө (босоголорду калибрлөө).
5. 3 Чечим кабыл алуу
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
Качан 'challenge' өтүү/ийгиликсиз фактыларды сактоо; күчөтүү/динамикалык сүрүлүүнү азайтуу.
6) Velocity жана квота (ачкычтар жана терезелер)
Ключи: `ip`, `ip/24`, `device_id`, `account_id`, `payment_instrument`, `email_domain`, `bin`.
Терезелер: жылма (1м/5м/1ч/24ч) + өзүнчө "burst "/" sustained ".
Саясат: ысык жолдор боюнча "катуу" deny (логин/депозиттик), жумшак 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) Челленджи жана "адамгерчиликти" текшерүү
CAPTCHA/turnstile: как soft-challenge; "таза" сессияга жогорку ишенимдүүлүктөн кийин алып салуу.
Proof-of-Work (PoW): API/скрипттер үчүн - белгиленген татаалдыгы менен хэш эсептөө; жүктү жогорулатуу динамикалык татаалдыгы.
OTP/SMS/Email/Push: АТО/критикалык операциялар үчүн; кыянаттык менен эмес (наркы/UX).
WebAuthn/биометрия: жогорку ишеним cash-out/payout-бөлүктөрүн өзгөртүү.
Device trust: далилденген түзмөк үчүн эсеп bind; жаңы түзмөктөр → challenge.
8) шлюз/прокси киргизүү
8. 1 Envoy: ext_authz → Risk API (псевдо)
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: жарык PoW жана 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) Тобокелдик API келишими
Суроо-талап (байытылган):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}
}
Жооп:
json
{ "decision":"challenge", "score":0. 83, "reason":"high_velocity+new_device", "ttl_sec":900, "challenge":"captcha" }
10) Маалыматтар, чыпкалар жана моделдер
Feature Store (онлайн): Redis/Scylla/KeyDB - эсептегичтер/velocity/убакыт белгилери.
Batch/Offline: DWH (BigQuery/S3 + Athena) окутуу/кайра; агып, chargeback, кол ревю белгилерин сактаңыз.
Моделдер: реалдуу убакыт үчүн жөнөкөй (logreg/GBM); оор (XGBoost/NN) - PGMs/масштабдоо жана андан кийинки дистилляция менен оффлайн.
Drift Control: PSI, AUC/PR, аймактар/каналдар боюнча босоголорду калибрлөө.
11) Байкоо жана иш схемасы
Метрикасы:- `risk_requests_total{route,decision}`
- `risk_score_bucket` (distribution)
- `waf_block_total`, `velocity_block_total`, `challenge_pass_rate`
- `ato_incidents`, `carding_detected`, `cashout_denied`
- бизнес-метрика: 'chargeback _ rate', 'bonus _ abuse _ rate', 'false _ positive _ rate'
- Логи (түзөтүлгөн): 'decision', 'score', негизги сигналдар, 'trace _ id', PII/сырлары жок.
- A/B жана көлөкө: shadow режиминде жаңы саясат (чечимдерди логин), андан кийин canary (1-5%), SLO/FP боюнча autorollbek.
- Playbooks: эскалация, убактылуу катуулатуу, артка кайтуу, "виртуалдык тактар".
12) Купуялык жана шайкештик
PII минималдаштыруу; туруктуу идентификаторлорду (мисалы, туз менен электрондук почта SHA-256).
Аймактык юрисдикцияны урматтоо (маалыматтарды локалдаштыруу, макулдук).
Кол ревю үчүн чечимдердин ачык-айкын түшүндүрмөлөрү; гана зарыл жана TTL менен сактоо.
13) iGaming/каржы өзгөчөлүктөрү
Каттоо: Filters disposable e-mail/VoIP, velocity/24, аппараттык фермасы → challenge/deny.
Логин/АТО: жаңы түзмөктөр/гео-ат чабыш → OTP/WebAuthn; password spraying → throttle/deny.
Бонустар: "адалдоого жол" боюнча лимиттер (депозит → бонус → минималдуу жүгүртүү → чыгаруу), graph-талдоо аффилирленген (даректер/түзмөктөр/карталар).
Төлөмдөр/корутундулар: BIN-тобокелдик, country-mismatch, PSP сигналдары; жаңы курал боюнча cashout → жогорку босого жана текшерүү KYC.
PSP/KYC Webhuke: HMAC + mTLS, тар IP-allow тизмеси, анти-replay ('X-Timestamp', терезе ± 5 мин).
14) Антипаттерндер
Бир жалпы captcha "бардык жерде жана ар дайым" → жогорку FP/Conversion түшүп.
Жүрүм-турум/девайс сигналдары жок гана rate limit.
"Чийки" издерди жана PIIди сактоо мөөнөтсүз.
Жаңы саясат үчүн shadow-прогон жана canary жоктугу.
Толук ишеним тышкы "кадыр-баркы" өз тастыктоо жок.
Кардар боюнча чечим кабыл алуу (JS/мобилдик SDK) Server текшерүү жок.
15) Эрежелердин жана псевдокоддун мисалдары
15. 1 композиттик эреже (реалдуу убакыт)
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 Байланыш тилкеси (мультиаккаунт)
edge(accountA, deviceX)
edge(accountB, deviceX)
edge(accountB, cardY)
edge(accountC, cardY)
Threshold by common nodes → investigation/deny bonus
16) Prod-даярдык чек тизмеси
- Көп баскычтуу архитектура: Edge → Risk API → App, окуялардын агымы.
- Сигналдар: тармак, түзмөк, жүрүм-турум, мазмун, төлөм; PII минималдаштыруу.
- Velocity/GCRA ачкычтары ip/device/account/payment, жылма терезелер.
- Solutions: allow/deny/challenge/throttle; TTL менен кэш чечимдер; челленджинин фактыларын сактоо.
- Чакырыктар: captcha/PoW/OTP/WebAuthn; динамикалык татаалдыгы.
- Тобокелдик API: SLA <100 ms, кэш, "минималдуу коопсуз" режимге деградация.
- Байкоо: тобокелдик метриктер, FP/FN, dashboard, Алерт; бизнес-метрика (chargeback/bonus-abuse).
- Shadow → canary → enforce; эскалация жана кайра кайтаруу плейбуктары.
- Webhuke PSP/KYC: HMAC + mTLS + anti-replay + allow-list.
- Аймактык талаптар жана TTL сезимтал маалыматтар боюнча.
17) TL; DR
Катмарлуу коргоону куруу: эрте edge чыпкалары жана чакырыктар, эрежелер менен борборлоштурулган тобокелдик API + ML жана пикир алуу үчүн окуялардын агымы. velocity-чеги, тармак сигналдары/түзмөк/жүрүм-турум, динамикалык challenge (captcha/PoW/OTP/WebAuthn). allow/deny/challenge/throttle чечимдерди кабыл алуу, FP/FN жана бизнес таасирин өлчөө, shadow/canary аркылуу жылдыруу. Төлөм/бонус жолдору үчүн - жеке күчөтүлгөн профилдер жана KYC/AML менен байланыш.