MTV TRL, facile scalare la Top List!

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);</code>

<code>

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

</code>
<code> 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);
 </code><code>

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 sia di parte, sono contro questi tipi di sistema di votazione soprattutto quando si parla di realtà di questo genere. Non ho intenzione di votare il mio cantante in questo modo, dato che credo sia molto 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.

Fonte