Rimuovere lo spam da YOURLS con poche righe di JavaScript

YOURLS, che sta per Your Own URL Shortener, è un’ottima piattaforma open source per creare un abbreviatore di URL privato (a la bitly), consente di avere un totale controllo sulla struttura delle URL e sul monitoraggio del traffico per ciascun link creato, inoltre potendo essere installato su un proprio dominio da una sensazione di “branding” ai link condivisi.

minimalista & semplice, https://sresc.io

Mi piacciono le cose che funzionano in maniera semplice e veloce, motivo per cui ho abilitato il front end pubblico, cosi da poter digitare il mio dominio ed ottenere il link abbreviato in pochi click, senza dovermi loggare nel pannello di amministrazione ogni volta che voglio usarlo. La mia copia di YOURLS si trova al link https://sresc.io, che corrisponde alla iniziale del mio nome seguita dal cognome, destino ha voluto che termini con le vocali “io“, che attualmente è anche un TLD di moda, che fortuna!

Ma come annotato nel template predefinito di front end, una interfaccia pubblica attrae gli spammer, tuttavia l’attuale implementazione del plugin antispam predefinito non permette di aggiungere delle eccezzioni per dominio od IP il che significa che i plugins WordPress che utilizzano le api di YOURLS per ottenere un link breve personalizzato possono essere bloccati se l’IP del server di hosting  è presente in una di quelle liste per qualunque motivo, questo può succedere con gli shared-hosting se uno dei vicini si è comportato poco bene.

Nota bene che disattivare temporaneamente il plugin antispam in YOURLS prima di pubblicare per consentire a WordPress di ottenere la short url e poi riattivarlo non funzionerà perché non appena il plugin viene attivato controlla tutte le URL memorizzate e cancella quelle la cui sorgente è presente in blacklist, ho aperto un bug report su GitHub per questo problema, ma sembra sia una feature (?).

Uno dei motivi principali per cui ho voluto mettere in piedi un mio servizio di URL shortener era per permettere al mio blog WordPress di ottenere automaticamente una url personalizzata senza troppi problemi, ma questa “feature” rende impossibile l’operazione, motivo per il quale ho disattivato il plugin.

Dopo aver tenuto il sito senza filtro per lo spam per alcuni mesi ho notato un deciso incremento di link spazzatura dentro il db, così ho pensato di usare una alternativa, YourlsBlacklistIPs che permette di definire una lista manuale di IP da bloccare tramite una  textarea.

Quindi adesso abbiamo uno strumento per schedare i guasta feste che hanno infestato il nostro URL shortener … ma come procedere? Effettuando una ricerca nel pannello di amministrazione usando tipiche parole spam si possono ottenere potenzialmente centinaia di pagine senza però alcuna opzione per effettuare operazioni di gruppo. Tuttavia se hai avuto la tenacia di mettere in piedi un tuo servizio personale le probabilità che tu sia un programmatore o un geek che sa come usare una console sono alte, in tal caso possiamo risolvere il problema con poche righe di JavaScript.

Cercare parole spam con un alto numero di righe-per-pagina

La prima cosa da fare è assicurarsi che ci sia un numero molto grande nel campo di input delle righe, così che tutti i link maligni vengano presentati sulla stessa pagina in una volta sola. Un altro filtro che si può applicare è la ricerca dei link con un numero di click minore di 1, ovvero tutta spazzatura che è stata inserita nel DB tanto per, bisogna però fare attenzione a questo approccio! Io controllo sempre almeno una volta che i link che creo siano effettivamente funzionanti provandoli nel browser, in questo modo tutti i link che creo hanno almeno 1 hit e non saranno trovati con questo tipo di ricerca.

Ottenere tutti gli IP fonte di spam da incollare in YourlsBlacklistIPs

Ora che abbiamo raggruppato la spazzatura sulla porta possiamo occuparci dei malintenzionati recuperando i loro IP con il seguente codice :

Verranno indicizzati tutti gli IP visualizzati nella terza colonna e salvati in un array, quindi la console ce li restituirà come lista ognuno su una singola riga, ovvero nel formato accettato dal plugin, ora è possibile selezionare&copiare tutti gli IP ed incollarli nella  textarea del plugin.

Clicca salva e rallegrati, non ti disturberanno mai più.

Eliminare tutti i links

Ora che ci siamo occupati delle personacce che infestavano la nostra piattaforma possiamo occuparci della spazzatura, cliccare manualmente il tasto delete per centinaia se non migliaia di righe non è molto invitante, lasciamo allora che sia jQuery ad occuparsi di cliccare tutti i tasti :

Appena premerai il tasto invio per eseguire il codice, apparirà un alert per chiedere conferma della cancellazione del link, premi di nuovo e ne apparirà un altro, e ancora, e ancora … premi e tieni premuto invio e lascia che banchetti di tutti gli alert per spazzare via tutti i link nel giro di pochi secondi.

Liberatorio, vero? 😀

Gist completo

Ed ecco il gist completo per compiere l’operazione descritta.

https://sresc.io/1HS

Lascia un commento

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.