autoreg-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok60915d52e8425
2026-10-20 02:16:32 +03:00
commit f58eafeb48
565 changed files with 60064 additions and 0 deletions

View File

@@ -0,0 +1,182 @@
---
name: sms-verification-automation
description: 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.
trigger: 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 providers
- `references/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`). Детали: skill `ai-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
1. Open `https://grizzlysms.com/registration` in browser (Chrome DevTools MCP works)
2. Fill: Name, Email (use guerrillamail.com), Password, Confirm Password
3. Check both checkboxes (privacy + public offer)
4. Click Registration
5. Accept cookie banner if present
### Getting API Key
1. Log in at `https://grizzlysms.com/authorization`
2. Navigate to Settings → API tab
3. 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_code` sandbox CANNOT connect to ADB — commands time out
- Use `terminal` tool for ALL ADB commands
- Always use full path to adb.exe
### Essential ADB Commands
```bash
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
```bash
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)
```