
Un bot di sorveglianza di massa per Telegram in Python

Informer (TGInformer) è una libreria bot che ti consente di impersonare più utenti REALI su Telegram e spiare oltre 500 canali Telegram per account. I dettagli vengono registrati in un database MySQL, in un Foglio Google privato e in un tuo canale privato per l'analisi.
Questo è un progetto proof-of-concept funzionante con bug noti. Sentiti libero di fare fork, condividere e contattarmi.



Supporta le espressioni regolari per il filtraggio delle parole chiave
SQLAlchemy per persistenza dei dati agnostica

Registrazione dei dati contestuali dei messaggi e dei canali su un canale privato e sul database
Memorizza informazioni meta sul mittente del messaggio, sul canale, sul numero di partecipanti al canale


Persiste la sessione dei canali a cui ci si è uniti
Login una volta, il bot rimane loggato per sempre senza necessità di 2FA
Unisciti fino a 500 canali per account

Modifica il file informer.env che contiene tutte le variabili ambientali richieste per informer
Puoi recuperare le informazioni necessarie relative a Telegram qui:
https://my.telegram.org/auth per autenticare il tuo account fornendo un numero di telefono e il codice di conferma inviato al tuo numero (o a Telegram)


Una volta autenticato, clicca su "API Development Tools"

Crea una Nuova Applicazione compilando il modulo mostrato di seguito

Ora dovresti avere i valori dei parametri necessari per i campi TELEGRAM_API_HASH e TELEGRAM_API_APP_ID del file informer.env

TELEGRAM_ACCOUNT_PHONE_NUMBER, e passa alla sezione successiva
Finora abbiamo ciò che serve a Telethon e Informer per accedere alle API di Telegram; ora dobbiamo acquisire gli identificatori per l'account del tuo bot.
userinfobot.


Dovresti ricevere il tuo username Telegram e il tuo ID account Telegram. Questo è importante.

informer.env e inserisci i valori per TELEGRAM_ACCOUNT_ID, che dovrebbe essere il tuo ID account Telegram dal passaggio precedente, e TELEGRAM_ACCOUNT_USER_NAME.Puoi facoltativamente inserire TELEGRAM_NOTIFICATIONS_CHANNEL_ID con il tuo nome utente o un ID canale.
TELEGRAM_ACCOUNT_PHONE_NUMBER, poiché è fondamentale per generare la sessione. Per creare più account, consulta l'App Burner di seguito.Assicurati di eseguire Python 3 e lancia semplicemente ./quick_start.sh nella directory.
Devi eseguirlo prima per poter autenticare Telegram al primo avvio e generare un file di sessione locale.
Successivamente puoi copiare i file per i diversi account in app/session e montarli tramite Docker, se lo desideri.

