Detektor użytkowników Telega w czatach Telegram: implementacja w Go
Instalacja klienta Telega od VK prowadzi do rejestracji Telegram ID w bazie VK Calls bez wyraźnej zgody użytkownika. Dzieje się to poprzez anonimowe logowanie na calls.okcdn.ru. Mapowanie Telegram ID na OK ID staje się publicznie dostępne przez API, które nie wymaga autoryzacji.
Detektor antitelega napisany w Go skanuje czaty, wyciąga ID uczestników i sprawdza ich obecność w bazie. Cały proces mieści się w trzech żądaniach HTTP: anonimowe logowanie, zapytanie o OK ID po externalId i parsowanie odpowiedzi.
POST https://calls.okcdn.ru/api/auth/anonymLogin
application_key=CHKIPMKGDIHBABABA
session_data={"device_id":"antitelega","version":2,...}
Klucz CHKIPMKGDIHBABABA jest wyodrębniany z APK Telega (appId: 512001570726). Serwer zwraca session_key do kolejnych zapytań.
POST https://calls.okcdn.ru/api/vchat/getOkIdByExternalId
application_key=CHKIPMKGDIHBABABA
session_key=<z kroku 1>
externalId=123456789
Odpowiedź z ok_id potwierdza rejestrację, błąd 300 oznacza brak wpisu.
Architektura skanera: od komendy /scan do raportu
Bot uruchamia się komendą /scan @chatname w Zapiszanych Wiadomościach. Pipeline obejmuje:
- Wyliczenie: Wyciąganie uczestników przez
ChannelsGetParticipantsz paginacją, jitterem i filtrowaniem botów/usuniętych kont. - Sprawdzenie w pamięci podręcznej: Weryfikacja w SQLite-cache (TTL 6 godzin).
- Masowa weryfikacja: Rozdzielanie na pulę workerów z limitowaniem tempa i jitterem.
- Raport: Sformatowany wynik w Zapiszanych Wiadomościach, dzielenie na części przy przekroczeniu 3800 znaków.
Binarka ~26 MB, czysty Go z modernc.org/sqlite, bez CGO. Obsługa ARM.
Risk_level: presety minimalizujące ryzyko bana
func jitteredDuration(d time.Duration, jitterPct float64) time.Duration {
factor := 1.0 + jitterPct*(2*rand.Float64()-1)
return time.Duration(float64(d) * factor)
}
Jitter maskuje wzorce pod ludzkie działania. Presety risk_level:
- paranoid: 1 worker, 1 żądanie/s, 30 uczestników/strona, jitter ±50% (16 min na 700 osób).
- careful (domyślny): 2 workery, 3 żądania/s, 80/strona, ±40% (5 min).
- normal: 4 workery, 6 żądania/s, 150/strona, ±30% (2,5 min).
- aggressive: Bez jittera, maksymalna prędkość (ryzyko bana).
Typowe błędy przy tworzeniu userbota
- Błędny DeviceConfig: Biblioteka gotgproto wysyła domyślny
GoTGProto, Helsinki, co prowadzi do bana. Poprawka — przekazanieDeviceConfigzTelegram Desktop. - Stałe interwały: Dokładnie 350 ms — metronom dla antyspamu. Jitter niezbędny.
- Zmiany w API: Endpoint zmieniono z
getOkIdsByExternalIdsna liczbę pojedynczą, klucz może wycofać OK. Konfigurowalnyapplication_key.
Ograniczenia metody
Pozytywny ok_id wskazuje na przeszłą instalację Telega, nie na bieżącą aktywność. Metoda korzysta z identycznego protokołu Telega, bez exploitów.
Co ważne:
- Mapowanie tworzony przy pierwszym
anonymLoginTelega. - API publiczne, klucz z APK.
- Userbot ryzykowny — używaj jednorazowych kont.
- Cache i jitter zmniejszają wykrywalność.
- ~2000 linii Go, licencja MIT.
— Editorial Team
Brak komentarzy.