TOR é indubbiamente un prodotto molto interessante e vale la pena, prima di addentrarsi in discussioni maggiormente attinenti al mondo SEO, esplorare la possibilità di poter pilotare TOR da una applicazione PHP. Ovviamente le considerazioni che faremo in questo post varranno per qualsiasi altro linguaggio di programmazione.
Su gentile concessione di SEOswat forum, ecco un pezzo di codice molto istruttivo:
//TOR Change Identity
function tor_new_identity($tor_host='localhost',$tor_port=9051) {
$fp = fsockopen($tor_host,$tor_port);
if (!fwrite($fp, "AUTHENTICATE\r\n")) return false;
$r=''; $r .= fgets($fp); if ($r !== "250 OK\r\n") return false;
if (!fwrite($fp, "signal NEWNYM\r\n")) return false;
$r=''; $r .= fgets($fp); if ($r !== "250 OK\r\n") return false;
fwrite($fp, "quit\r\n");
return true;
}
Questo codice permette di modificare da PHP e in tempo reale il circuito che si utilizzerà per la prox connessione via TOR.
In questo codice si assume che TOR sia installato sullo stesso server sui cui é eseguito il codice (localhost) e la porta di default su cui risponde TOR é la 9051.
Qualora TOR dovesse essere installato su un server diverso, é necessario modificare il file di configurazione torrc aggiungendo la seguente linea e, quindi, riavviando TOR:
ControlListenAddress [IP ADDRESS]:9051
Se si volesse personalizzare il processo di autenticazione a TOR introducendo un password (altamente consigliato), é necessario intervenire in due modi:
da linea di comando (o shell) eseguire
tor --hash-password [YOUR PASSWORD]
si otterrà una versione hex hash della password.
Inserire la password hex nel file torrc, quindi, riavviare TOR, per esempio:
HashedControlPassword 16:661C60B0FBC8B....
Per poter autenticarsi a TOR da PHP, il codice precedente diventa:
if (!fwrite($fp, "AUTHENTICATE \"YOUR PASSWORD\"\r\n")) return false;
La password é da inserire in chiaro.
Con queste indicazioni é possibile da un vostro script PHP comunicare con TOR ed eseguire in tempo reale selezione di nodi, modifica di circuiti, modifica di parametri, etc. etc.
Tutti i comandi impostabili sono descritti in questo documento http://www.torproject.org/svn/trunk/doc/spec/control-spec.txt.
Translate in English