홈으로 돌아가기

Go 채팅 내 Telega Detector: VK Calls API

공개 VK Calls API를 통해 Telegram 채팅에서 Telega 사용자들을 스캔하는 Go 유틸리티 antitelega. 아키텍처, jitter와 risk_level을 사용한 밴 보호, gotgproto의 전형적인 오류 설명.

Telegram 채팅에서 Telega 검색을 위한 Go-bot
Advertisement 728x90

텔레그램 채팅방 Telega 사용자 탐지기: Go 구현

VK의 Telega 클라이언트를 설치하면 사용자의 명시적 동의 없이 Telegram ID가 VK Calls 데이터베이스에 등록됩니다. 이는 calls.okcdn.ru로의 익명 로그인(anonymLogin)을 통해 발생하며, Telegram ID와 OK ID 간 매핑이 인증되지 않은 API를 통해 공개적으로 접근 가능해집니다.

Go 기반 antitelega 탐지기는 채팅방을 스캔해 멤버 ID를 추출하고 데이터베이스에 있는지 확인합니다. 전체 과정은 단 세 번의 HTTP 요청으로 완료됩니다: 익명 로그인, 외부 ID로 OK ID 조회, 응답 파싱.

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

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

CHKIPMKGDIHBABABA 키는 Telega APK(appId: 512001570726)에서 추출됩니다. 서버는 후속 요청에 사용할 session_key를 응답으로 줍니다.

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

application_key=CHKIPMKGDIHBABABA
session_key=<1단계에서 받은 값>
externalId=123456789

응답에 ok_id가 있으면 등록 확인; 300 에러는 기록 없음.

스캐너 아키텍처: /scan 명령부터 보고서까지

봇은 저장된 메시지(Saved Messages)에서 /scan @채팅방이름으로 시작합니다. 파이프라인은 다음과 같습니다:

  • 열거(Enumeration): ChannelsGetParticipants로 멤버 추출, 페이지네이션, 지터(jitter), 봇/삭제된 계정 필터링.
  • 캐시 조회: SQLite 캐시 확인(TTL 6시간).
  • 일괄 확인: 워커 풀 분산, 속도 제한 및 지터 적용.
  • 보고서: 저장된 메시지에 포맷팅 출력, 3800자 초과 시 청크 분할.

바이너리 크기는 약 26MB, 순수 Go에 modernc.org/sqlite 사용, CGO 없음. ARM 지원 포함.

Google AdInline article slot

위험 수준(Risk_level): 밴 피하기 위한 프리셋

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

지터는 인간 행동을 모방해 탐지를 피합니다. 위험 수준 프리셋:

  • 극도로 신중(paranoid): 1 워커, 1 req/s, 30명/페이지, ±50% 지터 (700명 기준 16분).
  • 신중(careful, 기본값): 2 워커, 3 req/s, 80명/페이지, ±40% (5분).
  • 보통(normal): 4 워커, 6 req/s, 150명/페이지, ±30% (2.5분).
  • 공격적(aggressive): 지터 없음, 최대 속도 (밴 위험 높음).

유저봇 개발 흔한 실수

  • 잘못된 DeviceConfig: gotgproto 기본값 GoTGProto, Helsinki는 밴 유발. 해결: Telegram Desktop 모방 DeviceConfig 사용.
  • 고정 간격: 정확히 350ms는 안티스팸에 걸림. 지터 필수.
  • API 변경: 엔드포인트가 getOkIdsByExternalIds에서 단수형으로 변경; 키는 OK에 의해 무효화될 수 있음. application_key 구성 가능하게.

방법의 한계

양성 ok_id는 과거 Telega 설치만 나타내며, 현재 사용 여부는 아님. Telega 프로토콜을 정확히 복제—no 익스플로잇.

주요 포인트:

Google AdInline article slot
  • 첫 Telega anonymLogin 시 매핑 생성.
  • API 공개; 키는 APK에서.
  • 유저봇은 밴 위험—일회용 계정 사용.
  • 캐시와 지터로 탐지 확률 ↓.
  • Go 코드 약 2000줄, MIT 라이선스.

— Editorial Team

Advertisement 728x90

다음 읽기