Oh no, we're being spammed!

Premettendo che al fine ultimo di leggere questo articolo è consigliata una buona dose di alcol nelle sue forme più pregiate (l’amico Raele consiglia un Amarone, l’amico Stuart Delta suggerisce un Nobile di Montepulciano DocG, possibilmente del 1997 o 2001, l’amico Jacopo Gonzales propende per un Whisky), è altrettanto auspicabile il parallelo ascolto dei seguenti brani in ordine sparso:

1. Mr Self Destruct dei Nine Inches Nails
2. Catherine di Paolo Benvegnù
3. Stop in the name of love dei Bang Gang
4. La noyee di Yann Tiersen
5. Love in the old country di Preston Reed
6. All the Landslides Birds Have Seen Since the Beginning of the World di Kaki King
7. Avril Lavigne dei Laghetto
8. Lilies dei Cranes
9. Elizabeth on the bathroom floor degli Eels
10. Gabriel delle Electrelane
11. Rivers of sand di Fennesz
12. 21st Century Schizoid Man dei King Crimson
13. Brite tha’ day dei Need New Body
14. A sun that never sets dei Neurosis
15. In fondo in fondo siamo tutti assistenti pedagogici dei RUNI
16. Videoginnastica degli Scisma
17. Karma police dei Radiohead

Premessa numero 2

Con questo post inizierò una serie di articoli che tratteranno argomenti correlati allo spam visti da un ottica Grey Hat SEO.

Per intenderci non vi darò codici per la realizzazione di spam engines, ma userò ciò che ho imparato tramite questi per fornirvi teorie e/o informazioni implementabili sia in siti white hat che in siti black hat.

Sta a voi usare queste conoscenze come meglio credete e sta sempre a voi smentirmi ogni qual volta ne sentiate la necessità .

Basta divagare, cominciamo…

(leggete lentamente che sennò vi tocca imparare le Markov Chains da Wikipedia)

GiorgiotaveAmmettiamo di trovarci in un paese di 100.000 abitanti dove ognuno incontra nella sua vita solo un certo numero di persone del paese e ognuna di queste persone con una frequenza diversa. E ammettiamo che io sia un’abitante di questo strano luogo e che un giorno incontri per caso un mio caro amico che si chiama Giorgio.

Non è una novità , anzi devo precisare che questo mio amico lo incontro molto spesso, per essere esatti quasi una Zio S.E.M.volta al giorno. Ma oggi è successo qualcosa che non capita molto spesso: ci siamo incontrati davanti ad un bar alle 8 del mattino e non c’era nessuno. Così abbiamo deciso di andare da Stefano, un nostro comune amico, che abita poco lontano da questo bar e che io non vedo molto spesso, ma che lui conosce davvero bene, lo frequenta da qualche anno e mi dice che si incontrano almeno cinque volte alla settimana. Ora che ci penso non mi è quasi mai capitato di incontrarmi con Stefano da solo, c’era quasi sempre anche Giorgio le poche volte che l’ho visto.

Comunque sia arriviamo sotto casa sua in un paio di minuti e suoniamo al citofono, Stefano dice di aspettare un attimo Stuart Deltache finisce di prepararsi; ci comunica, inoltre, che dobbiamo andare ad incontrare un certo Stuart Delta, un suo amico che l’ha chiamato pochi minuti prima, dicendogli che sta traslocando e chiedendogli se per caso poteva aiutarlo. Stefano ci saluta dicendoci che arriva subito e io chiedo a Giorgio chi sia questo Stuart. Lui mi risponde che lo conosce da poco ma che è una grande amico di Stefano, tanto che stanno quasi sempre assieme ed escono tutti e tre ogni sabato sera: è la persona che Giorgio frequenta di più quando esce con Stefano.
Ma ecco che arriva Stefano, si scusa per averci impiegato così tanto a prepararsi e ci dice che Stuart abita poco più avanti e che sarebbe gentile da parte nostra aiutarlo a traslocare.

