Web Proxy Autodiscovery Protocol

Da Faber Libertatis.

Il protocollo WPAD (Web Proxy Autodiscovery Protocol) elaborato da un gruppo di produttori software (Inktomi, RealNetworks, Sun Microsystems e altri), è nato per consentire la massima trasparenza all'utente finale per la configurazione del proprio browser, continuando a sfruttare le proprietà dell'autoconfigurazione, insieme alla localizzazione automatica del server web depositario dello script per l'autoconfigurazione entro il dominio di appartenenza del client.

Il principio è molto semplice: il browser che implementa tale protocollo inizia la sua indagine andando ad interrogare il proprio DNS alla ricerca del nome "wpad.dominio_del_client.it". Se esiste un record A (address) che corrisponde a tale nome, il browser cercherà di caricare come file di autoconfigurazione quello corrispondente al seguente URL:

http://wpad.dominio_del_client.it/wpad.dat

Se il gestore della cache del dominio dominio_del_client.it avrà predisposto sul web server corrispondente al nome wpad.dominio_del_client.it il file /wpad.dat (nella document root directory), allora il client si autoconfigurerà seguendo le direttive Javascript in esso contenute. Più semplicemente il wpad.dat sarà una copia o un link simbolico al file proxy.pac che il gestore della cache avrà comunque preparato per tutti quei browser che ancora non implementano il protocollo WPAD (tutti tranne MSIE 5).

Il protocollo prevede anche altri tentativi, oltre alla ricerca DNS, quali query DHCP. Ma il metodo più sicuro per sperimentarlo è il ricorso appunto ad una semplice configurazione DNS. Si noti infine che l'implementazione prevede la scansione di tutti i livelli di domini a partire da quello più alto, discendendo poi fino al secondo livello. Questo consente quindi la creazione di wpad.dat dipartimentali, se ve ne fosse la necessità,

In tutti i casi un proxy.pac o wpad.dat deve per poter essere utilizzato essere messo in linea su un web server opportunamente configurato. E' necessario infatti, laddove non esistesse già, aggiungere un MIME-type particolare per far sì che il browser lo carichi come javascript di autoconfigurazione (e non lo visualizzi come testo invece). Ogni web server ha un proprio sistema di configurazione dei mime types, ed occorre verificare la documentazione relativa per associare l'estensione .pac e .dat al MIME-type application/x-ns-proxy-autoconfig. Nel caso di Apache è sufficiente editare il file mime.types ed aggiungere la seguente riga:


application/x-ns-proxy-autoconfig    pac dat

Ecco un esempio del file wpad.dat, usato nell'Internet Point NSE

////////////////////////////////////////////////////////
// -------------------------------------------------- //
// CONFIGURAZIONE AUTOMATICA PROXY PER COOP_TERRA-NSE //
// -------------------------------------------------- //
// questo files deve chiamarsi nse.pac, a cui         //
// punteranno i link proxy.pac e wpad.dat             //
// da http://wpad.terra.ext/wpad.dat                //
////////////////////////////////////////////////////////
 
function FindProxyForURL(url, host)
{
	if (isPlainHostName(host))
		return "DIRECT";
	else if (dnsDomainIs(host, "terra.ext") || dnsDomainIs(host, "zeus") || dnsDomainIs(host, "zeus.terra.ext"))
		return "DIRECT";
	else if (host == "zeus" || host == "192.168.0.2" || host == "admin" || host == "admin.terra.ext" || host == "zeus.terra.ext")
		return "DIRECT";
	else if (host == "127.0.0.1")
		return "DIRECT";
	else if (url.substring(0, 5) == "http:" ||
	         url.substring(0, 6) == "https:" ||
	         url.substring(0, 4) == "ftp:")
		return "PROXY 192.168.0.2:3128";
	else
		return "DIRECT";
}