Da quando è nato lo spamdexing è nata l’esigenza di trovare tecniche per ingannare i motori di ricerca, mostrando agli utenti un output accattivante, privo di tutti i tags e i testi necessari all’ottimizzazione, mentre ai motori di ricerca viene fornita una pagina idonea ad ottenere un buon ranking.

Nonostante le varie tecniche si scindano ideologicamente in cloaking, redirect e testo nascosto, credo sia più corretto parlare unicamente di testo nascosto in quanto il fine di tutti questi codici è quello di nascondere all’utente qualcosa che viene invece visto dagli spiders.

Partendo dalle tecniche più vecchie e ormai obsolete tenterò di guidarvi verso le ultime novità, proponendovi alcuni sistemi ideati da me, e altri che ho imparato nel corso degli anni.

IL COLORE

Una delle tecniche più vecchie ed ormai obsoleta da parecchio tempo è quella di nascondere del testo semplicemente colorandolo con lo stesso colore dello sfondo. Nonostante questa tecnica sia ormai facilmente riconoscibile come spam da tutti i maggiori motori di ricerca, viene ancora utilizzata da diversi siti web, per lo più amatoriali o di piccole aziende. Ciò che rende molto pericoloso l’utilizzo di questo tipo di spam è sia la semplicità con cui è possibile individuarlo tramite algoritmi, sia l’alta possibilità di venire segnalati da webmaster concorrenti, in quanto è una tecnica facilmente identificabile all’interno di una pagina.

LA POSIZIONE

Un’altra tecnica obsoleta, nonostante sia tuttora molto utilizzata, consiste nel posizionare del testo ad una coordinata non visibile dall’utente. Di solito viene scelta una coordinata negativa molto elevata in modo che sia praticamente impossibile per l’utente alle prime armi di accorgersi di qualcosa. Un esempio di css può essere il seguente:

.nascosto{
position:absolute;
left: -3001px;
top:0px;
}

Nonostante ciò è dal 2003/2004 che google dichiarando guerra allo spamdexing ha rivelato di saper individuare questa tecnica.

DISPLAY:NONE

Altra tecnica ormai obsoleta da anni è il display:none. Un attributo facilmente settabile tramite css che elimina l’output visivo di un oggetto. Un esempio pratico è il seguente:

.nascosto{
display:none;
}

Ciò che per qualche tempo ha reso i siti che usano questa tecnica meno “bannabili” di quelli che usano tecniche meno facili da individuare come il colore o la posizione è il fatto che questo codice è utilizzabile anche per scopi non necessariamente spam, come la creazione di menù a tendina. Questo è, infatti, uno dei dilemmi che ha condotto i motori di ricerca a evitare algoritmi automatici di ban, preferendo la presenza di una parte umana (il Quality Rater) che si occupa di giudicare i siti segnalati prima di eliminarli dal database. Ci sono però molti validi motivi che spiegano la necessità di entrambe le parti (algoritmica e umana). La prima si occupa di filtrare i siti potenzialmente spam, in modo che i quality raters non vengano sommersi da una mole di lavoro troppo elevata. La seconda oltre a giudicare il sito in sè, si occupa indirettamente di giudicare anche la qualità degli algoritmi in modo da renderli sempre più perfetti e sempre più indipendenti dalla parte umana.

IL REDIRECT JAVASCRIPT

Un altro metodo per nascondere testi che ha funzionato fino a pochi anni fa è il redirect javascript. Si potrebbe obiettare che non è un vero metodo per nascondere, ma piuttosto un sistema per creare doorway. Nonostante ciò il fine ultimo è quello di mostrare un contenuto al motore ed un altro all’utente. Un esempio di redirect javascript è il seguente:

<script type=”text/javascript”>

<!- -
function redir() {

location.href = “http://www.miosito.est/”;

}
window.setTimeout(”redir()”, 5000);
//- ->

</script>

Il funzionamento di questo sistema lato SEO è il seguente: mentre lo spider che entra nella pagina si scarica il codice ed esce immediatamente, l’utente dopo qualche secondo viene rediretto verso un’altra pagina.

Questa tecnica però ha il difetto di poter essere facilmente interpretata dagli algoritmi di google e di conseguenza il ban è molto probabile.

CLOAKING (USER AGENT)

