
Sommario
- Analisi della perdita di posizionamento dovuta a Negative SEO
- Come pulire un Wordpress infetto
- Dopo la pulizia del sito in Wordpress, lato SEO
- Comunicare che gli URL del sito non sono più spam a Google
- Pulire il motore di ricerca dai risultati infetti/spam relativi al nostro dominio
- Perchè non serve pulire i contenuti indicizzati di un sito Bucato
- Analisi del recupero del posizionamento perso
Prima riflessione: chi fa SEO non può stare male.Al volo, tra i fumi della febbre, reputo che il drop sia dovuto al fatto che è da troppo tempo che il sito non viene aggiornato nei contenuti e che non riceve abbastanza link in ingresso. Potrebbe essere, il sito in questione di una associazione di professionisti locali è stabile da mesi per le query relative alla sua attività (in prima pagina), ma purtroppo è uno di quelli dove il consulente SEO (ossia io) non ha completa autonomia nella realizzazione dei contenuti (ovvero a seguito di pianificazione farli poi realizzare da un copy) ma i clienti hanno emesso un dictat del tipo: te ci fornisci piano redazionale e scaletta per ogni articolo e noi scriviamo. Cosa che ad inizio anno preparo per i mesi a venire, ma in questo caso è da parecchio tempo che si è bloccata e da novembre 2017 non mandano più nulla. Per cui di mio posso solo fare attività di fine tuning e monitoraggio passivo dell'andamento. Al cliente però va bene così e quindi di mio non martello (anche perché l'ho già fatto più volte fino a sentirmi dire: "Ok abbiamo capito ma abbiamo altro da fare, siamo consapevoli, il tuo dovere l'hai fatto"). Del resto paga lo stesso e da quel che dice è contento di quello che il sito produce (lead acquisition). A livello di link ho esaurito il budget stanziato per procuramene di nuovi (budget tra l'altro decisamente infimo rispetto al minimo che si dovrebbe fare) e per questo motivo ecco lasciato un ottimo dominio in balia dei venti della SEO, pregando che nessun competitor faccia qualcosa di meglio per scalzarlo dalle posizioni acquisite con il tempo. Ma ritorniamo al problema. Il sito è pesantemente sceso ed io non posso però fare ulteriori analisi, non ne ho le facoltà causa febbre ed allora mi butto a letto tra le braccia di Morfeo, che mi fa passare una calda e umida notte, bagnato di febbricitanti sudori. Negative #SEO: pulire un #wordpress infetto da url spam e recuperare il posizionamento perso Condividi il Tweet Al mattino mi sveglio che sto lievemente meglio, e pur febbricitante provo a ragionare su questo drop.
Analisi della perdita di posizionamento dovuta a Negative SEO
Davanti ad un monitor qualquadra non cosa, il drop di posizionamento è troppo elevato per essere imputabile ad una naturale flessione della SERP per le query posizionate e memore di precedenti esperienze ricerco le cause in uno dei tre ambiti:
- il sito ha dei problemi tecnici
- Google ha lanciato un nuovo algoritmo
- il dominio si è beccato una azione manuale

Seconda riflessione: Ma che davvero il dominio si è preso una botta per scendere in maniera così pesante a causa dello scarso aggiornamento e solo per alcuni URL?Aggiornamenti algoritmici non ve ne sono, Search Console non ha azioni manuali, i contenuti non vengono modificati da tempo (no Panda granulare), non ho acquistato link e non ve ne sono di nuovi in ingresso (no Penguin granulare), quindi vi sono problemi tecnici. Incominciamo a guardare sul sito. Memore del fatto che alcuni siti WP della mia PBN (scherzo non ho PBN, sono il male eh! Non fatelo!) la scorsa settimana sono stati bucati provo al volo un comando site:https//nomedominio.tld

I risultati restituiti per il sito bucato dopo un mese dalla pulizia del Wordpress
- i title/description di alcuni url esistenti sono tutti modificati in giappocinese e con testo spammoso
- google ha indicizzato un macello di risultati spam, con url, title e description giappocinemmosi (giapponesi/cinesi e spammosi)

In evidenza il picco di attività grazie agli url generati dinamicamente
Ma come è stato portato in pratica questo attacco?
Analizzo i file dentro l'host e scopro che l'.htaccess è stato infettato, aggiungendo una regola per far effettuare un redirect alla sitemap spammosa del sito (generate dinamicamente secondo un algoritmo criptato) e in più il file robots.txt è stato modificato ed ora linka la nuova sitemap spam e... Ta da! Anche in questo dominio ci sono due maledette backdoor! Di quelle che possono essere usate come file manager, per cancellare, caricare e modificare permessi sui file, chiaramente a tutto l'host, che se frazionato su più domini li rende tutti vulnerabili a questa tipologia di azione. Si insomma delle webshell in php, ci siamo capiti, quelle che si possono anche realizzare in autonomia utilizzando la funzione exec(). Analizzo quindi i log del webserver, ora che so i nomi dei file .php utilizzati come backdoor, e vado a scoprire che esattamente giovedì 31, nelle prime ore del mattino, qualcuno tramite un proxy cinese ha fatto accesso a quei file e chiaramente avrà caricato questi script. Quindi è necessario pulire il sito e per farlo non scelgo di usare un plugin (perché spesso non riescono a pulire e alcune volte nemmeno a rilevare le falle di sicurezza) ma procedo con un metodo ben più drastico e sicuro.Come pulire un Wordpress infetto
Attenzione, la procedura a seguire è decisamente completa e veloce, ma solo se si sa dove mettere le mani. Chiaramente prevede che abbiate una versione di backup del vostro sito, ma del resto tutti voi l'avete no?- backup del db del sito online che non si sa mai
- backup dei file del sito online che non si sa mai
- analisi della cartella media in cerca di file sospetti e/o caricati nel momento dell'attacco
- cancellare tutto, tranne i media di Wordpress
- modificare i parametri di accesso al db (quelli scritti in wp-config.php giusto per intenderci)
- modificare il file wp-config.php con i nuovi accessi al db
- caricare una versione pulita e aggiornata di wordpress
- caricare il tema aggiornato all'ultima versione (preso da un backup locale del sito)
- caricare nuovamente i plugin
- modificare le password di accesso degli utenti WP
- rigenerare i permalink
- rigenerare la sitemap
- controllare che tutto sia a posto (veloce navigata nel sito e passaggio di Screaming Frog/Visual SEO Studio in cerca di errori)
- controllare che tutti i risultati spam caschino in una corretta pagina 404 (con http status 404). Questo in realtà basta ma se proprio volete fare le cose bene in realtà l'http status code dovrà essere 410 ossia risorsa non più esistente e che NON lo sarà in futuro.
- precaricare i file in una directory temporanea e poi spostare tutto via terminale (comando mv da shell linux)
- cancellare i file da terminale (comando rm)
- mettere una splash screen di lavori in corso
Dopo la pulizia del sito in Wordpress, lato SEO
Dopo aver effettuato la pulizia del Wordpress bisogna effettuare due operazioni:- comunicare a Google che i contenuti del sito sono stati aggiornati
- (in teoria) pulire tutti i risultati spam indicizzati
Comunicare che gli URL del sito non sono più spam a Google
Facilissimo, basta reinviare la sitemap a Search Console, per segnalare al motore di ricerca di effettuare una nuova scansione del dominio (dalla vecchia GSC: selezione della proprietà desiderata > Scansione > Sitemap > Aggiungi/testa sitemap). Poi analizzate i log del server per vedere il passaggio del crawler. Se non ne siete capaci cercate di diventarlo! A parte gli scherzi, sappiate che seolyzer.io aiuta parecchio per incominciare.Pulire il motore di ricerca dai risultati infetti/spam relativi al nostro dominio
In teoria ora è necessario pulire i risultati spam in SERP e a seguire vi spiego alcuni metodi. Attenzione! Dato che sono risultati SPAM, con roba tipo Cialis, Viagra et Louis Vuitton gli URL spam non più esistenti non devono venire rediretti a pagine del sito o alla home, ma alla 404. Vi anticipo subito che però questa azione ad ora è molto meno utile rispetto al passato. Google è diventato decisamente più intelligente. Se siete quindi curiosi di scoprire i miei esperimenti su questo aspetto continuate a leggere, altrimenti saltate pure questo paragrafo e andate a seguire dove vi racconto le mie considerazioni su questo aspetto.Estrarre gli URL da eliminare
Prima di segnalare a Google quali URL eliminare è necessario averne una lista. Per farlo il modo migliore e più veloce è crawlare il sito compromesso, con uno strumento come Screaming Frog/Visual SEO studio, escludendo poi gli URL utili o nel mio caso direttamente la sitemap spam. Purtroppo però di mio, causa annebbiamento da febbre, non ho fatto questa operazione prima di procedere alla pulizia e per questo ho dovuto ricostruire la lista di URL spam mediante scraping della SERP di Google restituita dal comando site. C'è un però: il comando site non restituisce tutti i risultati e nel mio caso di oltre 5000 spamsnippet (perchè ho fermato in tempo l'infezione, in altri casi mi sono trovato con 70000 url spam) me ne tira fuori un massimo di 10 per circa 40 pagine, ovvero 400.Scrapare la SERP di Google per una data query o operatore di ricerca
Questa operazione va chiaramente automatizzata, già solo copiaincollare a manina 400 risultati porta via troppo tempo e se va ripetuta nel tempo... Per procedere i metodi sono differenti e ad esempio si potrebbe:- creare uno script usando ad esempio una funzione tipo Simple HTML DOM Parser
- utilizzare un software di automazione come Autohotkey o Winautomation (su Winzoz)
- usare una estensione per Chrome come Data Miner
- realizzare lo script porta più tempo che usare una estensione per Chrome
- utilizzare un software di automazione, se non si conosce lo strumento, porta via una valanga di tempo per impadronirsi del linguaggio di codice proprietario (ma che è un ottimo investimento per riutilizzarlo per automatizzare funzioni ricursive se si effettuano periodicamente)

