Volver al inicio

Detector de Telega en Chats con Go: VK Calls API

Utilidad Go antitelega escanea chats de Telegram en busca de usuarios Telega a través de la pública VK Calls API. Describe arquitectura, protección contra baneos con jitter y risk_level, errores típicos con gotgproto.

Bot Go para buscar Telega en chats de Telegram
Advertisement 728x90

Detector de usuarios de Telega en chats de Telegram: Implementación en Go

Instalar el cliente Telega de VK registra tu ID de Telegram en la base de datos de VK Calls sin consentimiento explícito del usuario. Esto ocurre mediante un inicio de sesión anónimo en calls.okcdn.ru. El mapeo de ID de Telegram a ID de OK queda accesible públicamente a través de una API sin autenticación.

El detector antitelega basado en Go escanea chats, extrae los IDs de los miembros y verifica si están en la base de datos. Todo el proceso requiere solo tres peticiones HTTP: inicio de sesión anónimo, búsqueda de ID de OK por ID externo y análisis de la respuesta.

POST https://calls.okcdn.ru/api/auth/anonymLogin

application_key=CHKIPMKGDIHBABABA
session_data={"device_id":"antitelega","version":2,...}

La clave CHKIPMKGDIHBABABA se extrae del APK de Telega (appId: 512001570726). El servidor responde con una session_key para las peticiones siguientes.

Google AdInline article slot
POST https://calls.okcdn.ru/api/vchat/getOkIdByExternalId

application_key=CHKIPMKGDIHBABABA
session_key=<de paso 1>
externalId=123456789

Una respuesta con ok_id confirma el registro; un error 300 indica que no hay registro.

Arquitectura del escáner: Del comando /scan al informe

El bot se inicia con /scan @nombrechat en Mensajes Guardados. El flujo incluye:

  • Enumeración: Extracción de miembros vía ChannelsGetParticipants con paginación, jitter y filtrado de bots/cuentas eliminadas.
  • Consulta de caché: Verificación en caché SQLite (TTL 6 horas).
  • Verificación por lotes: Distribuida en un pool de workers con limitación de tasa y jitter.
  • Informe: Salida formateada en Mensajes Guardados, dividida en fragmentos si supera 3800 caracteres.

El binario ocupa ~26 MB, Go puro con modernc.org/sqlite, sin CGO. Incluye soporte ARM.

Google AdInline article slot

Nivel de riesgo: Preajustes para evitar baneos

func jitteredDuration(d time.Duration, jitterPct float64) time.Duration {
    factor := 1.0 + jitterPct*(2*rand.Float64()-1)
    return time.Duration(float64(d) * factor)
}

El jitter imita el comportamiento humano para evadir detección. Preajustes de nivel de riesgo:

  • paranoico: 1 worker, 1 req/s, 30 miembros/página, ±50% jitter (16 min para 700 usuarios).
  • cauteloso (predeterminado): 2 workers, 3 req/s, 80/página, ±40% (5 min).
  • normal: 4 workers, 6 req/s, 150/página, ±30% (2,5 min).
  • agresivo: Sin jitter, velocidad máxima (alto riesgo de baneo).

Errores comunes en desarrollo de userbots

  • DeviceConfig incorrecto: gotgproto usa por defecto GoTGProto, Helsinki, lo que activa baneos. Solución: Usa DeviceConfig que imite Telegram Desktop.
  • Intervalos fijos: Exactamente 350 ms es una señal clara para el antispam. El jitter es imprescindible.
  • Cambios en API: El endpoint pasó de getOkIdsByExternalIds a singular; la clave puede ser revocada por OK. Haz application_key configurable.

Limitaciones del método

Un ok_id positivo indica una instalación pasada de Telega, no uso actual. Replica el protocolo exacto de Telega—sin exploits.

Puntos clave:

Google AdInline article slot
  • Mapeo creado en el primer anonymLogin de Telega.
  • API pública; clave del APK.
  • Userbots arriesgan baneos—usa cuentas desechables.
  • Caché y jitter reducen probabilidades de detección.
  • ~2000 líneas de Go, licencia MIT.

— Editorial Team

Advertisement 728x90

Leer después