Ti verrà chiesto di inserire il codice di autenticazione che hai ricevuto tramite Telegram (se hai già effettuato l'accesso) o tramite SMS.

Premi Invio e la tua sessione verrà generata nella cartella app/session con il nome del file corrispondente al numero di telefono internazionale fornito, con estensione .session.
Prosegui alla sezione successiva in cui utilizziamo Docker Compose per configurare un database.
Questo passaggio è opzionale, ma se desideri creare un canale o gruppo privato e ottenere l'ID del gruppo, procedi come segue:

Imposta l'URL nel file informer.env sotto il parametro TELEGRAM_NOTIFICATIONS_CHANNEL_URL
Per ottenere l'ID del canale, esegui semplicemente python3 bot.py <TELEGRAM_ACCOUNT_ID> nella directory app, dove <TELEGRAM_ACCOUNT_ID> è l'ID account che hai generato in precedenza.
Quando lo script carica, mostrerà tutti i canali in cui ti trovi; copia questo valore e inseriscilo nel parametro TELEGRAM_NOTIFICATIONS_CHANNEL_ID del file informer.env, poi termina lo script. Ora sei pronto per eseguire Informer.
Dopo aver eseguito quick_start.sh, puoi avviare Docker Compose con:
./start.sh per costruire i container Docker che includono il database MySQL
Esegui ./stop.sh per fermare i container
Esegui ./clean.sh per rimuovere container e volumi non collegati. ** NOTA ** questo RESETTA il database e perderai tutti i dati.
Alcune note:
Prima era necessario eseguire la propria istanza MySQL, e questo causava problemi di compatibilità delle stringhe di connessione e di versione. In questo aggiornamento, viene creata per te e persistita su disco.
Inoltre, Dozzle è fornito per visualizzare i log nel browser; basta andare su http://localhost:9999 e cliccare sul container app_informer.
Se non vuoi usare il tuo numero di telefono e desideri eseguire il bot Informer con un certo grado di anonimato, puoi utilizzare l'app Burner disponibile su iOS e Android.
Installa l'app Burner

Segui gli stessi passaggi di cui sopra fornendo il nuovo numero di telefono qui: https://my.telegram.org/auth
Verifica con Burner. Riceverai un codice di autenticazione via SMS, che dovrai fornire.

Accedi a Telegram
Prova ad accedere con l'app eseguendo
python3 bot.py <api_user_id> nella directory app.
Questo è stato inviato tramite messaggio Telegram o SMS.
Forniscilo e le tue credenziali di sessione verranno salvate nel file di sessione menzionato di seguito. Non avrai più bisogno di autenticarti finché avrai il file di sessione salvato.
Le sessioni sono salvate nella cartella app/session/ come <telegram_phone_number>.session
Ripeti fino ad avere tutti i file di sessione necessari e montali semplicemente in Docker.
Capire come scalare gli account è stato un incubo, poiché avevo bisogno di un processo automatizzato. Telegram richiede di utilizzare un numero di telefono reale in grado di ricevere SMS da un codice breve.
Sfortunatamente, servizi con API come Twilio non possono ricevere SMS da codici brevi in USA, Canada e Regno Unito https://support.twilio.com/hc/en-us/articles/223181668-Can-Twilio-numbers-receive-SMS-from-a-short-code- per motivi antifrode. Sarebbe stato ideale, che peccato.
Un'intera serata è stata sprecata in questo tentativo fino a quando non mi sono ricordato di un'ottima app che avevo usato in passato: Burner (https://www.burnerapp.com/) — che per coincidenza ha un'API (https://developer.burnerapp.com/api-documentation/incoming-webhooks/). Ciò significa che puoi generare dinamicamente numeri, istanziare un nuovo account e autenticarlo tutto tramite l'SDK client di Telegram in Python (Telethon: https://docs.telethon.dev/en/latest/)
La parte migliore è che i numeri Burner sono gratuiti per 14 giorni. Gli account Telegram connessi tramite API client devono solo effettuare l'accesso una volta e persistono le sessioni in modo permanente. Non ho integrato l'API Burner, ma il processo è semplice.
Il bot è costruito sull'SDK Python Telethon (https://docs.telethon.dev/en/latest/)
Alcune note e problemi incontrati durante la creazione di questo proof-of-concept:
I FloodWaitErrors possono verificarsi quando invii troppe richieste all'API, sia per interrogare le informazioni degli utenti o per unirti a troppi canali troppo velocemente
TelegramClient(<nome_file_sessione>, <api_user_id>, <api_user_hash>)
Questo file risulta essere un database sqlite a cui puoi connetterti. Funge
da cache e memorizza dati storici così come le tue informazioni di
autenticazione della sessione, in modo da non dover riautenticare con
il 2FA di Telegram. Nota che dovrai effettuare l'accesso per la prima volta
e autenticarti quando usi l'API per la prima volta.
Mentre il bot funziona e si unisce ai canali, vedrai il tuo client aggiornarsi in tempo reale e visualizzare i nuovi canali a cui ti sei unito.

SUGGERIMENTO: TelegramX è di gran lunga il client migliore per questi scopi poiché supporta login multipli. Scaricalo qui:
Nota: L'integrazione con Google Sheets è completamente OPZIONALE. L'applicazione funziona perfettamente anche solo con il database MySQL.
Se desideri abilitare la registrazione su Google Sheets:
app/credentials/README.mdPanoramica rapida:
app/credentials/google_credentials.jsonQuesto è opzionale e il bot funzionerà senza di esso.
bot.py due volte: una per unirti ai canali e un'altra per monitorarli. Sono consapevole di questo bug evidente e lo correggerò nella prossima revisione.Hai trovato interessante questo progetto? Per favore, metti una stella se è così.
È stato realizzato in due giorni come proof-of-concept per un amico nel settore delle criptovalute. Se trovi applicazioni interessanti o redditizie, sono sempre felice di collaborare. Puoi contattarmi a:
@paulpierre su Twitter o hi (at) paulpierre (dot) com
La maggior parte dei miei progetti interessanti sono privati su github, ma sentiti libero di dare un'occhiata: http://www.github.com/paulpierre o i lavori passati su http://www.paulpierre.com
Copyright (c) 2020 Paul Pierre Con la presente viene concessa l'autorizzazione, a titolo gratuito, a chiunque ottenga una copia di questo software e dei file di documentazione associati (il "Software"), di trattare il Software senza restrizioni, inclusi, senza limitazione, i diritti di utilizzare, copiare, modificare, unire, pubblicare, distribuire, concedere in sublicenza e/o vendere copie del Software, e di permettere alle persone a cui il Software è fornito di fare altrettanto, soggetto alle seguenti condizioni: La suddetta nota sul copyright e questa nota di autorizzazione devono essere incluse in tutte le copie o parti sostanziali del Software. IL SOFTWARE VIENE FORNITO "COSÌ COM'È", SENZA GARANZIA DI ALCUN TIPO, ESPRESSA O IMPLICITA, INCLUSE MA NON LIMITATE ALLE GARANZIE DI COMMERCIABILITÀ, IDONEITÀ PER UNO SCOPO PARTICOLARE E NON VIOLAZIONE. IN NESSUN CASO GLI AUTORI O I TITOLARI DEL COPYRIGHT SARANNO RESPONSABILI PER QUALSIASI RECLAMO, DANNO O ALTRA RESPONSABILITÀ, SIA IN UN'AZIONE CONTRATTUALE, ILLECITO O ALTRIMENTI, DERIVANTE DA, O IN CONNESSIONE CON IL SOFTWARE O L'USO O ALTRE OPERAZIONI NEL SOFTWARE.