Perchè non serve pulire i contenuti indicizzati di un sito Bucato
Google è decisamente diventato più intelligente e un eventuale lavoro di pulizia di risultati Spam può essere evitato! Dico questo perchè:- Il dominio dopo circa 20 giorni ha ripreso le precedenti posizioni perse
- I risultati spam non hanno portato traffico, dato che non si sono posizionati (per gli stessi motivi per cui un contenuto off-topic e in un layout totalmente differente dal resto del sito non si posizionano)
- Google ha comunque tenuto in indice i risultati e li ha riscansionati, capendo (grazie alla risposta 404) che erano contenuto non più esistente e pian piano li ha segnalati su Search Console, dove con due click si possono contrassegnare come corretti
- Tutti i competitor che effettueranno una analisi del dominio si ritroveranno spiazzati
Errore 404 VS 410
L'errore 404 è il più comune e quando viene rilasciato questo status code andiamo a spiegare allo spider o all'utente che PER ORA la risorsa non è disponibile ma che potrebbe esserlo in futuro. In questo caso quindi sarebbe meglio per gli url spam non più esistenti, andare a rilasciare come status di errore il 410 (contenuto non più esistente e che NON lo sarà mai più). Per farlo però avrei dovuto realizzare una regex e intervenire sull'htaccess che in questo caso mi sembrava un deciso spreco di energie non pagate, ma voi ricordatelo per il futuro!Analisi del recupero del posizionamento perso
Dopo aver effettuato la pulizia di Wordpress dai risultati infetti nei giorni a seguire ho monitorato l'andamento del sito grazie a:- SEOZoom: che mi ha segnalato come le posizioni per le query monitorate erano state recuperate (lo strumento permette di comprendere prima di tutti l'andamento del dominio, perché se un risultato è posizionato o meno per una data query porterà più o meno traffico in futuro)
- Google Analytics: che mi ha segnalato un lieve drop (che poteva diventare decisamente più elevato se non risolto il problema per tempo)
- Search Console: che dopo i classici tre giorni di differita mi ha incominciato a mostrare impression sui nuovi url spam
- Search Console: che (sempre dopo i tre giorni) mi ha mostrato un deciso drop di impression/click su uno degli url per cui avevo perso il posizionamento

E qui concludo, chiaramente nei commenti a seguire se avete dubbi, perplessità e curiosità non esitate a chiedere. Di mio il mio consiglio principale per risolvere un problema simile è... di non ammalarvi! Se riguardo indietro i miei passi mi rendo conto di aver fatto mille cappellate in quei giorni di febbre, fra cui tenere traccia delle azioni eseguite a pezzi e non in maniera completa (ecco perchè è un po nebuloso questo articolo, per alcuni aspetti sono andato a memoria sulla base di quanto mi ero segnato mesi fa).
Tag:
Condividi:
pino
Nato con la passione per l'informatica da mamma Access e papà ASP nel 2002 rinnego repentinamente la mia paternità facendomi adottare da papà PHP e mamma SQL.
Allevo HTML e correlati fiori in CSS mentre vedo i frutti del mio orticello SEO crescere grazie alla passione e alla dedizione della coltura biodinamica; perchè il biologico è fin troppo artificiale.
Realizzo siti internet a tempo pieno, nei restanti momenti mi occupo di redigere articoli per questo sito e saltuariamente far esperimento nel mare che è internet.
Lascia un commento
Commenti