Low LevelArriviamo a casa sua e pochi minuti dopo sale Enrico un grande amico di Stefano e Stuart che è venuto ad aiutare. Con grande sorpresa scopro che si tratta di un mio vecchio amico e gli dico che non mi aspettavo di incontrarlo lì. Lui mi saluta chiededomi come mai mi trovassi a casa di Stuart e poi senza aspettare che io risponda si volta e stringe la mano a Giorgio, presentandosi.

Le Markov chains si basano su uno o più parametri iniziali (io e Giorgio) per ottenere uno più parametri finali in base alla probabilità con cui i parametri iniziali sono legati al parametro finale (Stefano): io conosco poco Stefano, Giorgio lo vede molto spesso, io quasi sempre lo incontro quando c’è anche Giorgio: Io -> Giorgio -> Stefano.

Giorgio conosce poco Stuart, Stefano lo frequenta spesso, è per questo che lui e Giorgio oggi incontrano Stuart, perché come precisato è la pesona che più frequentano quando sono assieme, quindi: Giorgio -> Stefano -> Stuart.

Ed è per questo che oggi ho conosciuto Stuart, perché: Io -> Giorgio -> Stefano -> Stuart.

E per ultimo il fatto che io conosca Enrico non è determinante per il suo arrivo a casa di Stuart e oltretutto non mi ha neppure dato molta importanza. Giorgio comunque non lo conosceva.

Jacopo GonzalesEppure domani potrei incontrarmi con Jacopo: un amico mio, di Giorgio e di Stefano. Magari lo incontriamo proprio perché ci troviamo tutti e tre assieme (io, Giorgio ed Stefano). O magari un giorno decidiamo di vederci con lui solo io e Giorgio. O magari mi vedo da solo con lui.

Non necessario un determinato numero di parametri iniziali per ottenere un parametro finale tramite una Catena di Markov. Però il parametro finale ha una probabilità di essere generato dai parametri iniziali che dipende strettamente da questi ultimi.

Ma non preoccupatevi se non è tutto chiaro, farò altri esempi e man mano che ci addentreremo nell’argomento scoprirete sia perché è interessante per i Black Hat SEO sia per i White.

Grafo Markov ChainsAmmettiamo adesso di avere un insieme di partenza (prima era il paese) in cui è stabilito sia un rapporto ordinato tra i vari elementi (Nel paese erano per esempio: Io e Giorgio; Io e Stefano, Io e Enrico; Io e Stuart; Giorgio e Io; Giorgio e Stefano; Giorgio e Stuart; Giorgio e Enrico; ..), sia un rapporto ordinato tra un sotto insieme ordinato di elementi con un elemento (Nel paese erano per esempio: [Io e Giorgio]->Stefano è diverso da [Giorgio e Io]->Stefano).

Inoltre stabiliamo che ad ogni tipo di rapporto sia abinata una frequenza che va da 0 a 1.

Esempio (dimenticatevi di Me, di Stefano, di Giorgio etc.. adesso usiamo solo lettere e definiamo un nuovo tipo di rapporto):

  1. I -> G = 1/2;
  2. G -> I = 1/3;
  3. I -> S = 1/7;
  4. S -> G = 1/4;
  5. G -> S = 1/6;
  6. [G -> I]->S = 1/20;
  7. [I -> G]->S = 1/10

Come potete vedere adesso a differenza dell’esempio del paese, la frequenza si basa anche sull’ordine degli elementi. Ma non preoccupatevi, facciamo sparire le lettere e passiamo ad un esempio con le parole.

Grafo percentualiAmmettiamo di avere un documento testuale che tratta di cani. Questo documento è il nostro insieme, mentre le parole che lo compongono sono gli elementi.

Ogni parola presente nel documento sarà seguita da un’altra con una certa frequenza (numero di occorrenze della coppia ordinata diviso per il numero delle occorrenze della prima parola), per esempio nel testo la parola il è seguita dalla parola cane con una frequenza di 1/20, perché ci sono 200 occorrenze della parola il e 10 occorrenze della coppia ordinata il cane. Vi faccio capire al volo cosa intendo dire con coppia ordinata per chi ancora non l’ha capito: il cane è una coppia formata da il e da cane, ma è una coppia diversa dalla coppia cane il ed infatti la coppia il cane può avere una frequenza diversa dalla coppia cane il.

