You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sempre più bot entrano nel canale solamente per postare link di spam/phishing relativi a qualche sito malevolo che ha a che fare con qualche cryptocurrency. Esempio più comune: una foto seguita da un link che il è spesso nel formato http[s]://t.cn/... o http[s]://tinyurl.com....
La quantità di bot di questo genere sembra essere non insignificante e suppongo che sia difficile e noioso gestire a mano la cosa. L'aggiunta al bot di una funzionalità di controllo dei messaggi dei nuovi utenti ed eventuale ban istantaneo dei bot sarebbe una ottima feature.
Come funzionano gli spam bot
Un bot del genere solitamente opera così:
Entra nel gruppo, ed aspetta un po' (minuti, secondi).
Invia nel gruppo una foto apparentemente normale.
Invia nel gruppo un messaggio contenente testo casuale.
Modifica la foto nel messaggio del punto 2 cambiandola con una foto contenente spam, come mostrato sopra.
Modifica il testo del messaggio del punto 3 cambiandolo con un link di spam/phishing, come mostrato sopra.
I punti 2, 3, 4, 5 sono più o meno interscambiabili a patto che ovviamente 2 avvenga prima di 4 e 3 avvenga prima di 5.
Come contrastarli
Non conosco la API fornita dalla specifica libreria Python utilizzata in questo bot, ma conosco la API Telegram, quindi parlerò basandomi sulla seconda. La libreria Python utilizzata dice di supportare completamente la Telegram Bot API 4.1, quindi il modo di fare quel che dico dovrebbe esserci, e non dovrebbe neanche essere difficile da capire.
Cosa andrebbe fatto:
Ogni messaggio ricevuto, controllare il campo new_chat_members dell'oggetto Message, aggiungendo l'ID di tutti i nuovi utenti ad un set di watchlist. Gli utenti in questo set avranno associato un contatore del numero di messaggi inviati nel gruppo (inizialmente settato a zero) ed una data dell'ultima interazione (inizialmente settata al momento di entrata nel gruppo).
Ogni messaggio ricevuto, controllare se il messaggio è stato inviato da uno degli utenti nel set di watchlist.
Se l'utente è nel set:
3.1. Incrementare il contatore: se il contatore supera una certa soglia (direi >= 3), eliminare l'utente dalla watchlist. I bot solitamente inviano i primi due messaggi contenenti spam, poi basta.
3.2. Se è passato abbastanza tempo dall'ultima interazione (1h? 3h? da definire), eliminare l'utente dalla watchlist. I bot solitamente operano nel giro di pochi minuti/secondi di tempo dall'entrata nel gruppo.
3.3. Se il messaggio contiene una foto (campo photo), una possibile azione potrebbe essere il ban istantaneo (e rimozione da watchlist), inviando poi un messaggio privato di default all'utente spiegando il motivo del ban. Nessuno invia foto appena entrato in un gruppo, questo potrebbe essere un buon metodo di riconoscere bot.
3.4. Se il messaggio contiene del testo (campo text), controllare il testo per URL della forma http[s]://t.cn/... o http[s]://tinyurl.com... ed in tal caso bannare l'utente allo stesso modo del punto 3.3 (e rimuovere da watchlist).
3.5. Se il messaggio contiene una edit di una photo (campo new_chat_photo), stessa azione del punto 3.3.
3.6. Se il messaggio è una edit del testo (campo edit_date diverso da date), stessa azione del punto 3.4.
In ogni caso, è necessario avere una seconda funzione che controlli gli utenti nella watchlist ogni TOT ed elimini dalla watchlist gli utenti che hanno una ultima interazione abbastanza vecchia, così da non riempire la watchlist (e quindi anche la RAM) di utenti che sono nel gruppo solo per leggere e non mandano messaggi. Questo potrebbe essere aggiunto all'handler dei messaggi di default.
The text was updated successfully, but these errors were encountered:
Non basterebbe obbligare tutti gli utenti a scrivere un messaggio contenente "Ciao a tutta ItalyInformatica" entro... non so, 3h? E se il primo messaggio non è questo kick e dopo 2 kick: ban
Basterebbe aggiungere un messaggio di benvenuto per avvertire
Sempre più bot entrano nel canale solamente per postare link di spam/phishing relativi a qualche sito malevolo che ha a che fare con qualche cryptocurrency. Esempio più comune: una foto seguita da un link che il è spesso nel formato
http[s]://t.cn/...
ohttp[s]://tinyurl.com...
.La quantità di bot di questo genere sembra essere non insignificante e suppongo che sia difficile e noioso gestire a mano la cosa. L'aggiunta al bot di una funzionalità di controllo dei messaggi dei nuovi utenti ed eventuale ban istantaneo dei bot sarebbe una ottima feature.
Come funzionano gli spam bot
Un bot del genere solitamente opera così:
I punti 2, 3, 4, 5 sono più o meno interscambiabili a patto che ovviamente 2 avvenga prima di 4 e 3 avvenga prima di 5.
Come contrastarli
Non conosco la API fornita dalla specifica libreria Python utilizzata in questo bot, ma conosco la API Telegram, quindi parlerò basandomi sulla seconda. La libreria Python utilizzata dice di supportare completamente la Telegram Bot API 4.1, quindi il modo di fare quel che dico dovrebbe esserci, e non dovrebbe neanche essere difficile da capire.
Cosa andrebbe fatto:
Ogni messaggio ricevuto, controllare il campo
new_chat_members
dell'oggettoMessage
, aggiungendo l'ID di tutti i nuovi utenti ad un set di watchlist. Gli utenti in questo set avranno associato un contatore del numero di messaggi inviati nel gruppo (inizialmente settato a zero) ed una data dell'ultima interazione (inizialmente settata al momento di entrata nel gruppo).Ogni messaggio ricevuto, controllare se il messaggio è stato inviato da uno degli utenti nel set di watchlist.
Se l'utente è nel set:
3.1. Incrementare il contatore: se il contatore supera una certa soglia (direi
>= 3
), eliminare l'utente dalla watchlist. I bot solitamente inviano i primi due messaggi contenenti spam, poi basta.3.2. Se è passato abbastanza tempo dall'ultima interazione (1h? 3h? da definire), eliminare l'utente dalla watchlist. I bot solitamente operano nel giro di pochi minuti/secondi di tempo dall'entrata nel gruppo.
3.3. Se il messaggio contiene una foto (campo
photo
), una possibile azione potrebbe essere il ban istantaneo (e rimozione da watchlist), inviando poi un messaggio privato di default all'utente spiegando il motivo del ban. Nessuno invia foto appena entrato in un gruppo, questo potrebbe essere un buon metodo di riconoscere bot.3.4. Se il messaggio contiene del testo (campo
text
), controllare il testo per URL della formahttp[s]://t.cn/...
ohttp[s]://tinyurl.com...
ed in tal caso bannare l'utente allo stesso modo del punto 3.3 (e rimuovere da watchlist).3.5. Se il messaggio contiene una edit di una photo (campo
new_chat_photo
), stessa azione del punto 3.3.3.6. Se il messaggio è una edit del testo (campo
edit_date
diverso dadate
), stessa azione del punto 3.4.In ogni caso, è necessario avere una seconda funzione che controlli gli utenti nella watchlist ogni TOT ed elimini dalla watchlist gli utenti che hanno una ultima interazione abbastanza vecchia, così da non riempire la watchlist (e quindi anche la RAM) di utenti che sono nel gruppo solo per leggere e non mandano messaggi. Questo potrebbe essere aggiunto all'handler dei messaggi di default.
The text was updated successfully, but these errors were encountered: