Nickname va regionni bir so'rovda oling
Mobile Legends: Bang Bang akkauntining ID va server (zone) ID si bo'yicha o'yinchi nickname'i, region (davlat) va server turini qaytaradigan tezkor API.
1Tezkor boshlash
Birinchi so'rov:
curl -H "Authorization: Bearer mlbb_SIZNING_TOKENINGIZ" \ "https://mlbb.nurali.uz/v1/check?id=1290132154&zone=15246"
{
"ok": true,
"account_id": "1290132154",
"zone_id": "15246",
"nickname": "Wader〆",
"region": "Uzbekistan",
"server_type": "Original Server"
}
2Token olish
API faqat token bilan ishlaydi. Token admin tomonidan beriladi.
- Telegram orqali @vafoyev_n ga yozing: loyihangiz nomi va kutilayotgan so'rovlar sonini ayting.
- Sizga
mlbb_bilan boshlanadigan token beriladi. U faqat bir marta ko'rsatiladi — xavfsiz joyda saqlang. - Har bir so'rovda tokenni
Authorizationsarlavhasida yuboring.
Token muddatli (odatda 1 yil). Muddati tugasa yoki token oshkor bo'lsa — yangisini olish uchun @vafoyev_n ga yozing; eski token bekor qilinadi.
3Sinab ko'rish
So'rov to'g'ridan-to'g'ri brauzeringizdan API'ga yuboriladi. Token faqat shu sahifada qoladi (belgilasangiz — brauzer yopilguncha).
Tokeningiz yo'qmi? Telegram orqali @vafoyev_n ga yozing. Ikkinchi marta yuborsangiz X-Cache: HIT-* va vaqt keskin qisqarganini ko'rasiz.
4Autentifikatsiya
Token uch usulda qabul qilinadi (birinchisi tavsiya etiladi):
| Usul | Misol | Izoh |
|---|---|---|
| Bearer sarlavha | Authorization: Bearer mlbb_… | Tavsiya etiladi |
| Maxsus sarlavha | X-API-Token: mlbb_… | Bearer ishlatib bo'lmasa |
| Query parametr | ?token=mlbb_… | Token loglarda qolishi mumkin — faqat test uchun |
5GET /v1/check
Akkaunt nickname'i va regionini qaytaradi. Ikki xil yozilishi bor:
Parametrlar
| Nomi | Turi | Majburiy | Tavsif |
|---|---|---|---|
id (yoki account_id) | raqam, 1–12 belgi | ha | O'yindagi akkaunt ID. Masalan 1290132154 |
zone (yoki zone_id, server) | raqam, 1–8 belgi | ha | Server (zone) ID — profildagi qavs ichidagi raqam. Masalan 15246 |
token | satr | yo'q | Sarlavha o'rniga (qarang: Autentifikatsiya) |
O'yinda ID odatda 1290132154 (15246) ko'rinishida beriladi: birinchisi id, qavs ichidagisi zone.
Holat so'rovi
GET /v1 — token talab qilmaydi; servis ishlayotganini va limitni qaytaradi. Monitoring uchun qulay.
6Javob maydonlari
| Maydon | Turi | Tavsif |
|---|---|---|
ok | boolean | Muvaffaqiyatli bo'lsa true |
account_id | string | So'ralgan akkaunt ID |
zone_id | string | So'ralgan server ID |
nickname | string | O'yinchi nickname'i (Unicode belgilar bo'lishi mumkin) |
region | string | null | Akkaunt davlati, masalan Uzbekistan. Ba'zan null |
server_type | string | Original Server yoki Advanced Server (zone ID bo'yicha) |
Xato bo'lganda: {"ok": false, "error": "kod", "message": "izoh"}. Dasturda error kodiga tayaning — message matni o'zgarishi mumkin.
7Xato kodlari
| HTTP | error | Sababi | Qayta yuborish? |
|---|---|---|---|
| 200 | — | Topildi | — |
| 400 | invalid_params | id yoki zone yo'q / raqam emas | Yo'q — so'rovni tuzating |
| 401 | token_required | Token yuborilmagan | Yo'q |
| 401 | token_invalid | Token formati noto'g'ri | Yo'q |
| 401 | token_not_found | Bunday token yo'q | Yo'q — @vafoyev_n |
| 401 | token_revoked | Token bekor qilingan | Yo'q — @vafoyev_n |
| 401 | token_expired | Token muddati tugagan | Yo'q — @vafoyev_n |
| 404 | account_not_found | Bu ID + zone bo'yicha akkaunt yo'q | Yo'q — ID/zone'ni tekshiring |
| 405 | method_not_allowed | Faqat GET qabul qilinadi | Yo'q |
| 429 | rate_limited | Daqiqalik limit tugadi | Ha — Retry-After dan keyin |
| 502 | upstream_unavailable | Manba servis vaqtincha javob bermadi | Ha — kutib (backoff) |
| 503 | auth_unavailable | Token tekshiruvi vaqtincha ishlamadi | Ha — kutib (backoff) |
8Javob sarlavhalari
| Sarlavha | Qiymat | Ma'nosi |
|---|---|---|
X-Cache | HIT-MEM · HIT-EDGE · MISS · STALE | Javob qayerdan olingani (qarang: Kesh) |
X-RateLimit-Limit | 60 | Daqiqasiga ruxsat etilgan so'rovlar |
Retry-After | soniya | Faqat 429 da: shuncha kutib qayta yuboring |
Server-Timing | total;dur=3 | Server ichida ketgan vaqt (ms) |
9Limitlar
- Limit token boshiga hisoblanadi va har 60 soniyada yangilanadi. Keshdan qaytgan javoblar ham hisobga kiradi.
- Limitdan oshsa — 429
rate_limitedvaRetry-After: 60qaytadi. Bu vaqtda yuborilgan so'rovlar ham rad etiladi, shuning uchun to'xtab turing. - Limit Cloudflare tarmog'ining har bir hududida alohida hisoblanadi, shuning uchun chegara atrofida bir oz farq bo'lishi mumkin — 60 ga yaqin ishlamang, o'z tomoningizda navbat (queue) qiling.
- Ko'proq kerak bo'lsa (masalan, ommaviy tekshiruv) — Telegram orqali @vafoyev_n ga yozing.
Limitni chetlab o'tish uchun bir nechta tokendan navbat bilan foydalanish yoki suiiste'mol aniqlansa, token ogohlantirishsiz bekor qilinadi.
10Qayta yuborish (retry) qoidalari
| Javob | Nima qilish kerak |
|---|---|
| 200 | Natijani o'z tomoningizda ham keshlang (kamida 5–30 daqiqa). |
| 400 / 401 / 404 / 405 | Qayta yubormang. Natija o'zgarmaydi — so'rov yoki tokenni tuzating. 404 ni ham qisqa muddat keshlang. |
| 429 | Retry-After soniya kuting, keyin bitta so'rov yuboring. Parallel oqimlarni kamaytiring. |
| 502 / 503 / tarmoq xatosi | Eksponensial kutish: 1 s → 2 s → 4 s (+ tasodifiy 0–500 ms), ko'pi bilan 3 marta. Keyin foydalanuvchiga xato ko'rsating. |
- So'rov uchun 8–10 soniya timeout qo'ying.
- Bir xil
id + zoneni bir vaqtda qayta-qayta yubormang — bitta javobni kuting. - Foydalanuvchi kiritayotgan har bir harf uchun emas, faqat "Tekshirish" bosilganda so'rov yuboring.
async function checkMlbb(id, zone) { for (let attempt = 0; attempt < 4; attempt++) { let res; try { res = await fetch(`https://mlbb.nurali.uz/v1/check?id=${id}&zone=${zone}`, { headers: { Authorization: `Bearer ${process.env.MLBB_API_TOKEN}` }, signal: AbortSignal.timeout(10_000), }); } catch { res = null; // tarmoq xatosi / timeout } if (res && res.status < 500 && res.status !== 429) return res.json(); // 2xx/4xx — qayta yubormaymiz if (attempt === 3) break; const wait = res?.status === 429 ? Number(res.headers.get("retry-after") || 60) * 1000 : 1000 * 2 ** attempt + Math.random() * 500; await new Promise((r) => setTimeout(r, wait)); } throw new Error("MLBB API vaqtincha ishlamayapti"); }
11Kesh — nega tez
API Cloudflare tarmog'ida, sizga eng yaqin serverda ishlaydi. Javob uch qavatdan qidiriladi:
X-Cache | Manba | Odatiy vaqt |
|---|---|---|
HIT-MEM | Server xotirasi | ~1 ms |
HIT-EDGE | Cloudflare keshi (hududiy) | ~5 ms |
MISS | Manba servisdan yangi olindi | 0.5–1.5 s |
STALE | Manba ishlamayapti — oxirgi ma'lum javob | ~5 ms |
- Topilgan nickname 30 daqiqa keshda saqlanadi. O'yinchi nickname'ini o'zgartirsa, yangisi 30 daqiqagacha kechikib ko'rinadi.
- "Topilmadi" (
404) javobi 2 daqiqa saqlanadi. - Manba servis ishlamay qolsa, 24 soatgacha oxirgi ma'lum javob qaytariladi (
X-Cache: STALE). - Bir vaqtda kelgan bir xil so'rovlar manbaga bitta murojaat sifatida boradi.
12Xavfsizlik
Tokenni brauzer yoki mobil ilova kodiga qo'ymang. Uni ko'rgan har kim sizning limitingizni ishlatadi. So'rovni o'z serveringizdan yuboring va natijani foydalanuvchiga uzating.
- Tokenni muhit o'zgaruvchisida saqlang (
MLBB_API_TOKEN), git'ga qo'shmang. - Faqat HTTPS orqali ishlaydi.
- Token oshkor bo'lsa — darhol @vafoyev_n ga yozing; u bekor qilinadi (1 daqiqa ichida kuchga kiradi) va yangisi beriladi.
13OpenAPI (JSON)
API'ning to'liq mashina o'qiy oladigan tavsifi — OpenAPI 3.1. Uni Postman, Insomnia, Swagger yoki kod generatorlariga (openapi-generator, orval) import qiling.
Yuklanmoqda…
14Kod namunalari
curl -sS \ -H "Authorization: Bearer $MLBB_API_TOKEN" \ "https://mlbb.nurali.uz/v1/check/1290132154/15246"
const res = await fetch("https://mlbb.nurali.uz/v1/check?id=1290132154&zone=15246", { headers: { Authorization: `Bearer ${process.env.MLBB_API_TOKEN}` }, }); const data = await res.json(); if (data.ok) console.log(data.nickname, data.region); else console.error(res.status, data.error);
import os, requests r = requests.get( "https://mlbb.nurali.uz/v1/check", params={"id": "1290132154", "zone": "15246"}, headers={"Authorization": f"Bearer {os.environ['MLBB_API_TOKEN']}"}, timeout=10, ) data = r.json() if data["ok"]: print(data["nickname"], data["region"]) else: print(r.status_code, data["error"])
<?php $ch = curl_init("https://mlbb.nurali.uz/v1/check?id=1290132154&zone=15246"); curl_setopt_array($ch, [ CURLOPT_RETURNTRANSFER => true, CURLOPT_TIMEOUT => 10, CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("MLBB_API_TOKEN")], ]); $data = json_decode(curl_exec($ch), true); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); curl_close($ch); if ($data["ok"]) { echo $data["nickname"] . " — " . $data["region"]; } else { echo $code . " " . $data["error"]; }
15Aloqa
API'dan foydalanish uchun Telegram orqali @vafoyev_n ga murojaat qiling: token ochib beriladi yoki limit oshiriladi. Xato topsangiz — so'rov vaqti va javobdagi error kodini yuboring.