Archivi

Configurazione automatica del proxy: il PAC file

10 dicembre 2008 di In: Networking

Il file PAC (proxy auto-config) definisce come i web browser possono scegliere il proxy server appropriato per recuperare le informazioni di una data URL. Sostanzialmente stabilisce qual è la rotta che deve effettuare il vostro traffico per raggiungere certi siti web.

Un file PAC contiene una funzione JavaScript ( FindProxyForURL(url, host) ). Questa funzione restituisce una stringa con uno o più metodi di accesso. Questi fanno in modo che il vostro traffico venga mandato ad un proxy server, piuttosto che ad un altro oppure semplicemente che il sito venga raggiunto direttamente senza proxy.

Le stringhe restituite possono essere: “DIRECT” “PROXY [DNS name/ IP address del proxy]:[porta]”

Ecco 2 esempi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
function FindProxyForURL(url, host)
    {
// Se il sito che l'utente vuole visitare è quello aziendale non utilizzare nessun proxy
    if (shExpMatch(url, "http://sitointranetaziendale.it*")) { return "DIRECT"; }
 
 // se l'indirizzo IP del client è all'interno della rete 192.168.1.0/24     
    if (isInNet(myIpAddress(), "192.168.1.0", "255.255.255.0"))
 
// usa questo proxy tramite questa porta
   return "PROXY 192.168.1.1:8080"; 
 
// senno userà il suo default gateway
   else
    return "DIRECT";
    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<strong>function FindProxyForURL(url, host)
{
 
// si possono impostare anche delle variabili che contengano le stringhe da restituire.
var proxy_a = "PROXY 192.168.1.22:8888";
var proxy_b = "PROXY 192.168.1.1:8080";
var proxy_c = "PROXY 192.168.1.243:7777";
var noproxy = "DIRECT";
 
// I siti seguenti verranno acceduti direttamente
if (shExpMatch(url, "http://sitoaziendale.local*")) { return noproxy; }
if (shExpMatch(url, "http://webmail.local*")) { return noproxy; }
 
// Il traffico verso cicciopasticcio verrà indirizzato verso il proxy A; Se il proxy A non risponde il traffico verrà girato al proxy B
if (shExpMatch(url, "http://www.cicciopasticcio.net*")) { return proxy_a ; proxy_b ; }
 
// Il traffico rimanente andrà verso il proxy C
return proxy_c;
}

Saluti!