Assistenza necessaria con enormi quantità di spam

Questa è stata una vera seccatura da combattere, ecco alcune informazioni di base.

Gestisco una community che ha un enorme clamore intorno a sé. Abbiamo ben oltre un milione di persone che seguono il nostro progetto e abbiamo impostato un Forum Discourse per aiutare gli sviluppatori all’interno della nostra community. Essenzialmente è un forum di supporto per sviluppatori per interagire con il nostro progetto, non consentiamo la pubblicazione di contenuti al di fuori di quelli relativi allo sviluppo.

Circa tre giorni fa, una figura di spicco di Youtube/Twitter ha affermato falsamente che registrandosi al nostro forum di supporto e pubblicando su di esso, si diventa idonei a ricevere ricompense/omaggi dal nostro team. Questo è interamente falso e ha portato a 3 giorni di iscrizioni quasi costanti e a una grande quantità di post e argomenti di spam sul forum.

Stiamo parlando di un numero di iscrizioni che va da 2.500 a 7.500 al giorno in questo momento, principalmente da paesi asiatici e mediorientali (2 paesi specifici spiccano come i principali responsabili).

Gli utenti che si iscrivono sembrano essere un mix di bot e utenti reali. Quasi tutti gli IP sono unici (un buon mix di IPv4 e IPv6) e non sembrano esserci subnet prominenti da bannare sul lato IPv4 per eliminarne una parte (su IPv6 ho avuto un po’ di fortuna bannando blocchi /24, ma sembra facilmente aggirabile). Gli indirizzi email sono tutti Gmail e molti di essi sembrano essere indirizzi email usa e getta/bot. L’unica indicazione che si tratta di account bot è che molti di loro riutilizzano la stessa immagine banner sul loro profilo, oltre a un testo generico nella biografia “Sono uno studente”.

Ho reso anonima questa lista modificando caratteri/numeri, ma per darvi esempi dei tipi di email associate a queste iscrizioni:

  1. syedaleem435@gmail.com
  2. kksam362@gmail.com
  3. julik8641@gmail.com
  4. eishanihal253@gmail.com
  5. subir2426@gmail.com
  6. meeagle38103@gmail.com

Questi utenti si iscrivono e poi creano nuovi argomenti irrilevanti per la nostra community. Spesso questi argomenti non sono nemmeno parole, è come se un bambino avesse premuto a caso i tasti della tastiera. Gli argomenti non sono troppo difficili da individuare ed eliminare, ma ciò che è peggio è che spammano argomenti preesistenti con spam/contenuti di bassa qualità. Molti dei nostri argomenti più popolari hanno ricevuto tra 500 e 1.500 nuovi post di spam/bassa qualità.

Al momento ho disabilitato completamente le registrazioni, ma sto cercando aiuto per quanto segue:

  1. C’è un modo per eliminare in massa i membri? Posso eliminare tutti gli utenti TL0 che si sono registrati nelle ultime 72 ore?
  2. Esiste un modo per rilevare email di spam/usa e getta e negare la registrazione da esse? A questo punto sarei disposto a bloccare tutte le email che terminano con 3-5 numeri per il momento.
  3. Suggeriresti di impostare l’auto-silenzio a un valore superiore a 3000 millisecondi?
  4. Puoi darmi altri suggerimenti o trucchi per aiutare a combattere volumi massicci di spam? Sento che questo è stato un lavoro a tempo pieno negli ultimi 2-3 giorni. Uso Akismet, ma ci sono plugin aggiuntivi che potrebbero aiutarmi?
5 Mi Piace

Imposterei - almeno temporaneamente - la creazione/risposta per tutte le categorie su TL1 o forse anche TL2, oppure userei Custom Wizard per far passare i nuovi utenti attraverso alcuni ostacoli (“Capisco che non riceverò ricompense” con 10 opzioni, solo una corretta) per farli aggiungere a un gruppo che può pubblicare.

4 Mi Piace

Potresti provare a usare un campo utente personalizzato con un’opzione multiselect obbligatoria sulla tua pagina di registrazione, con più risposte, di cui solo una è accettabile. Ciò probabilmente rallenterà un po’ i bot, o almeno ti darà un campo facilmente filtrabile per aiutarti a eliminare le registrazioni fasulle. (NOTA: Dopo averci pensato, sospetto che questo non funzionerà perché non c’è nulla che richieda una risposta specifica. Il metodo in una risposta precedente potrebbe funzionare meglio.)

Trovo le trappole di tipo captcha inefficaci al giorno d’oggi, i bot riescono a risolverle più velocemente di me.

Dovrebbe esserci un modo per eliminare i nuovi utenti L0 in Rails, ma assicurati di fare prima un backup. Se hanno pubblicato, dovrai prima eliminare quei post.

Altri hanno detto che richiedere ID a due fattori per le registrazioni elimina praticamente gli spammer. Non ho ancora dovuto ricorrere a questo.

6 Mi Piace

Apprezzo le risposte finora.

Disabilitando le registrazioni per un giorno, siamo riusciti a riprendere fiato.

