sabato 3 novembre 2012

Creare la nostra catena di proxy personale

I proxy sono dei server collegati alla rete che permettono alle informazioni di transitare attraverso di loro, in sostanza sono degli intermediari fra il nostro PC (client) e il sito che vogliamo visitare(server host). Lo schema di funzionamento è sintetizzabile in 3 fasi:

1) Il client si collega al proxy ed invia la richiesta.
2) Il proxy si collega al server del sito web e inoltra la richiesta del client.
3) Il proxy ricevuta la risposta la inoltra al client.


Potete intuire che l'utilizzo di proxy, almeno teoricamente, ha un effetto anonimizzante notevole, poiché il sito visitato non avrà accesso all'indirizzo IP del client ma a quello del server proxy. Ho detto "teoricamente" non a caso, in quanto molti proxy trasmettono il nostro indirizzo IP al server del sito che stiamo visitando.Quindi se per caso abbiamo la necessità di utilizzare proxy, dovremmo prima capire se quello che intendiamo utilizzare è anonimo o no. Ad ogni modo, anche quelli anonimi probabilmente conservano i log del traffico di rete in qualche file. Ci sono dei limiti pratici all' utilizzo dei proxy anonimi(detti anche trasparenti) , generalmente sono molto lenti, spesso non funzionano, e alcuni host non aprono le pagine se si accorgono che a visitarle è un proxy anonimo.Però se avete esigenza di un anonimato "più forte" l'utilizzo di un solo proxy non è consigliato, è necessario concatenarli, quello che fa ad esempio il programma TOR(inoltre quest'ultimo cambia la configurazione dei proxy a brevi intervalli di tempo).Ma è possibile concatenare più proxy senza utilizzare programmi specifici e avendo la facoltà di scegliere i proxy che vogliamo noi?La risposta è si! Un metodo semplice è concatenare più server CGI ad esempio se volessimo concatenare i due proxy CGI anonymouse.org e anonymizer.nntime.com, e volessimo visitare il sito www.sito.com dovremmo procedere nel modo seguente:

1)da anonymouse.org aprire anonymizer.nntime.com
2)una volta entrati in anonymizer.nntime.com aprire www.sito.com


Tutto molto semplice ma estremamente lento in quanto i siti CGI anonimi , a causa della facilità di utilizzo sono molto frequentati. Per questo motivo ho scritto uno script PHP che consente di creare la nostra lista di " proxy personali"  su server host che accettano comunicazione server-to-server, lo script è questo:

<?php
$str=$_GET['server'];
$arr=explode(',', $str);
$num=count($arr);
if($num>1){
$url="http://".$arr[0]."/jump.php?server=";
for($a=1;$a<$num;$a++){
$url=$url.$arr[$a];
if($a!=($num-1))
$url=$url.",";
}}
else{
$url="http://".$arr[0];
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$str = curl_exec($ch);
echo $str;
curl_close($ch);
?>
(*nota se il file è memorizzato con nome diverso da "jump.php"  è necessario cambiarlo anche nello script.)

Supponiamo di salvarlo col nome "jump.php", è necessario copiarlo sui vari server che si intende utilizzare come proxy personale, ad esempio se volessimo farlo su 3 server il file dovrebbe trovarsi nelle seguenti cartelle:

http://www.server1.com/jump.php
http://www.server2.com/jump.php
http://www.server3.com/jump.php


Ora è sufficiente scrivere nella barra degli indirizzi del browser:

http://www.server1.com/jump.php?server=www.server2.com,www.server3.com,www.sitodavisitare.com/pagina.html

In sostanza solo il "server3" visita la pagina del "sitodavisitare", e questa arriverà al nostro browser dopo aver risalito a ritroso la catena dei proxy.
In linea di principio non c'è limite al numero dei proxy che è possibile aggiungere, nella pratica mettendone molti è possibile incorrere in problemi di timeout, inoltre lo script è testato solo con pagine "html pure".
Una avvertenza! Non usate i server altrui , se intendete fare dei test sul funzionamento dello script aprite degli account su servizi di free-hosting(esempio www.altervista.org ,www.000webhost.com), se utilizzate server in cui non siete autorizzati potrete incorrere in seri problemi legali.



Nessun commento:

Posta un commento