10 KiB
name, description, trigger
| name | description | trigger |
|---|---|---|
| sms-verification-automation | Automated SMS verification for service activation via SMS providers (HeroSMS, GrizzlySMS, 365sms) and ADB-controlled Android device. Covers MyJio and Gemini but generalises to any app requiring SMS OTP. | User asks to verify a phone number, get OTP, activate a service via SMS, or automate login with phone verification. |
SMS Verification Automation
Automate SMS-based phone verification for any service using SMS activation providers and ADB-controlled Android device.
References
references/credentials.md— account credentials for all SMS providersreferences/pvacodes-api-jiofarm.md— PVACodes API (TLS-blocked, browser-bridge required), Jio service prices India, jiofarm integration (2026-09-19)references/2nd-no-free-polish-numbers.md— 2nd-no.com: бесплатные польские номера (5/день, 3 дня живёт), полный Playwright-флоу реги/логина/модала номера, API-карта 2no.pl (JSON-RPC), tempmail.lol v2 query-token питфолл (2026-09-19)
Бесплатные веб-SMS сервисы (без балансов/платежей)
- 2nd-no.com (Польша, +48) — рега по email, 5 бесплатных номеров/день, живут 3 дня, продлеваются при входящем SMS. Только через браузер (API за Cloudflare). Полный playbook:
references/2nd-no-free-polish-numbers.md. - Каталог остальных бесплатников (temp-number.com, quackr.io, sms-activate.guru free и их статусы): skill
cybersec/temp-sms-free. - Правило: крупные сервисы (Google/Facebook/GitLab) часто режут VoIP/фри-номера — проверять доставку до массового использования.
- Resend-троттл живёт на ЦЕЛЕВОМ пользователе, не на номере: сервисы (WorkOS-класс) рисуют «код отправлен» на verify-странице, но молча не доставляют повторные SMS тому же user в пределах ~1-2ч — ротация номера не помогает и только жжёт слоты. Ждать cooldown или верифицировать нового user (новый аккаунт = SMS доставляется сразу).
- Twilio-based верификация (MLH и подобные US-платформы) — блок КАТЕГОРИЧЕСКИЙ: арендные/виртуальные номера не получают SMS НИ в одной стране (add/resend возвращают 200, SMS не приходит никогда; проверено на 8 номерах/7 стран hero-sms, включая пулы с 25k+ physicalCount). НЕ итерировать страны — сразу реальная SIM (попросить юзера продиктовать один код). Мёртвый рент возвращает ban+refund (
setStatus status=8). Детали: skillai-provider-autoreg→references/mlh-ghw-promo-claim.md.
Providers (ordered by effectiveness for Jio/Indian services)
| Provider | API URL | Key Location | Best For | Notes |
|---|---|---|---|---|
| GrizzlySMS | api.grizzlysms.com/stubs/handler_api.php |
Account → Settings → API tab | MyJio, real SIM cards | Requires browser login to get key; MyJio is dedicated service |
| HeroSMS | hero-sms.com/stubs/handler_api.php |
User provides | General | DO NOT use herosms.com (wrong domain) |
| 365sms | 365sms.org/stubs/handler_api.php |
In HEROSMS_CLIENT_GPT55_Gothbreach.py |
General | Jio OTP does NOT arrive on this provider |
| PVACodes | beta.pvacodes.com/app/api.php |
Дашборд ?page=user/api (Влад: [REDACTED-NAME]@gmail.com) | India ($0.16-0.33), 50+ стран | TLS(JA3)-блок: только через Playwright bridge :18085 (API, credentials:'omit' — include ломает ключ) + :18086 (дашборд, persistent_context). См. references/pvacodes-api-jiofarm.md |
All three use sms-activate compatible API protocol.
Crucial Pitfall: Jio Blocks Virtual Numbers
Jio (MyJio) checks if the phone number is a real Jio subscriber. Virtual numbers from HeroSMS/365sms will NOT receive the OTP — the SMS is never sent. Status will be STATUS_WAIT_CODE indefinitely or STATUS_CANCEL.
PVACodes Jio-сервисы: ВСЕ 9 купленных номеров (Jio11/JIO7/Jio17/Jio19/JioSaavn7) = НЕ Jio-абоненты (2026-09-19 финал: sendOtp → 400 INVALID_JIONUMBER_ERROR). Jio17 отдаёт ПОЛНЫЙ номер прямо из API (+916393438597), в отличие от маскированных Jio11/JIO7 (+919****1247). Все Jio-сервисы в каталоге имеют success_count=0. cancel_number = полный авто-рефанд пока код не получен, НО не раньше 60с после покупки («Please wait 60 more seconds before cancelling») — в скриптах ждать 65с. Out of Stock деньги не списывает. Rent-каталог India пуст. PVACodes для Jio = мёртвый путь. Детали: references/pvacodes-api-jiofarm.md.
Only GrizzlySMS explicitly supports MyJio with real SIM cards (Airtel/Jio/Vodafone). It is the only provider observed to have a chance of receiving Jio OTP.
Дешёвый pre-check любого номера на Jio (до покупки следующего): POST https://www.jio.com/api/jio-login-service/login/sendOtp body {"mobileNumber":"<10 цифр>","loginFlowType":"MOBILE","alternateNumber":""} (формат подтверждён сетевым перехватом с jio.com/selfcare/login). Ответ INVALID_JIONUMBER_ERROR = номер не Jio → cancel+refund. Это валидация за $0 вместо ожидания OTP 120с.
GrizzlySMS Setup
Registration
- Open
https://grizzlysms.com/registrationin browser (Chrome DevTools MCP works) - Fill: Name, Email (use guerrillamail.com), Password, Confirm Password
- Check both checkboxes (privacy + public offer)
- Click Registration
- Accept cookie banner if present
Getting API Key
- Log in at
https://grizzlysms.com/authorization - Navigate to Settings → API tab
- Copy API key (readonly textbox, format: 32-char hex)
Top-Up
- Balance is $0 after registration
- Click "Top Up balance" in header
- Minimum deposit required (check UI)
API Usage
# Check balance
curl "https://api.grizzlysms.com/stubs/handler_api.php?api_key=[REDACTED]"
# Get MyJio number — use service code from web UI (not 'myjio' in API)
# Check the service code in the Price page or web UI
curl "https://api.grizzlysms.com/stubs/handler_api.php?api_key=[REDACTED]"
# Poll for SMS
curl "https://api.grizzlysms.com/stubs/handler_api.php?api_key=[REDACTED]"
HeroSMS Usage
Domain: hero-sms.com (NOT herosms.com — connection reset).
# Check balance
curl "https://hero-sms.com/stubs/handler_api.php?api_key=[REDACTED]"
# Get number for India (country=22), try any service
curl "https://hero-sms.com/stubs/handler_api.php?api_key=[REDACTED]"
# Services with most Indian numbers: tg, li, go, ig, dr, wb, vk
# But Jio OTP will NOT arrive on these — use only for non-Jio services
Android Device Control via ADB
Device Info
- Model: Xiaomi 24117RN76E (Android 15, MIUI)
- Serial:
furcwslfnn6d7drk - ADB path:
C:/Users/User/AppData/Local/Android/Sdk/platform-tools/adb.exe - Resolution: 1080x2400
Critical: ADB from execute_code vs terminal
execute_codesandbox CANNOT connect to ADB — commands time out- Use
terminaltool for ALL ADB commands - Always use full path to adb.exe
Essential ADB Commands
ADB="C:/Users/User/AppData/Local/Android/Sdk/platform-tools/adb.exe"
DEV="furcwslfnn6d7drk"
# Wake device
"$ADB" -s "$DEV" shell input keyevent 26
# Launch MyJio (monkey works, am start may fail)
"$ADB" -s "$DEV" shell monkey -p com.jio.myjio 1
# Tap coordinates (MyJio: number field ~540,1100; Generate OTP ~540,1400)
"$ADB" -s "$DEV" shell input tap X Y
# Enter text
"$ADB" -s "$DEV" shell input text "PHONE_NUMBER"
# Delete characters
"$ADB" -s "$DEV" shell input keyevent 67 # KEYCODE_DEL
# Check screen state
"$ADB" -s "$DEV" shell dumpsys power | grep mWakefulness
# "Awake" = screen on, "Asleep" = screen off → wake with keyevent 26
# Screenshot (may be black due to FLAG_SECURE)
"$ADB" -s "$DEV" shell screencap -p /sdcard/screen.png
"$ADB" -s "$DEV" pull /sdcard/screen.png "C:/Users/User/screen.png"
MyJio App Quirks
- Package:
com.jio.myjio - Installed via Xiaomi GetApps (not Google Play)
- Version: 8.0.37
- FLAG_SECURE enabled — screenshots show black screen
- Login flow: enter number → "Generate OTP" → OTP screen → auto-reads SMS from device
- No Skip/Guest option on start screen
- "Try another way to get OTP" → "Get OTP on call" option exists but doesn't work with virtual numbers
OTP Polling Pattern
ACT_ID="activation_id"
for i in $(seq 1 30); do
sleep 4
resp=$(curl -s --max-time 10 "https://API_URL?api_key=[REDACTED]")
if [ $((i % 5)) -eq 0 ]; then echo "[$i] $resp"; fi
if echo "$resp" | grep -q "STATUS_OK"; then
code=$(echo "$resp" | cut -d: -f2)
echo "OTP: $code"
# Enter code on device
"$ADB" -s "$DEV" shell input text "$code"
break
elif [ "$resp" != "STATUS_WAIT_CODE" ]; then
echo "[$i] $resp"
break
fi
done
Status codes: STATUS_WAIT_CODE (waiting), STATUS_OK:CODE (SMS received), STATUS_CANCEL (expired/failed).
Helicopter View: Decision Tree
Need SMS OTP?
├── Is it Jio/MyJio?
│ ├── YES → GrizzlySMS only (real SIM cards needed)
│ │ ├── PVACodes/365sms/HeroSMS = non-Jio номера (INVALID_JIONUMBER_ERROR, проверено)
│ │ └── Need to top up balance first (min deposit ~$5-10)
│ ├── Sender is Twilio-based (MLH etc.)?
│ │ └── YES → REAL SIM only (virtual numbers = zero SMS in ANY country)
│ └── NO → HeroSMS or 365sms (virtual numbers work for most services)
│ ├── HeroSMS: hero-sms.com, ~$4.20 balance
│ └── 365sms: 365sms.org, ~$0.52 balance
└── Need browser interaction?
└── Use Chrome DevTools MCP (mcp__chrome_devtools__*)
NOT execute_code (sandbox has network restrictions)