@RGJ Mi piace la tua idea di creare degli ostacoli per essere aggiunti a un gruppo che ha i permessi di pubblicazione, è qualcosa che esploreremo.

Utilizzando il data explorer sono riuscito a identificare circa 5.000 account bot aggiuntivi che finora sono passati inosservati.

@MikeNolan Non sono sicuro di avere ancora accesso alla console rails. Stiamo ospitando direttamente con discourse e non ho partecipato al processo di acquisto/on-boarding, quindi sto inoltrando questa domanda alla catena per determinare a quali accessi abbiamo diritto.

Immagino di poter effettuare eliminazioni anche tramite API? Vedo che posso generarmi facilmente le credenziali API.

Qualcosa del tipo:

import csv
import requests
import time

api_key = 'api_key'
api_username = 'api_username'
base_url = 'https://mydomain.com'
headers = {
    'Api-Key': api_key,
    'Api-Username': api_username
}

def delete_user(user_id):
    delete_url = f'{base_url}/admin/users/{user_id}.json'
    response = requests.delete(delete_url, headers=headers)
    
    if response.status_code == 200:
        print(f'Successfully deleted user {user_id}')
    else:
        print(f'Failed to delete user {user_id}. Status code: {response.status_code}, Response: {response.text}')

with open('user_ids_to_delete.csv', 'r') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        user_id = row[0]
        try:
            delete_user(user_id)
        except Exception as e:
            print(f'Error occurred while deleting user {user_id}: {e}')
        
        time.sleep(1)  # Aggiunge un ritardo per evitare di sovraccaricare il server con richieste
1 Mi Piace

Diversi anni fa i nostri vecchi forum (phpbb3) sono stati colpiti da una grande ondata di registrazioni fasulle, molte delle email erano simili a quelle di gmail che hai elencato, anche se ne abbiamo ricevute parecchie da indirizzi .ru, in particolare yandex.

A un certo punto ne ricevevamo 1000 al giorno. Quando abbiamo risolto il problema, avevamo oltre 80.000 record fasulli.

Abbiamo risolto il problema richiedendo un ID di iscrizione valido e corrente (il nostro sistema di iscrizione era totalmente separato) che non fosse già stato utilizzato per creare un record del forum. In questo modo, anche se qualcuno avesse avuto accesso ai nostri record di iscrizione (sono online), avrebbe potuto usare un ID solo una volta. Le registrazioni fasulle sono scese praticamente a zero.

Non ho usato abbastanza il data explorer per conoscerne i limiti. Sono un DBA postgresql da oltre 20 anni, quindi accedere direttamente a psql non è stato un problema per me, ma ho limitato le mie attività lì a query di sola lettura.

3 Mi Piace

Il fingerprinting è ancora una tecnica valida o i browser l’hanno resa uno strumento senza più efficacia?

1 Mi Piace

La domanda giusta sarebbe se sia mai stata una tecnica praticabile :wink:

(E solo un promemoria: è illegale nell’UE)

da rails (docker exec -it my_container rails c):

spammers = User.where(trust_level: 0).where("created_at > ?",  Date.today - 3)
puts "trovati #{spammers.length} spammer"

destroyer = UserDestroyer.new(Discourse.system_user)
spammers.each do |spammer|
  destroyer.destroy(spammer, delete_posts: true)
end

Se viene utilizzato solo per la prevenzione dello spam e non per il monitoraggio del comportamento degli utenti, sarà consentito dal GDPR come “interesse legittimo”.

1 Mi Piace

E come potrebbe qualcuno usarlo senza identificazione?

Non sono sicuro di cosa intendi con ‘identificazione’.

Se sei un utente sul mio forum e ti ho bannato, posso usare il plugin di fingerprinting per vedere che hai creato un nuovo account con un nome diverso, in modo da poter bannare anche quell’account. In tal caso, sto semplicemente usando il fingerprinting per proteggere il mio interesse come proprietario del forum. Non ti sto vendendo nulla e non sto invadendo inutilmente la tua privacy. Funziona allo stesso modo della memorizzazione e del confronto degli indirizzi IP, tranne per il fatto che questi possono essere facilmente modificati utilizzando un proxy o una VPN.

2 Mi Piace

I commenti nell’argomento del plugin di fingerprinting potrebbero non concordare pienamente con te riguardo alla legalità del fingerprinting e all’UE.

Fortunatamente, al momento non ho un sito per il quale il fingerprinting sembrerebbe una misura antispam utile.

1 Mi Piace

Hai preso in considerazione l’attivazione dell’Approvazione Nuovi Utenti? Potresti anche comunicare alla tua community che i nuovi membri richiedono un invito tramite link email.

Se lo youtuber è ancora un problema, segnala il video e presenta un reclamo a Youtube.

1 Mi Piace

Solo per tornare indietro e concludere - questo è stato seguito e risolto tramite PM. :partying_face:

Ma per chiunque si trovi in una posizione simile, è possibile eliminare utenti utilizzando l’API se non si ha accesso alla console di Rails a causa dell’hosting gestito. :+1:

1 Mi Piace