Nicola Greco

Hello, I'm Nicola Greco,
I develop social networks,
and tools to analyze them.
Iscriviti ai feed di Nicola Greco

Come ti vinco TRL (con spiegazione e sorgente)

March 13th, 2010 · 19 Comments · Life, Riflessioni

Premetto che non sono solito fare cose di questo genere. Ma tanta era la curiosità che non sono riuscito a trattenermi.

Diciamo che se fossi stato un cantante piuttosto famoso e se fossi stato tra i 40 video scelti per TRL, il tempo rubato al progetto che sto seguendo (un po’ di svago ci vuole ogni tanto) per questa curiosità, non sarebbe andato perso.

Seguo molto la musica italiana e estera, sempre se la si può considerare tutta musica. Ultimamente seguo in maniera molto più ravvicinata alcune nicchie/correnti musicali, ma questa è un’altra storia.

TRL, chi è ggiovane già dovrebbe conoscerlo, è il programma di MTV dove vengono trasmesse, in diretta da un palco che gira per l’Italia le esibizioni degli artisti più votati dai ragazzi, tramite internet.

Posso anche fermarmi qui. “Degli artisti più votati dai ragazzi, tramite internet“. La scintilla si è subito accesa ed è sorta la curiosità di capire come i video musicali degli artisti vengono votati e come si fa a dare un voto.

TRL seems easy

Vado sul sito.
Niente
registrazione, niente captcha, niente indovinelli e nessun operazione matematica da fare.

Grazie per aver votato, il tuo voto è stato registrato!“, la prima volta che voti.
Un altro ringraziamento la seconda volta, un terzo ringraziamento la terza volta.

Poi ALT.

Hai raggiunto il numero massimo dei voti, torna domani!“, che per me tradotto vuol dire 3 richieste POST più l’IP tracciato, per non farti votare più di tre volte. E tra l’altro il form per votare non ha campi nascosti.

Dato che ormai da un po’, dalle ore 9 alle ore 11, penso e scrivo in PHP, mi son detto: il form è una richiesta cURL, per l’IP ci sono le proxies e ho vinto TRL, peccato che poi mi sono ricordato di non essere ne un cantante, ne tanto meno nella top dei quaranta video.

A questo punto, mi sembra un po’ troppo semplice il sistema di voti di TRL.

Traducendo in linguaggio più tecnico

Per spiegarla in breve a livello di codice, funziona così: (Nota bene: se non sei uno sviluppatore questo pezzo puoi anche saltarlo!)

Se si pensasse di tradurre in codice le azioni che facciamo votando, arriveremo a questa conclusione: inviamo una richiesta POST all’indirizzo: http://extra.mtv.it/trl/inserisci_vota.asp con il parametro id_clip=ID_DELLA_CLIP, per fare un esempio a caso, il video La Fine di Nesli è 25450, quindi id_clip=25450.
La richiesta arriva al server e viene elaborata. La richiesta scritta in codice equivale a una decina di righe:


$action = curl_init();
curl_setopt($action, CURLOPT_URL, 'http://extra.mtv.it/trl/inserisci_vota.asp');
curl_setopt($action, CURLOPT_HEADER, 1);
curl_setopt($action, CURLOPT_RETURNTRANSFER, true);
curl_setopt($action, CURLOPT_POST,1);
curl_setopt($action, CURLOPT_POSTFIELDS,'id_clip=25450');
curl_setopt($action, CURLOPT_MAXREDIRS, 1);
curl_setopt($action, CURLOPT_FOLLOWLOCATION, true);
$return = curl_exec($action);
curl_close($action);

Con questo, però, possiamo votare solo tre volte. Ma se si utilizzasse TOR, questo limite viene superato.