Inoltre nel nostro documento ogni coppia ordinata di parole è seguita da un’altra con una certa frequenza, per esempio nel nostro documento solo queste parole seguono la coppia ordinata il cane:

  1. è
  2. bianco
  3. Snoopy

snoopy macchina da scrivere
La parola è segue la coppia il cane con una frequenza di 1/2 e infatti ci sono ben 5 occorrenze della tripla ordinata il cane è nel documento, su un totale di 10 occorrenze della coppia il cane. La parola bianco segue la coppia il cane con una frequenza di 2/5 e la parola Snoopy segue la coppia il cane con una frequenza di 1/10.

Ammettiamo di conoscere qual’è la frequenza che lega ogni coppia del documento ad ogni parola del documento, precisando che si tratta sempre di un legame ordinato. Utilizzeremo queste informazioni in un array e definiremo una coppia iniziale presa a caso tra tutte le coppie.

Se abbiamo a disposizione un array molto grande possiamo ottenere un testo abbastanza lungo e corretto anche se privo di senzo logico per noi umani.

Ammettiamo che la nostra coppia iniziale sia il cane.

La cerchiamo nell’array e scopriamo che può essere seguita da 3 parole (è; bianco; Snoopy), ognuna con una certa frequenza. Viene casualmente scelta una di queste parole (è) e si prosegue.

Black Hat and White HatAdesso abbiamo la coppia cane è, la cerchiamo nell’array e scopriamo che può essere seguita da 2 parole (bianco, nero), viene scelta una delle due a caso in base alla frequenza (viene scelta la parola bianco) e si prosegue cercando nell’array la coppia è bianco

E’ chiaro che il testo prodotto potrà arrivare ad una strada senza uscita solo nei seguenti casi:

  1. cerca nell’array una coppia che non è associata a nessun altra parola (se esiste ce n’è solo una per ogni array)
  2. cerca nell’array una coppia A che è associata ad una sola parola e la seconda parola della coppia forma una coppia che è associata ad una sola parola e così via finché o si arriva ad una coppia che non è associata a nessuna parola o ad una coppia che è presente tra quelle che necessariamente seguono la coppia A. In sostanza in questo secondo caso si crea un loop.

White hatOk.. adesso vi ho spiegato cos’è una markov chain o almeno vi ho spiegato le markov chain nell’ottica della generazione di testi casuali. A questo punto gli spammers possono smettere di leggere. Ecco invece cosa può interessare agli amici White SEO:

La domanda che bisogna porsi è: perché gli spammers usano questi testi? Pigrizia? Voglia di raggiungere subito molti posizionamenti per molte keywords senza dover scrivere i contenuti a mano?
Sicuro! Il 99% lo fa per quei motivi lì, ma il restante 1% si chiede: perché questi testi “piacciono” ai motori di ricerca?

La mia idea è che questi testi se creati correttamente possano interpretare la moda di una serp sia dal punto di vista tematico che da quello linguistico, andando così a scalare la serp stessa, perché ritenuti idonei dai motori di ricerca.

Questo tipo di pagine, dunque, possono essere considerate una buona sonda per comprendere approssimativamente cosa è la moda di una serp e come creare pagine pulite basandosi sui risultati ottenuti dalle pagine markov.

I processi di ranking nei motori di ricerca fanno quasi sicuramente affidamento al concetto matematico/geometrico di similitudine, dunque, è ben vista dal motore una pagina che è simile a tutte le altre pagine che sono state considerate interessanti all’interno di una serp e che allo stesso tempo è diversa da ognuna di queste quanto basta per superare i filtri antiduplicazione.

E’ da qui che si evince che la moda può realmente esistere, quanto meno come modello ideale a cui tende una pagina web e che ne determina il ranking all’interno di una serp.