
Python으로 작성된 텔레그램 대규모 감시 봇

Informer (TGInformer)는 텔레그램에서 여러 실제 사용자인 것처럼 위장할 수 있는 봇 라이브러리로서, 계정당 500개 이상의 텔레그램 채널을 감시할 수 있습니다. 세부 정보는 MySQL 데이터베이스, 비공개 Google 시트, 그리고 분석을 위한 개인 채널에 기록됩니다.
이는 알려진 버그가 있는 작동하는 개념 증명 프로젝트입니다. 자유롭게 포크하고 공유해 주시고 연락 주세요.



키워드 필터링을 위한 정규 표현식 지원
SQLAlchemy를 사용한 데이터베이스 독립적 데이터 저장

메시지 및 채널 컨텍스트 데이터를 개인 채널과 데이터베이스에 로깅
메시지 발신자, 채널, 채널 참여자 수 등 메타 정보 저장


참여한 채널의 세션 유지
한 번 로그인하면 2FA 재인증 없이 봇이 영구적으로 로그인 유지
계정당 최대 500개 채널 참여

Informer에 필요한 모든 환경 변수가 포함된 informer.env 파일을 편집하세요.
필요한 텔레그램 관련 정보는 여기서 가져올 수 있습니다:
https://my.telegram.org/auth로 이동하여 전화번호와 전화(또는 텔레그램)로 전송된 확인 코드를 제공하여 계정을 인증합니다.


인증되면 "API Development Tools"를 클릭합니다.

아래 양식을 작성하여 새 애플리케이션을 만듭니다.

이제 informer.env 파일의 TELEGRAM_API_HASH 및 TELEGRAM_API_APP_ID 필드에 필요한 매개변수 값이 준비되었습니다.

TELEGRAM_ACCOUNT_PHONE_NUMBER를 포함한 값을 바꾸고 다음 섹션으로 넘어갑니다.
지금까지 Telethon과 Informer가 텔레그램 API에 접근하는 데 필요한 것을 얻었습니다. 다음으로 봇 계정의 식별자를 가져와야 합니다.
userinfobot 사용자를 검색합니다.


텔레그램 사용자 이름과 텔레그램 계정 ID를 받게 됩니다. 이는 중요합니다.

informer.env 파일을 편집하고 TELEGRAM_ACCOUNT_ID 값(이전 단계의 텔레그램 계정 ID)과 TELEGRAM_ACCOUNT_USER_NAME을 채웁니다.선택적으로 TELEGRAM_NOTIFICATIONS_CHANNEL_ID에 사용자 이름 또는 채널 ID를 입력할 수 있습니다.
TELEGRAM_ACCOUNT_PHONE_NUMBER가 작성되었는지 확인하세요. 이것이 세션 생성의 핵심입니다. 여러 계정을 생성하려면 아래 Burner App을 확인하세요.Python 3을 실행 중인지 확인하고 디렉토리에서 ./quick_start.sh를 실행하기만 하면 됩니다.
처음 실행 시 텔레그램으로 인증하고 로컬 세션 파일을 생성하려면 먼저 이 작업을 수행해야 합니다.
나중에 app/session에 다른 계정의 파일을 복사하고 원한다면 Docker를 통해 마운트할 수 있습니다.

이전에 로그인한 적이 있으면 텔레그램을 통해, 그렇지 않으면 SMS를 통해 받은 인증 코드를 입력하라는 메시지가 표시됩니다.

Enter 키를 누르면 app/session 폴더에 .session 확장자를 가진 국제 전화번호를 파일명으로 하는 세션이 생성됩니다.
다음 섹션에서는 Docker Compose를 사용하여 데이터베이스를 설정합니다.
이 단계는 선택 사항이지만, 비공개 그룹 채널을 만들고 그룹 ID를 가져오려면 다음을 수행하세요:

informer.env 파일의 TELEGRAM_NOTIFICATIONS_CHANNEL_URL 매개변수에 URL을 설정합니다.
채널 ID를 얻으려면 app 디렉토리에서 python3 bot.py <TELEGRAM_ACCOUNT_ID>를 실행합니다. 여기서 <TELEGRAM_ACCOUNT_ID>는 이전에 생성한 계정 ID입니다.
스크립트가 로드되면 현재 속한 모든 채널이 표시됩니다. 이 값을 복사하여 informer.env 파일의 TELEGRAM_NOTIFICATIONS_CHANNEL_ID 매개변수에 넣고 스크립트를 종료합니다. 이제 Informer를 실행할 준비가 되었습니다.
quick_start.sh를 실행한 후 다음을 통해 Docker Compose를 실행할 수 있습니다:
./start.sh를 실행하여 MySQL 데이터베이스를 포함한 Docker 컨테이너를 빌드합니다.
./stop.sh를 실행하여 컨테이너를 중지합니다.
./clean.sh를 실행하여 고아 컨테이너와 볼륨을 제거합니다. 참고: 이렇게 하면 데이터베이스가 RESET되어 모든 데이터가 손실됩니다.
참고 사항:
이전에는 자체 MySQL 인스턴스를 실행해야 했으며, 이로 인해 연결 문자열 호환성 및 버전 문제가 발생했습니다. 이번 업데이트에서는 인스턴스가 자동으로 생성되고 디스크에 유지됩니다.
또한 Dozzle이 제공되어 브라우저에서 로그를 볼 수 있습니다. http://localhost:9999로 이동하여 app_informer 컨테이너를 클릭하면 됩니다.
자신의 전화번호를 사용하지 않고 어느 정도 익명성을 가지고 Informer 봇을 실행하려면 iOS 및 Android에서 사용 가능한 Burner App을 사용할 수 있습니다.
Burner 앱 설치

위와 동일한 단계를 따라 여기에 새 전화번호를 제공합니다: https://my.telegram.org/auth
Burner로 인증합니다. SMS를 통해 인증 코드가 전송되며, 이를 제공해야 합니다.

텔레그램에 로그인합니다.
app 디렉토리에서 python3 bot.py <api_user_id>를 실행하여 앱으로 로그인을 시도합니다.
Telethon으로 로그인하므로 이전처럼 터미널에 인증 코드를 요청할 것입니다.
이는 텔레그램 메시지 또는 SMS를 통해 전송되었습니다.