Uno dei sistemi più utilizzati per nascondere il testo è il cloaking tramite user agent. Il funzionamento di questa tecnica è il seguente: viene analizzato l’user agent del visitatore e se questo viene riconosciuto come l’user agent di uno spider viene mostrato un determinato codice, altrimenti ne viene mostrato un altro. Nel seguente esempio se l’user agent dello spider è diverso da quello di google viene eseguito un redirect, altrimenti viene normalmente eseguito tutto il rimanente codice:

if (!strpos(strtolower($_SERVER[’HTTP_USER_AGENT’]), “googlebot”)) {

header(”Location: http://www.kerouac3001.com/”);
exit;

}

I vantaggi di questa tecnica sono enormi:

  1. E’ possibile creare sistemi avanzati di redirect basandosi sui dati dell’utente, come query di provenienza ed altro.
  2. E’ facile da personalizzare e difficile da individuare sia per gli spider che per gli utenti non esperti.
  3. Permette la totale separazione tra codice SEO oriented e pagina SEM oriented.

Gli svantaggi sono i soliti:

  1. E’ possibile per un motore di ricerca individuare questo tipo di cloaking, semplicemente utilizzando user agents da utente.
  2. E’ possibile per un utente avanzato individuare questo tipo di spam semplicemente guardando se è presente un redirect o se la cache della pagina è diversa dal suo reale contenuto.

Questi due svantaggi per anni non hanno causato grandi problemi, ma con l’intensificarsi dei controlli antispam, questa tecnica sta cominciando a dimostrarsi obsoleta, ed è per questo che gli spammers studiano metodi per perfezionarla, qui di seguito vi fornisco alcuni miei sistemi e tecniche che ho imparato da altri.

REFERER-BASED CLOAKING

Il referer-based cloaking è un sistema di cloak che non si basa sull’user agent, ma sul referer. Cioè mostra un determinato contenuto se il referer è vuoto, un altro se invece non lo è. Il referer è vuoto solo nel caso di visitatori diretti, cioè dell’insieme di visitatori di cui fa parte anche lo spider. Un esempio pratico in php del sistema appena descritto è il seguente:

if ($_SERVER[’HTTP_REFERER’]!=”") {

header(”Location: http://www.kerouac3001.com/”);
exit;

}

Ovviamente si tratta solo di un esempio che è possibile adattare alle proprie esigenze. E’ possibile fare redirect a seconda di un determinato referer o (usando la mia tecnica preferita) a seconda di una query, utilizzando un sistema che possiamo chiamare query-based cloaking.

Il query-based cloaking permette di mostrare ad un utente un sito attinente a ciò che stava cercando e dunque è una tecnica grey hat più che black hat, in quanto porta svantaggi solo ai concorrenti e al motore di ricerca, mentre è innocua o addirittura utile per l’utente.

I vantaggi di questa tecnica sono maggiori se abinati non ad un cambiamento dei contenuti interni, ma ad un sistema di redirect, in modo che l’utente medio non diventi per nessuna ragione un visitatore diretto. Questo però si trasforma in uno svantaggio in quanto è facilmente individuabile dai Quality Raters e da qualunque webmaster.

LANGUAGE-BASED CLOAKING

Un altra tecnica di cui fornisco solo la descrizione è il cloaking basato sulla lingua che però ha come unico scopo quello di fornire pagine nella lingua più idonea alle esigenze dell’utente e che quindi non è strettamente legato al nostro studio sul testo nascosto.

IP-BASED CLOAKING

Simile all’user-agent cloaking, l’ip-based cloaking si basa appunto sull’ip dell’utente per determinare se è uno spider o no. Un esempio pratico può essere il seguente:

if (!strpos(strtolower($_SERVER[’REMOTE_ADDR’]), “66.155.23.”)) {

header(”Location: http://www.kerouac3001.com/”);
exit;

}

Questa tecnica però ha gli stessi svantaggi di quella basata sull’user agent e può essere dunque facilmente individuata e pesantemente penalizzata.

DOM CLOAKING

Una delle ultime tecniche che ho ideato è il dom cloaking, ovvero un tipo di cloak basato su codice javascript. Il funzionamento è il seguente: quando il javascript viene attivato (tramite l’evento onload) il codice html presente all’interno di un determinato tag viene svuotato e sostituito con un altro codice html. Ciò che accade è che l’utente vedrà l’output fornito tramite javascript mentre il motore di ricerca darà peso al codice sorgente. Un esempio di come utilizzare questa tecnica è il seguente:

function googleisaspammer(){

var shtml = “CODICE HTML”;
var md = document;
var d = md.getElementById(”cloack”);
d.innerHTML = shtml;

}

window.onload = googleisaspammer;

Nell’esempio il codice javascript, quando viene azionato, eliminerà il contenuto interno all’elemento html con id=”cloack” e lo sostituirà con CODICE HTML. Il vantaggio di questo sistema è nell’enorme difficoltà che avrà il motore di ricerca ad individuarlo tramite algoritmo, in quanto è difficile interpretare il funzionamento di un javascript e soprattutto capire se sta effettuando operazioni spam o no.

Infatti ciò che reputo interessante in questa tecnica è il fatto che non viene mostrato un codice al motore ed uno all’utente, ma entrambi vedono lo stesso codice, ma il motore da peso a ciò che l’utente non vede, mentre l’utente da peso a ciò che il motore non giudica.

Lo svantaggio maggiore è invece nella lentezza con cui viene effettuata la sostituzione del codice che potrebbe lasciar intravedere all’utente il codice reale per qualche secondo.

Ovviamente un Quality Rater particolarmente intelligente (o con una connessione molto lenta) potrebbe capire che c’è quacosa che non va.

CSS CLOAKING

Interessante anche un’altra tecnica che consiste nel mettere il cloaking non nella pagina, ma nel css, in modo da poter usare il display:none (o altro) senza che lo spider lo sappia. Il funzionamento è il seguente:

  1. si crea un file php (che chiameremo style.php) e si fa in modo che se l’utente è uno spider mostri un determinato codice css, altrimenti ne mostra un altro.
  2. si crea una regola nell’ htaccess in modo da riscrivere l’url che richiama style.php in style.css
  3. si richiama style.css nella nostra pagina web

Un esempio di codice da inserire in style.php può essere il seguente:

if (!strpos(strtolower($_SERVER[’HTTP_USER_AGENT’]), “googlebot”)) {

echo “.nascosto{ \n display:none; \n}”;

}

Lo svantaggio di questa tecnica è come al solito lo stesso: qualunque motore di ricerca volendo potrebbe capire il trucco tramite un algoritmo. Ovviamente se ben fatto, questo sistema ha il vantaggio di essere più difficile da individuare rispetto agli altri sistemi di cloaking onPage, sia tramite algoritmo che tramite intervento umano.

CLIP

Altra tecnica particolare è il clip, che nonostante abbia un effetto simile al display:none, è un pò meno individuabile, soprattutto perché è poco conosciuta.

CLIP è un’istruzione di CSS che assegna ad un elemento una dimensione precisa, tramite: x, y, width e height. Con CLIP è possibile quindi assegnare ad un elemento una dimensione nulla e dunque renderlo invisibile. E’ però obbligatorio inserire anche un position:absolute per far funzionare il sistema. Un esempio di CSS può essere il seguente:

.nascosto {
CLIP: rect(0px 0px 0px 0px);
POSITION: absolute;
}

Ovviamente per qualsiasi motore di ricerca può essere facile individuare questa tecnica e penalizzarla, anche se dubito che venga attualmente considerata come spam.

LETTER-SPACING

Una delle ultime tecniche che ho ideato fa uso dell’attributo letter-spacing per “nascondere” il testo. In realtà non si tratta di un metodo normale e non è nemmeno perfettamente funzionante, ma è così insolito che potrebbe non essere stato ancora individuato come spam dagli spider. La tecnica consiste nel creare una classe e settare al suo interno l’attributo letter-spacing ad un numero elevato e negativo, per esempio:

.nascosto {
letter-spacing: -999999999999em;
}

L’effetto è quello di inserire tra le lettere di un testo uno spazio di -999999999999em che farà in modo che non venga mostrato nulla tranne la prima lettera del testo inserito. Il funzionamento di questa tecnica non è però garantito e presenta ancora alcuni problemi.

WORD-SPACING

Simile alla tecnica precedentemente descritta tramite word-spacing si può settare uno spazio tra le parole. Ecco un esempio che sfrutta questa tecnica per nascondere un testo:

.nascosto {
word-spacing: -30013001px;
line-height: 0pt;
}

Line-height se settato a 0pt fa in modo che non ci sia spazio tra una riga e la successiva, così viene tutto scritto su una sola riga (sovrascrivendo il testo precedente). Questo comando usato in combinazione con word-spacing, fa in modo che il testo sia scritto su una sola riga e che tutte le parole abbiano tra di loro un elevato spazio negativo. Così il testo scompare.

Questa tecnica come la precedente presenta diverse problematiche.