MiMo Chain Bot
Bot otomatis untuk Xiaomi MiMo Open Platform (platform.xiaomimimo.com).
Chain-loop: register akun → redeem invite code → create API key → apply
Ultraspeed beta → ambil ref code → ulangi dengan ref code akun sebelumnya.
Install
npm install
npx playwright install chrome
Configuration
Edit config.json:
{
"tempmail": {
"apiUrl": "https://tempmail.adrnode.com/api",
"domain": "adrnode.com"
},
"captcha": {
"provider": "2captcha",
"apiKey": "YOUR_2CAPTCHA_API_KEY"
},
"xiaomi": {
"referralLink": "https://platform.xiaomimimo.com/?ref=XXXXXX",
"inviteCode": "XXXXXX",
"password": "MimoAuto2024!",
"betaApplication": "MiMo-V2.5-Pro-UltraSpeed"
},
"browser": {
"headless": false,
"timeout": 60000,
"screenshots": false
}
}
Yang wajib diisi:
captcha.apiKey— API key dari 2captcha.com, butuh balancexiaomi.inviteCode— kode referral untuk seed iterasi pertama (6 karakter)xiaomi.referralLink— URL referral, format?ref=XXXXXX(sama dengan inviteCode)
Yang opsional:
tempmail.domain— domain kustom untuk pendaftaran email (misal:"shitoors.fun")xiaomi.password— password untuk semua akun baru (default OK)browser.headless—truetanpa UI,false(default) buat lihat browser
Run
Chain Loop
Mendaftarkan akun dan saling memasukkan kode referral secara berantai (Chain).
node chain-loop.js --count 5
| Flag | Default | Keterangan |
|---|---|---|
--count N |
1 | jumlah akun yang dibuat |
--seed XXXXXX |
config.xiaomi.inviteCode |
invite code untuk akun pertama |
--output file.txt |
chain-result.txt |
file output |
--proxy [arg] |
- | Menentukan proxy. Jika diisi string url (http://user:pass@host:port), akan memakai proxy tersebut. Jika bendera --proxy ditulis tanpa nilai (atau --proxy proxy.txt), program akan otomatis memuat list proxy dari file proxy.txt di workspace dan merotasinya per iterasi. |
# 5 akun, seed dari config
node chain-loop.js --count 5
# 10 akun, seed manual
node chain-loop.js --count 10 --seed P9LHUK
# Output ke file lain
node chain-loop.js --count 3 --output batch1.txt
Regis Loop (Tanpa Redeem Referral Code)
Mendaftarkan akun, mengambil API key, mengisi form Ultraspeed, dan mengambil referral code milik akun baru saja tanpa melakukan redeem referral (skip).
node regis-loop.js --count 5
| Flag | Default | Keterangan |
|---|---|---|
--count N |
1 | jumlah akun yang dibuat |
--output file.txt |
regis-result.txt |
file output (format: email:password:refCode:apiKey) |
--proxy [arg] |
- | Sama seperti di chain-loop.js. Berguna untuk merotasi proxy per iterasi agar setiap akun terdaftar menggunakan IP berbeda. |
# Membuat 5 akun baru secara bergantian tanpa referral link / redeem code sama sekali
node regis-loop.js --count 5
Per-akun flow
[1] Bikin temp email (menggunakan domain kustom jika diatur)
[2] Launch browser dengan random fingerprint (dan proxy yang dirotasi jika diaktifkan)
[3] Buka referral link (?ref=<currentSeed>)
[4] Sign up form (email + password + confirm + terms checkbox)
[5] Solve captcha (reCAPTCHA via 2Captcha + image captcha)
[6] Verify email (kode 6 digit dari tempmail)
[7] Pengecekan Balance & Terms:
- **Regis Loop**: Klik Console → Balance → deteksi & setujui Terms modal → cek balance (baca saldo).
- **Chain Loop**: Klik Console → Balance → deteksi & setujui Terms modal → "Enter invite code" → isi 6-box → Redeem → cek restriction (kalau kena, STOP) → reload halaman → verify balance bertambah ~$2.
[8] Create API key (atau ambil existing kalau sudah ada)
[9] Fill Ultraspeed beta application form
[10] Klik "Refer & earn" → ambil ref code akun ini
Output
# chain-result.txt (auto-create, append)
# Format: email:password:refCode:apiKey:invitedBy
[email protected]:MimoAuto2024!:K3M2P8:sk-aaa...bbb:T9K59J
[email protected]:MimoAuto2024!:LX8N2A:sk-ccc...ddd:K3M2P8
[email protected]:MimoAuto2024!:Q9R3FZ:sk-eee...fff:LX8N2A
Tiap baris dichain — invitedBy baris N+1 = refCode baris N.
Features
Random fingerprint per akun — User-Agent, viewport, locale, timezone, hardwareConcurrency, deviceMemory, WebGL vendor/renderer, canvas noise seed, navigator.plugins. Sehingga Xiaomi tidak mengenali fingerprint yang sama antar akun.
Human-like typing — Form signup, captcha code, email verification code, dan OTP
redeem diketik per-karakter dengan delay acak 60-180ms + thinking pause.
Form Ultraspeed pakai .fill() langsung (mode cepat, cukup untuk form internal).
Idempotent — Akun yang sudah redeem invite code / sudah punya API key akan di-skip otomatis, aman untuk re-run.
Verifikasi balance — Setelah redeem invite code, halaman di-reload dan balance dibaca ulang. Harus bertambah ~$2.00. Kalau tidak, iterasi dianggap gagal.
Restriction detection — Kalau setelah redeem atau saat membuka halaman balance muncul notif "risk control restrictions", loop berhenti total (akun kena cap, gak bisa lanjut).
Proxy Auto-Rotation & Sanitized Logs — Mendukung rotasi proxy otomatis per iterasi dengan membaca file proxy.txt. Username/password autentikasi disembunyikan dari logs untuk menjaga kerahasiaan.
Custom Email Domain — Mendukung domain email kustom via properti tempmail.domain di config.json.
Stop conditions
Loop berhenti kalau:
| Condition | Action |
|---|---|
| Akun restricted (risk control) | STOP, gak retry |
| Balance tidak bertambah ~$2 | STOP, gak retry |
| Ref code tidak tertangkap | STOP, mencegah duplikasi seed |
| Ref code = seed lama (clipboard leak) | STOP |
| Iter total fail (captcha timeout, dll) | Retry pakai seed yang sama |
Fingerprint
Tiap akun randomize:
- User-Agent: Chrome 122-131 di Windows NT 10.0
- Viewport: 8 ukuran (1280x720 → 1920x1080)
- Locale: en-US, en-GB, id-ID, en-AU, en-CA, en-SG
- Timezone: Jakarta, Singapore, Bangkok, KL, Manila, Ho_Chi_Minh
- Hardware: 4-16 cores, 4-16 GB memory
- WebGL: pasangan vendor + renderer NVIDIA/Intel/AMD realistis
- Canvas: seed unik, noise 1 pixel pada toDataURL & getImageData
- navigator.webdriver di-undefine, plugins palsu
Troubleshooting
Captcha solve lama (>2 menit)
- 2Captcha workers sibuk, coba lagi nanti. Balance 2Captcha cek di dashboard.
"Account restricted" muncul
- IP mungkin sudah ke-flag Xiaomi. Coba jeda beberapa jam atau pakai VPN.
- Screenshot
error-restriction-*.pngke-dump otomatis untuk referensi.
Balance tidak bertambah
- Screenshot
error-balance-*.pngke-dump otomatis. - Kemungkinan saldo ter-delay (Xiaomi bilang "Balance updates in near-real time, ≤5 min delay").
- Atau invite code expired / invalid.
Ref code tidak tertangkap
- Screenshot
error-refcode-*.pngdanchain-refcode-leak-*.pngke-dump otomatis. - Cek format modal "Refer & Earn" di Xiaomi — kalau label berubah, pattern di
extras.jsperlu ditambah.
Browser zombie (chrome.exe nyangkut)
- Ctrl+C di terminal akan auto-close browser (SIGINT handler aktif).
- Kalau masih ada:
taskkill //IM chrome.exe //F(hati-hati: juga tutup chrome pribadi).
Estimasi durasi
| Akun | Estimasi |
|---|---|
| 1 | 2-4 menit |
| 5 | 10-20 menit |
| 10 | 20-40 menit |
| 50 | 2-3 jam |
Bottleneck utama: solving captcha (60-120s per akun via 2Captcha).
Files
├── chain-loop.js entry point (node chain-loop.js)
├── chain-loop-config.js CLI args + save/log helpers
├── regis-loop.js entry point baru (node regis-loop.js)
├── index.js MimoRegistration core class
├── extras.js getReferralCode method
├── fingerprint.js random browser fingerprint
├── human.js human-like typing helpers
├── package.json
├── config.json ← edit ini
└── README.md
Runtime output (gak masuk git):
chain-result.txt— akun sukseschain-fail.log— error log*.png— screenshot debug
License
MIT