Een proxy auto-config bestand op de juiste locatie en een speciaal subdomein via DNS zijn de enige componenten nodig zijn om de proxyconfiguratie via je netwerkt te laten gebeuren. Het Web Proxy Auto-Discovery Protocol (WPAD) is daarvoor een standaard die door alle gangbare webbrowsers ondersteund wordt.

In Firefox bijvoorbeeld kies je in de verbindingsinstellingen "Proxyinstellingen voor dit netwerk automatisch detecteren". WPAD definieert twee methodes waarmee een browser de locatie van een proxyconfiguratiebestand op het netwerk kan bepalen: via DHCP en DNS. De eerste methode wordt echter niet door Firefox en Google Chrome ondersteund (alleen door Internet Explorer en Konqueror), dus we beperken ons hier tot DNS. Als de client de hostnaam pc.department.branch.example.com heeft, zoekt de browser één voor één op de volgende locaties tot het een bestand wpad.dat vindt:

http://wpad.department.branch.example.com/wpad.dat

http://wpad.branch.example.com/wpad.dat

http://wpad.example.com/wpad.dat

Op één van die computers moet dus een webserver draaien die het bestand wpad.dat in de root-directory heeft staan en aanbiedt met MIME-type application/x-ns-proxy-autoconfig. Dit bestand bevat de JavaScript-functie FindProxyForURL(url, host) die een proxy kan teruggeven, afhankelijk van de bezochte url en de hostnaam van de webserver. Een eenvoudige voorbeeldconfiguratie die alle aanvragen via proxy.example.com laat gaan ziet er dan als volgt uit:

function FindProxyForURL(url, host)

{

return "PROXY proxy.example.com:8080";

}

Zoals gezegd kun je de proxy laten afhangen van de waarden van url en host, en dan kun je ingewikkelder configuraties maken. Wil je bijvoorbeeld dat alle bezoekjes naar websites in een aantal specifieke domeinen via de proxy gaan, maar dat alle andere websites rechtstreeks bezocht mogen worden, dan kan dat als volgt:

function FindProxyForURL(url, host)

{

if (dnsDomainIs(host, ".example.org")

|| dnsDomainIs(host, ".example.net"))

return "PROXY proxy.example.com:8080";

else

return "DIRECT";

}

En zo zijn er nog heel wat andere zaken mogelijk, zoals het teruggeven van meerdere proxy's voor load balancing:

return "PROXY proxy1.example.com:8080; PROXY proxy2.example.com:8080";

Of het blokkeren van bepaalde websites:

return "PROXY 127.0.0.1:65535";

Ook SOCKS-proxy's zijn overigens ondersteund:

return "SOCKS socks.example.com:8080";

Complexere voorbeelden zijn te vinden in de documentatie van Internet Explorer en op de website FindProxyForURL.