AVVISO IMPORTANTE: Dato l'elevato numero di richieste, Eternal Curiosity non può accettare nuovi clienti, sia che si tratti di consulenze scritte che di ottimizzazione SEO diretta. Valutiamo solo casi eccezionali e ad alto budget. Per informazioni, vi invitiamo a scriverci a info@eternalcuriosity.it

Questo articolo apparteneva al vecchio blog (blog.danilopetrozzi.it), per cui le informazioni potrebbero non essere più aggiornate ed attendibili.

Source obfuscation: tecnica SEO black hat per nascondere l’HTML

La prima cosa in assoluto che voglio dire è che la tecnica che sto per spiegarti potrebbe danneggiare in modo permanente i posizionamenti che hai raggiunto con il tuo sito. Se non sei sufficientemente pratico, evita queste cose come la peste. L’offuscamento del sorgente è considerato alla pari del cloaking, se non addirittura peggio dato che è un tentativo di frodare il motore, invece che un semplice occultamento basato sull’IP/user-agent. Personalmente, non adopero mai tecniche black hat, anche perché avendo a che fare con clienti che puntano ai risultati costanti sopratutto nel medio-lungo periodo, sarebbe da idioti rovinare le attività SEO protratte per 6 mesi / 1 anno per colpa di una stupidaggine. Se vuoi tentare la fortuna con queste teniche, fallo solo e unicamente su tuoi siti personali (che puoi permetterti di “distruggere”).

Dopo aver letto questo disclaimer ancora non sei fuggito? Bene, allora vuoi veramente scoprire il lato oscuro 😀

Cos’è il cloaking

Prima di spiegarti l’HTML obfuscation, dobbiamo capire cos’è il cloaking. Come forse già saprai, il cloaking è una tecnica (black hat) SEO che prevede la somministrazione di contenuti differenti al crawler rispetto agli utenti. Tramite il filtraggio degli indirizzi IP o dell’user-agent, viene mostrato un codice sorgente completamente differente ai bot (come googlebot), al fine di ottenere dei vantaggi lato SEO. (il controllo sull’user-agent ti sembra familiare? ne ho parlato sul post dedicato al parasite hosting, un’altra piaga della SEO).

Attraverso il cloaking è possibile mascherare testo nascosto, link nascosto (ma anche contenuti pornografici su siti che il search engine reputa non pornografici) e così via.

Il cloaking è una delle attività SEO più rischiose e potenzialmente penalizzanti che ci siano. Nelle pagine per webmaster, nel forum Google e in numerosi video di Matt Cutts viene ripetuto sempre il solito mantra: bisogna assolutamente fornire lo stesso codice ai bot e agli utenti

Quindi, riassumento: il cloaking prevede di fornire al bot e all’utente due codici sorgenti differenti, che hanno evidentemente due scopi diversi.

Cos’è il source obfuscation

Il cloaking mostra due, o più, sorgenti differenti, mentre il source obfuscation prevede l’utilizzo di un solo codice sorgente.

Lo scopo di offuscare invece di nascondere è proprio quello di far credere al bot che non ci sia alcun cloaking in atto

Da un punto di vista tecnico, infatti, attraverso l’offuscamento, noi forniamo agli utenti e ai bot lo stesso identico sorgente.

Vi starete chiedendo, qual’è il vantaggio di questa tecnica? Beh è semplice:

1) Dato che non stiamo “cloakando” nulla, forniamo agli utenti e ai bot lo stesso codice, per cui “appariamo” puliti e onesti

2) Dato che “offuschiamo” alcune parti di codice, l’utente può “vederne” il risultato, ma il bot non riesce a interpretarne il risultato 

Perché si usa

Attraverso l’offuscamento, come ti ho detto, è possibile nascondere qualsiasi cosa agli occhi del motore di ricerca, senza dover alterare il sorgente, quindi senza cloaking. 

Che cosa puoi nascondere agli occhi di googlebot? Beh, quello che vuoi! Questa tecnica si può usare per esempio:

  • Per nascondere i link reciproci richiesti da alcuni siti (il webmaster “controllore” li vede, ma non il bot, e quindi non interpreta alcun link in uscita)
  • Per nascondere la tua email, il telefono o altri dati sensibili (l’utente può leggere l’indirizzo email o il numero per intero, ma i bot di qualsiasi tipo non saranno in grado di decifrarli)
  • Per inserire dei link a sottopagine o pagine esterne senza che il Pagerank in uscita si diluisca troppo (esempio: in una determinata pagina potresti volere un solo link in uscita visto dai bot per massimizzarne la “forza”, ma al tempo stesso vorresti far vedere agli utenti un normalissimo menu composto da 100 link che sia navigabile)
  • Per nascondere delle immagini che vuoi mostrare agli utenti ma che non vuoi siano scansionate dai motori (esempio: vuoi pubblicare immagini pornografiche senza che il bot capisca il contenuto)
  • e così via

Come si fa

