Elle hesap kaydı, ölçeklenebilir her operasyonun darboğazıdır. Günde 100'den fazla kayda ihtiyaç duyduğunuzda insan emeği en büyük maliyet kalemi haline gelir. Sanal numara API'si, elle yapılan işten otomatik sürece geçişin köprüsüdür: betik numarayı alır, SMS'i karşılar, kodu ayrıştırır ve kaydı insan müdahalesi olmadan tamamlar.
Otomatik kaydın mimarisi
Temel akış
Her otomatik kayıt şu adımlardan geçer:
- Betik, API üzerinden sanal numara ister (servisi ve ülkeyi belirtir)
- Servis numarayı ve aktivasyon ID'sini döndürür
- Betik numarayı hedef servisin kayıt formuna girer
- Hedef servis OTP kodunu içeren SMS gönderir
- Betik, polling yöntemiyle API üzerinden gelen SMS'leri sorgular
- API, SMS'teki kodu döndürür
- Betik kodu girer ve kaydı tamamlar
- Betik numarayı serbest bırakır (veya süresinin dolmasını bekler)
turbon API ile çalışma: temel endpoint'ler
Numara alma
İlk adım, istediğiniz servis ve ülke için uygun bir numara istemektir:
GET /api/getNumber?api_key=YOUR_KEY&service=telegram&country=ru Yanıt: { "status": "success", "id": 12345678, "phone": "79991234567" }SMS bekleme
Numarayı hedef servise gönderdikten sonra kodu almak için polling yapılır:
GET /api/getStatus?api_key=YOUR_KEY&id=12345678 Yanıt (bekleme): {"status": "STATUS_WAIT_CODE"} Yanıt (kod alındı): {"status": "STATUS_OK", "code": "12345"}Kullanımın onaylanması
GET /api/setStatus?api_key=YOUR_KEY&id=12345678&status=6 # status=6 — SMS'in alındığını ve her şeyin yolunda olduğunu bildirirUygulama örnekleri
Python: API ile çalışmak için temel sınıf
import requests import time class TurbonAPI: BASE_URL = "https://turbon.rent/api" def __init__(self, api_key): self.api_key = api_key def get_number(self, service, country="ru"): r = requests.get(f"{self.BASE_URL}/getNumber", params={ "api_key": self.api_key, "service": service, "country": country }) data = r.json() if data["status"] == "success": return data["id"], data["phone"] raise Exception(f"Failed to get number: {data}") def wait_sms(self, activation_id, timeout=120, interval=5): deadline = time.time() + timeout while time.time() < deadline: r = requests.get(f"{self.BASE_URL}/getStatus", params={ "api_key": self.api_key, "id": activation_id }) data = r.json() if data["status"] == "STATUS_OK": return data["code"] if "CANCEL" in data["status"]: raise Exception("Activation cancelled") time.sleep(interval) raise TimeoutError(f"SMS not received in {timeout}s") def confirm(self, activation_id): requests.get(f"{self.BASE_URL}/setStatus", params={ "api_key": self.api_key, "id": activation_id, "status": 6 }) # Kullanım: turbon = TurbonAPI("your_api_key") act_id, phone = turbon.get_number("telegram") # ... phone numarasıyla Telegram'a kayıt ... code = turbon.wait_sms(act_id) # ... code kodunun girilmesi ... turbon.confirm(act_id)JavaScript/Node.js: asenkron yaklaşım
const axios = require('axios'); async function getNumber(apiKey, service, country = 'ru') { const { data } = await axios.get('https://turbon.rent/api/getNumber', { params: { api_key: apiKey, service, country } }); if (data.status !== 'success') throw new Error(data.status); return { id: data.id, phone: data.phone }; } async function waitSms(apiKey, id, timeout = 120000) { const deadline = Date.now() + timeout; while (Date.now() < deadline) { await new Promise(r => setTimeout(r, 5000)); const { data } = await axios.get('https://turbon.rent/api/getStatus', { params: { api_key: apiKey, id } }); if (data.status === 'STATUS_OK') return data.code; if (data.status.includes('CANCEL')) throw new Error('Cancelled'); } throw new Error('Timeout'); }Paralel kayıt
Worker Pool deseni
100 hesabı paralel kaydetmek için worker pool deseni kullanılır: N işçi (worker) aynı anda çalışır ve her biri kaydın tüm döngüsünü yürütür. N=10 olduğunda 100 hesabın kayıt süresi 10 kat kısalır.
from concurrent.futures import ThreadPoolExecutor import time def register_account(turbon, service, registrar): act_id, phone = turbon.get_number(service) registrar.start_registration(phone) code = turbon.wait_sms(act_id) account = registrar.complete_registration(code) turbon.confirm(act_id) return account # Paralel çalıştırma with ThreadPoolExecutor(max_workers=10) as executor: futures = [ executor.submit(register_account, turbon, "telegram", registrar) for _ in range(100) ] accounts = [f.result() for f in futures]Hata yönetimi ve retry
Sık karşılaşılan hatalar
HataNedenÇözüm NO_NUMBERSServis/ülke için uygun numara yok30–60 sn sonra tekrar deneyin veya ülkeyi değiştirin STATUS_CANCELSMS gelmedi, aktivasyon iptal edildiYeni numara alıp işlemi tekrarlayın BANNEDAPI hesabı engellendiBakiyenizi ve limitlerinizi kontrol edin TimeoutErrorSMS zaman aşımından sonra geldiTimeout süresini artırın, retry ekleyinExponential backoff
NO_NUMBERS hatalarında API'yi isteklerle boğmayın; artan aralıklarla bekleyin: 5 sn → 10 sn → 20 sn → 40 sn. Bu, yükü azaltır ve talebin yüksek olduğu dönemlerde numara alma şansını artırır.
Antidetect tarayıcı entegrasyonu
Playwright veya Selenium bir tarayıcı profili başlatır → betik turbon API'si üzerinden numara alır → tarayıcı otomasyonuyla numarayı forma girer → API üzerinden kodu alır → tarayıcıya girer. İnsan müdahalesi olmadan tam bir döngü.
Kilit nokta: numarayı aldıktan sonra SMS kodunu girmeden önce 5–30 saniyelik bir gecikme olmalıdır (SMS'i «okuyan» gerçek bir kullanıcıyı taklit etmek için). Gecikme olmazsa bazı platformlar otomasyonu tespit eder.
Otomasyonda en iyi uygulamalar
- Numara kullanımını her zaman onaylayın (status=6) — bu, havuzun kalitesinin iyileşmesine yardımcı olur
- Kayıt formu girişe hazır olmadan numara istemeyin — numaranın süresi dolabilir
- Her aktivasyonu sonucuyla birlikte kaydedin — servislere göre başarı oranını analiz etmek için
- Farklı platformlar için farklı ülkeler kullanın — kalıpları azaltır
- API'ye makul istek hızını aşmayın — rate limit'lere uyun
Sonuç
Sanal numara API'siyle kayıt otomasyonu, elle yapılan işten ölçeklenebilir bir sürece geçiştir. 10 satır kod, operatörün 10 dakikalık elle çalışmasının yerini alır. turbon.rent, numara alma, SMS alma ve aktivasyon yönetimi için API sunar — betiklerinize ve pipeline'larınıza entegre etmek için gereken her şey burada.