curl_setopt($action, CURLOPT_PROXY, '127.0.0.1:8118'); //sul mac la porta è 8118
curl_setopt($action, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($action, CURLOPT_SSL_VERIFYHOST, false);

E il gioco è fatto.

Questo è il funzionamento di TRL, non critico le loro scelte, ma lo trovo piuttosto semplice e poco credibile. Dato che chiunque può inviare richieste POST e chiunque può navigare con TOR come chiunque può scrivere poche righe di codice per rendere il voto automatico.
Nonostante io abbia delle preferenze per alcuni cantanti, sono contro questi tipi di sistema di votazione soprattutto quando si parla di realtà di questo genere. Non ho intenzioni di votare nessun cantante in questo modo, perchè credo sia decisamente sleale.

Se la mettiamo così, vincere è davvero facile, basta eseguire un po’ di volte uno script o votare utilizzando TOR.
Ci sono riuscito, io, come ci poteva riuscire chiunque e un meccanismo di queste dimensioni non dovrebbe essere fatto in modo così semplice. Spero non ci siano mai le elezioni su internet.

Arrivando alla soluzione

E per concludere la soluzione a problemi di questo genere, per chi sta scrivendo o ha scritto applicazioni o sistemi di votazione. Ce ne sono diverse, ma se siete sviluppatore, sicuro non avete bisogno di questa superficiale nota finale.

Credo la cosa più semplice, a livello tecnico sia quella di inserire un Captcha così che nessuna macchina possa fare delle operazioni che, almeno per ora, solo l’uomo è in grado di fare, o come dice il buon caro Paolo (al quale non piacciono i captcha) di inserire domande testuali, del tipo “Fai 3+3″.

Soluzioni a livello tecnico ce ne sono anche altre e anche molto più semplici. Un saluto e votate in modo umano e non meccanico, mi raccomando!

Il codice sorgente è qui non è più disponibile online. Credo sia una cosa piuttosto semplice e che non sono il primo ad esserci arrivato, come non sono il primo e l’unico a capire che una richiesta post invia dei dati e TOR cambia l’IP. Se davvero vuoi il codice a livello ludico, mi trovi per email o nei vari social network.

Nessun articolo collegato.

Tags: ··

19 responses so far ↓

  • 1 Bl@ster // Mar 13, 2010 at 4:39 pm

    Non seguo questo genere di trasmissioni, mi stupisco perchè credevo che i webmaster di TRL fossero più svegli (o meno svegli forse? Pensaci.).

  • 2 iKoala » Blog Archive » Come ti vinco TRL (versione pythoniana) // Mar 13, 2010 at 7:30 pm

    [...] poco da dire, rispondo al mio amico Nicola Greco che ha realizzato un comodo script PHP. Tramite la sua creazione e l’infallibile TOR, si può [...]

  • 3 Davide Salerno // Mar 13, 2010 at 9:44 pm

    Applausi.

    Dai su Nicola non ti mettere a fare script kidding…

  • 4 Nicola Greco // Mar 14, 2010 at 2:00 am

    Ma quale script kidding.
    Non sono solito fare queste cose comunque :)

  • 5 Davide Salerno // Mar 14, 2010 at 12:18 pm

    Lo script kidding in gergo è quell’attività di “cazzeggio” che solitamente produce piccoli script che mettono in evidenza piccoli difetti che sono facilmente arginabili con barriere di poco conto.

    Bastava una registrazione con captcha (o anche una semplice votazione con captcha) e si sarebbero messi al “riparo” da tutti i possibili “kid” in giro che avendo poco da fare si divertono con questi piccoli script a giocare… molto probabilmente non l’hanno fatto o per questioni di time-to-market (magari è “in lavorazione” ma per lanciare il sondaggio subito non sono riusciti a inserire il blocco prima) o non hanno molto interesse a bloccare voti non autorizzati in quanto il gioco non vale la candela…

  • 6 Nicola Greco // Mar 14, 2010 at 1:14 pm

    Ora che c’è il problema, speriamo mettano a posto. Io seguo TRL e sicuramente qualcuno prima di me avrà scoperto la cosa prima e ci giocava da tempo..

    Speriamo bene.

  • 7 koalalorenzo // Mar 14, 2010 at 1:31 pm

    Dubito che qualche altra persona abbia scoperto questo microscopico problema… :\

    Ma non hanno ancora fatto nulla?

  • 8 Luca // Mar 15, 2010 at 1:42 am

    Mmm, il pool di nodi di uscita di TOR non è esattamente sconfinato, ci sono ottime probabilità che dopo qualche richiesta cominci a capitare sugli stessi IP e non possa più votare. In più i nodi di uscita sono usati da una quantità incredibile di persone, il che li porta a non essere utilizzabili su siti che limitano gli accessi dallo stesso IP (hai mai provato a scaricare da rapidshare dimenticandoti che stai usando tor? Ti dice regolarmente che hai superato il limite consentito). Non ho idea di quante persone votino sul sito di MTV, ma se non sono proprio quattro gatti con il tuo script non facciamo vincere nessuno =)
    Molto più facile, se si ha un IP dinamico, aggiungere una parte che disconnetta e riconnetta la linea. Fra il tempo per la riconnessione (arrivo a 7s usando direttamente uno script sul mio router) e il voto però, dubito che si possano superare i 6-700 voti l’ora.
    Basteranno? Difficile a dirsi dato che non mi sembra che sul sito di MTV ci sia scritto il numero di voti.
    Sicuramente bastano per vincere un qualsiasi sondaggio sul sito de la Repubblica o del Corriere.

  • 9 ciro // Mar 15, 2010 at 2:16 am

    Capisco la tua foga nel voler pubblicare la cosa (e giocare un po’ al ragazzo prodigio che piace tanto ai “ggrandi che il calcolatore elettronico e’ oggetto misterioso”) ma non e’ che se MTV non mette su un sistema di tutela decente ti autorizzi a fare qualsiasi cosa: un po’ come se un ladro entrasse in casa tua per dimostrare che non dovresti lasciare la porta aperta…). MTV come ovvio specifica nelle note legali che : “2. non utilizzare il Sito in modo da interrompere, danneggiare o rendere meno efficiente una parte o la totalità del Sito o in modo da danneggiare in qualche modo l’efficacia o la funzionalità del Sito;”. Ora: siamo in Italia e MTV (spero) non denuncera’ e (mi auguro) non licenziara’ nessuno che ha lavorato al sito (anzi se fosse scaltra ti offrirebbe un lavoro giusto per stunt pubblicitario) ma un Luca(irresponsabile?)Sofri che riprende e rilancia la cosa rischia di ingigantire robe di questo genere. Supponi che un altro cantante lamenti perdite per millamillioni di euro per la classifica alterata: su chi pensi si dovrebbe rivalere MTV? (Che non solo hai spiegato la procedura, e fino qui discutibile ma difficilmente passibile di denuncia, ma hai anche ammesso che l’hai effettivamente usato (facepalm)).

  • 10 Nicola Greco // Mar 15, 2010 at 2:17 am

    @Luca, con ogni IP fai 3 voti, quindi moltiplica tutto per 3, e ogni giorno puoi ri-votare.
    Lo script comunque ti riporta anche quando i voti vanno persi.

    Grazie per la tua riflessione.
    N.

  • 11 Luca // Mar 15, 2010 at 2:24 am

    Come al solito mi dimentico i cookie disattivati e non so se il mio commento è arrivato o no.
    Comunque il succo era che il tuo metodo non funziona, con TOR tendi a capitare sempre sugli stessi nodi di uscita.
    prova
    for (( i=1;i!=100;i++ )); do curl -s -w \\n -x localhost:8118 http://www.whatismyip.com/automation/n09230945.asp >>/tmp/TorIp
    (o equivalente).
    A parte che con la prontezza di riflessi di tor anche solo fare la richiesta HTTP prende 10 secondi, vedrai che in 10 minuti avrai avuto si e no 5 indirizzi IP diversi.
    Potrebbe avere miglior successo uno script che fa disconnettere e riconnettere il modem; sulla mia linea ADSL ci metto circa 7 secondi fra disconessione e riconnessione, ammettendo che in 8 secondi riesca a mandare tre POST al sito di MTV, potrei votare 12 volte al minuto, circa 700 volte l’ora.
    16800 voti al giorno.
    Basteranno per far vincere un video? Non ne ho idea, immagino comunque che bastino per sbilanciare la classifica.
    Sicuramente ci potremmo far vincere Civati al prossimo sondaggio de la Repubblica sul futuro del PD =) (a dire il vero mi sembra che la Repubblica setti un cookie. o era il Corriere? boh)

  • 12 Luca // Mar 15, 2010 at 2:26 am

    Ecco, tempo di riscrivere il commento e scopro che ti era arrivato quello prima =)
    Nei conti ho già calcolato 3 voti per IP
    Ciao!

    l

  • 13 Luca // Mar 15, 2010 at 2:36 am

    P.P.P.S

    Ovviamente rimane il concetto che il sito non è sicuro, ma non mi stupisce per niente, credo semplicemente non gliene freghi nulla di chi vince.
    C’è da dire anche i captcha funzionano meno ogni giorno che passa (e per reazione se ne vedono alcuni che sono praticamente dei test di rorschbach…), servono solo a limitare i danni.
    Semplicemente un sistema di votazione anonimo non è sicuro, su internet come nel mondo reale!

  • 14 Filippo Matteo Riggio // Mar 15, 2010 at 11:07 am

    Interessante post e interessanti i commenti.
    Concordo tuttavia con l’ultimo commento di Luca, la votazione anonima non è sicura, bastava fare una registrazione e il problema dei voti multipli era risolto.
    Un po’ come c’è sul sito dell’Heineken Jammin Festival, che per votare devi esser registrato.

  • 15 Nicola Greco // Mar 15, 2010 at 3:06 pm

    Si esatto, una cosa di quel genere mi sarebbe piaciuta di più. Non è un bug quello del sito di mtv, sia chiaro. E’ un sistema di votazione che hanno adottato, che magari non è dei migliori per quella realtà.

  • 16 MTV TRL, facile scalare la Top List! // Mar 17, 2010 at 4:47 pm

    [...] Fonte [...]

  • 17 ginopino // Apr 22, 2010 at 6:10 pm

    ciao nicola,
    io ho lavorato per MTV molti anni fa e mi sono anche occupato del sistema di voto di TRL.
    Come detto sono passati molti anni, ma il vedere che il sito è ancora in ASP mi fa pensare che non abbiano intenzione di migliorare le cose…
    in ogni caso il sistema era ed è (presumo ancora) così semplice perchè ad MTV non interessava un sistema blindato, ma un metodo veloce per coinvolgere la gente a cliccare sulle loro pagine. Per loro non è un problema se qualcuno clicca più volte e per il peso che danno alle loro classifiche via web poco importa come e quanti voti arrivino.
    per il resto complimenti per tutto.

  • 18 bruno capestrani // Jul 18, 2010 at 10:15 am

    premetto che sono solo pittore e non un tecnico e quindi eventuale risposta mi auguro sia possibile da me metterla in pratica
    -è concesso visitare il sito una sola volta al giorno per un periodo non definito ma più è lungo (1,2 minuti, epiù punteggi vengono dati-
    per votare più volte dallo stesso compute, c’è un sistema da me fattibile?
    grazie Bruno

  • 19 Mtv MyTRL: dai voti falsati alla registrazione obbligatoria? // Jul 26, 2010 at 2:34 pm

    [...] ultime ore ha avuto molto successo un intervento per aggirare i limiti di voto (normalmente 3 al giorno per ogni visitatore) della classifica di Mtv MyTRL — l’interfaccia [...]

Leave a Comment