Come è mio solito, partiamo con un esempio. Ipotizziamo che io voglia comunicarti “segretamente” il numero “100” senza che un osservatore “distratto” riesca a decifrare il messaggio.

Ipotizziamo che io abbia a disposizione solo dei fogli di carta e una penna e che tra me e te ci sia un “guardone” che sbircia il contenuto del foglietto.

Ovviamente potrei scrivere il numero 100 per intero, ma non otterrei la segretezza di cui ho bisogno: il guardone vedrebbe il numero senza problemi.

Che cosa potrei inventarmi? Potrei, per esempio, scrivere il numero 100 in un’altra forma che possa comunque ricondurre al numero. Ad esempio:

Entrambi questi esempi restituiscono 100 come risultato, ma il guardone riuscirebbe comunque a calcolarli a mente, no? Dobbiamo rendere l’operazione un pò più complessa:

Queste operazioni restituiscono sempre 100, ma sono più difficili da eseguire. Se il guardone avesse un pò di pazienza, comunque, riuscirebbe a risolverle.

Se io invece inviassi una cosa del genere?

Anche questo codice restituisce 100!

E’ una intelligente funzione in Javascript che, una volta svolta, vi garantisco che restituisce 100 (i più temerari possono copiare e incollare il codice dove vogliono ;D)

Ovviamente è impossibile che un guardone riesca a decifrare questo messaggio. Abbiamo, di fatto, offuscato il numero 100 in modo che sia apparentemente incomprensibile. Solo un browser riuscirebbe a interpretare il codice, svilupparne tutte le parti e restituire il risultato voluto. Nessuno, a parte un browser dotato di Javascript, potrebbe decifrare il messaggio. All’esterno risulterebbe solo come un insieme di funzioni, variabili e così via.

Un esempio concreto

L’esempio è questo:

Umh, cosa? Avete letto cosa c’è scritto qui in alto? Ma l’ho detto? Non l’ho detto? Siete sicuri che io abbia effettivamente scritto la frase qui sopra?

Beh, se provate a selezionarla con il mouse, si seleziona quindi è sicuramente un testo.

Se usate Firebug o gli analizzatori built-in di Firefox/Chrome, e passate sopra la scritta, vedete che è un normale paragrafo con uno style e del testo all’interno… No?

Adesso provate a aprire il codice sorgente di questo articolo e provate a cercare quella frase. Esatto: NON C’E’!

Osservando il codice sorgente, come farebbe un crawler qualsiasi, è impossibile trovare la frase in grassetto di sopra!

Attenzione: per motivi di sicurezza sono stato costretto a rimuovere l’esempio originale. Sorry 🙂
Ringrazio FlavioWeb per la preziosa segnalazione!

Tool online per l’offuscamento

Ora che hai capito il metodo, posso linkarti qualche risorsa utile 🙂

Gli esempi precedenti sono stati ottenuti con questo strumento online. Questo è uno dei tanti risultati che compaiono cercando “html obfuscator” o “source obfuscator” all’intero di Google.

Ci sono decine e decine di offuscatori online, ognuno con un suo particolare algoritmo. Questi strumenti non fanno altro che prendere il tuo input, renderlo estremamente complesso e restituirtelo. Nella maggiorparte dei casi, l’output è fornito in Javascript, così che possa essere eseguito solo da un browser.

Per maggiore complessità, è possibile prendere offuscare più volte lo stesso testo (dopo aver offuscato il testo X, ri-offusco l’output che ho ottenuto, ri-offusco di nuovo, e così via). Si potrebbe andare avanti all’infinito aggiungendo “strati” di complessità che rendono ancora più efficace l’offuscamento.

Note finali

Per ragioni anche “etiche”, finora ho parlato solo dell’offuscamento fatto con Javascript che è facile e intuitivo. Il problema di questo tipo di offuscamento è che non è inattaccabile da motori di ricerca come Google.

Lo stesso Google, infatti, ha più volte annunciato che è in grado di interpretare Javascript anche di notevole complessità, per cui potrebbe essere in grado di leggere il JS offuscato senza troppi problemi. ( e quindi l’offuscamento di fatto non ci sarebbe )

Leggendo questo post ufficiale di Google, datato 23 maggio 2014, però, leggiamo che “Sometimes the JavaScript may be too complex or arcane for us to execute” ossia: a volte il Javascript potrebbe essere troppo complesso o arcano per essere eseguito da noi. (e quindi l’offuscamento via Javascript è di fatto ancora possibile)

Ci sono numerose tecniche di source obfuscation che attualmente non possono essere fronteggiate dai motori di ricerca e che non coinvolgono JS, ma per questo genere di black hat “cattivo” vi lascio alla vostra immaginazione e a ulteriori approfondimenti su Google.

Danilo petrozzi

Ciao! Io sono Danilo Petrozzi, il fondatore di Eternal Curiosity. Oltre a essere un senior SEO Specialist e un Web Developer, è dall'età di 9 anni che mi appassiono a qualsiasi cosa ruoti intorno al web e all'informatica in generale.

Lascia un commento