Cambiare IP ogni 5 secondi

16 April 2010, sezione Web

Ci sono molte occasioni in cui potrebbe essere vantaggioso cambiare IP, come quando superiamo il limite di minuti di Megavideo o come quando vogliamo semplicemente non farci riconoscere come la stessa persona.

E ovviamente ci sono molti altri motivi meno nobili…

Supponiamo che ci sia un concorso in cui è possibile inviare un voto semplicemente visualizzando una pagina1, si insomma cliccando semplicemente su un link che abbiamo. I metodi che un sito ha per impedirci di votare più di quanto sia consentito sono legati alle possibilità che ha di riconoscerci tra chi ha già votato e ciò avviene principalmente in 2 modi: il nostro IP e i cookie. Quindi per non farci riconoscere basterà “cambiarli” entrambi.

Una soluzione che molti di voi conosceranno è quella di disconnettere e riconnettere il router, a funzionare funziona eh…ma che due palle a ripetere il procedimento decine di volte! E allora useremo TOR. TOR è una rete formata da migliaia di computer sparsi in tutto il mondo che prestano il proprio IP in modo da nascondere quello del client (il vostro).

Tramite uno script potremo richiedere a TOR un nuovo IP ogni tot di secondi, ovviamente installiamo prima tor e vidalia un’interfaccia grafica che semplifica la gestione di TOR:

sudo apt-get install tor vidalia

adesso avviate vidalia e quindi avviate la rete TOR. Ecco qui uno script che richiede un nuovo IP ogni volta che viene avviato.
file “changeip”

#!/usr/bin/expect -f
# telnet into tor and get clean path using expect
spawn telnet 127.0.0.1 9051
expect “Escape character is ‘^]’.”
send “AUTHENTICATE\r”
expect “250 OK”
send “signal NEWNYM\r”
expect “250 OK”
send “quit\r”
# eos
Come potete notare questo codice non è bash, ma è una serie di messaggi con cui si comunica con tramite il protocollo telnet a tor per istruirlo sull’operazione da compiere.
Adesso che abbiamo lo script possiamo automatizzare il suo avvio creando un’altro script come questo che sarà contenuto nella stessa cartella del file che avete creato prima:
file vota.sh
while true; do
cd `dirname $0`;
./changeip;
google-chrome -incognito “paginadavisitare” &
sleep 20;
killall /opt/google/chrome/chrome;
done
Cosa facciamo: innanzitutto un while true per ripetere l’operazione fino ad interruzione manuale (chiusura del terminale o ctrl+C) poi ci spostiamo con cd nella cartella in cui è contenuto lo script (nel caso non lo fossimo già), quindi avviamo il file changeip che dovrebbe essere nella stessa cartella.
Abbiamo cambiato l’ip, quindi da qui in poi inseriamo l’operazione da effettuare cambiando ogni volta sito. Nel mio caso apro una pagina con chrome2 in modalità incognito in modo da non memorizzare cookie, aspetto 20 secondi in modo che sia caricata e poi chiudo tutti i processi di chrome con un brutale killall (non molto elegante, si accettano suggerimenti).
Fatto ciò il ciclo ricomincia.
Si lo so, è codice che potrebbe incoraggiare comportamenti sleali. La risposta è: chi se ne frega. Se siete abbastanza intelligenti da capire 5 righe di codice allora sicuramente lo sarete anche per impiegarlo nel migliore dei modi, del resto siete liberi di fare quello che volete, ne io ne nessun’altro può dirvi cosa è giusto o sbagliato.
D’altra parte, esistono opportuni meccanismi di protezione, se vengono ignorati poi è inutile lamentarsi…
  1. anche concorsi di un certo livello, famoso il caso di TRL, a volte si basano su questo funzionamento []
  2. ovviamente è necessario che il proxy di chrome o del browser scelto sia settato in modo da usare tor, è un’operazione semplice, cercate su google []

  • Black Beard

    Ciao, ma il file changeip con che estensione lo devo salvare ? il codice che hai postato funziona solo su linux oppure anche su windows ??…..scusa se ti ho riempito di domande :) e poi avrei bisogno di far partire un estensione di mozilla al suo avvio, sai come fare ?

  • Lele

    Ciao,
    scusa il necroposting ma ho trovato molto interessante il tuo articolo ma ho dei problemi nel far funzionare il codice telnet, in particolare mi da degli errori:
    -command spawn not found
    -command send not found.
    Anche il comanda expect mi dava problemi ma l’ho installato (apt-get install expect) e ha smesso di darmi noie.
    Ho cercato di installare anche gli altri ma non ho trovato corispondenza, allorchè ho ho aggiornato telnet ma era già alla versione finale. Qualche idea?
    Grazie in anticipo e complimenti per il blog!

  • http://www.ginlemonblog.com/chi-sono/ GinLemon

    Ciao Lele,
    Vorrei tanto aiutarti ma da quando ho scritto questo articolo ad oggi non mi sono più trovato ad utilizzare tor, quindi mi trovi completamente disorientato. Ma magari potrebbe rispondere qualcun’altro…