Powrót do strony głównej

Detektor Telega w czatach na Go: API VK Calls

Narzędzie Go antitelega skanuje czaty Telegram pod kątem użytkowników Telega za pomocą publicznego API VK Calls. Opisana architektura, ochrona przed banami z jitter i risk_level, typowe błędy z gotgproto.

Bot Go do wyszukiwania Telega w czatach Telegram
Advertisement 728x90

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ń.

Google AdInline article slot
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 ChannelsGetParticipants z 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.

Google AdInline article slot

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 — przekazanie DeviceConfig z Telegram Desktop.
  • Stałe interwały: Dokładnie 350 ms — metronom dla antyspamu. Jitter niezbędny.
  • Zmiany w API: Endpoint zmieniono z getOkIdsByExternalIds na liczbę pojedynczą, klucz może wycofać OK. Konfigurowalny application_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:

Google AdInline article slot
  • Mapowanie tworzony przy pierwszym anonymLogin Telega.
  • API publiczne, klucz z APK.
  • Userbot ryzykowny — używaj jednorazowych kont.
  • Cache i jitter zmniejszają wykrywalność.
  • ~2000 linii Go, licencja MIT.

— Editorial Team

Advertisement 728x90

Czytaj dalej