- Fichier .PAC
-
Un fichier de Configuration Automatique de Proxy ou fichier.PAC (proxy auto-config) définit la façon selon laquelle un navigateur web (ou d’autres fonctionnalités équivalentes, regroupées sous le nom de User agents) se connectent à Internet : il leur permet d’utiliser automatiquement le proxy approprié à l’URL demandée.
Le navigateur va chercher ce fichier PAC en priorité. Les URLs qu’il contient peuvent être configurées manuellement, ou déterminées automatiquement par le WPAD (Web Proxy Autodiscovery Protocol[1]).
Un fichier PAC contient une fonction en JavaScript appelée "FindProxyForURL(url, host)". Cette fonction retourne une chaîne de caractères avec une ou plusieurs spécifications (règles) sur la façon d'y accéder. Ces règles amènent le navigateur web à utiliser un serveur proxy particulier ou à se connecter directement.
Si un proxy spécifié dans le fichier.PAC tombe, il peut paralyser la navigation. C'est la raison pour laquelle il faut toujours prévoir dans le fichier.PAC une seconde règle si la première ne peut être suivie.
Sommaire
Contexte
Les navigateurs modernes possèdent plusieurs niveaux de réglages automatiques : les utilisateurs peuvent choisir le niveau approprié à leurs besoins. Les fonctions suivantes sont couramment utilisées :
- Manual proxy selection : spécifie un nom de domaine (hostname) et un numéro de port standard pour toutes les URLs. La plupart des navigateurs permettent de spécifier une liste de domaines qui pourront contourner le proxy.
- Proxy auto-configuration (PAC): spécifie les URLs pour un fichier PAC avec une fonction en JavaScript qui détermine le proxy approprié pour chaque URL.
Cette fonction sert surtout aux utilisateurs d'ordinateurs portables, qui ont besoin de plusieurs configurations de proxy, et aux grandes sociétés ou complexes collectifs possédant plusieurs proxies différents.
- Web Proxy Autodiscovery Protocol (WPAD) : Laisse le navigateur découvrir l'emplacement du fichier PAC grâce aux fonctions du DHCP et du DNS.
Le fichier PAC
Pour utiliser un fichier PAC, vous devez le publier sur un serveur Web et dire au navigateur de l'utiliser. Vous pouvez entrer manuellement les URLs à traiter dans les réglages de la connexion proxy de votre navigateur ou bien vous servir du protocole WPAD.
Un fichier PAC est un fichier texte en Javascript, qui contient entre autres la fonction FindProxyForURL(url, host). Cette fonction possède deux arguments associés :
- URL : l'URL de l'objet
- HOST : le nom de domaine dérivé de l'URL
Par convention, on nomme ce fichier proxy.pac. Microsoft (WPAD) utilise wpad.dat pour le standard WPAD.
Même si la majorité des clients traite le script sans tenir compte du type MIME retourné dans la requête HTTP, il convient de forcer le serveur web à le déclarer (application/x-ns-proxy-autoconfig ou application/x-javascript-config), ceci pour des raisons de clarté et de compatibilité.
S'il n'y a pas de raison de favoriser l'usage d'un type MIME par rapport à un autre, il est néanmoins raisonnable de supposer que application/x-ns-proxy-autoconfig sera acceptée par plus de clients que application/x-javascript-config ainsi qu'il est expliqué dans les spécifications originales de Netscape.
Exemples
- Voici un exemple très simple de fichier PAC:
function FindProxyForURL(url, host) { return "PROXY proxy.example.com:8080; DIRECT"; }
Cette fonction force le navigateur à récupérer toutes les pages au moyen du port 8080 du proxy (proxy.example.com). Si ce proxy tombait ou cessait de répondre, le navigateur contacterait le serveur WWW directement, sans utiliser un proxy.
- Voici un exemple plus complexe pour montrer une fonction Javascript disponible dans la fonction FindProxyForURL:
function FindProxyForURL(url, host) { // our local URLs from the domains below example.com don't need a proxy: if (shExpMatch(url,"*.example.com/*")) {return "DIRECT";} if (shExpMatch(url, "*.example.com:*/*")) {return "DIRECT";} // URLs within this network are accessed through // port 8080 on fastproxy.example.com: if (isInNet(host, "10.0.0.0", "255.255.248.0")) { return "PROXY fastproxy.example.com:8080"; } // All other requests go through port 8080 of proxy.example.com. // should that fail to respond, go directly to the WWW: return "PROXY proxy.example.com:8080; DIRECT"; }
Restrictions
Codage du fichier PAC
Les navigateurs comme Firefox ou IE ne supportent que le langage par défaut du fichier PAC. Ils ne supportent pas des langages Unicode comme UTF-8.
Résolution Dns
La fonction dnsResolve (et les autres fonctions similaires) exécutent un check DNS qui peut bloquer votre navigateur pendant un long moment si le serveur DNS ne répond pas.
Se servir des résultats de l'autoconfiguration de proxy selon le nom de domaine avec la version 5.5 d'IE (ou une version supérieure) limite la flexibilité du PAC standard. En effet, il peut vous faire choisir le meilleur proxy en se basant sur le nom de domaine demandé, sans prendre en compte le chemin de l'URL. Afin d'éviter ça, vous pouvez désactiver la recherche automatique de proxy dans la base de registre.
Il est recommandé de toujours utiliser l'adresse IP au lieu des noms de domaines dans la fonction, afin de veiller à la comptabilité avec les autres composants Windows qui utilisent la configuration les réglages PAC d'Internet Explorer, comme .NET 2.0 Framework.
Par exemple :
if (isInNet(host, dnsResolve(sampledomain) , "255.255.248.0") // .NET 2.0 will resolve proxy properly if (isInNet(host, sampledomain, "255.255.248.0") // .NET 2.0 will not resolve proxy properly
La convention actuelle est de refuser de rediriger une connexion lorsqu'un fichier PAC est indisponible.
D'autres restrictions sont signalées dans la machine java sur le poste local.
Fonctionnalités avancées
D'autres fichiers PAC plus complexes peuvent réduire la charge des proxies, faire de la répartition de charge (load balancing), de la continuité de service, ou de la black listing (Liste noire) ou white listing (Liste blanche) avant que la requête tape les proxies. L'une d'elles peut retourner plusieurs proxies :
return "PROXY proxy1.example.com:8080; PROXY proxy2.example.com:8080";
Lire aussi
Jonathan de Boyne Pollard, « Automatic proxy HTTP server configuration in web browsers », Frequently Given Answers, 2004 (en)
Liens externes
- Navigator Proxy Auto-Config File Format (from the Release Notes for Netscape Navigator 2.0) (en).
- Using the Client Autoconfiguration File (Chapter 11 of Netscape Proxy Server Administrator's Guide, version 3.5 for Unix) (en)
- Description of proxy auto-configuration files from Microsoft (en)
- PAC File & WPAD Examples (en)
- pacparser C and Python library to parse PAC files (en).
- Pactester A tool to test PAC files (en).
- A web front-end for the Google PAC Tester (en)
- proxyvalidator Test all destination proxies within a PAC file (en).
- PAC-file to filter bad hosts and pornography (en).
- Proxy Auto Config "how to". Fully working examples including anti-ad and anti-adult filter rules (en).
Notes
- Technologie Microsoft
Wikimedia Foundation. 2010.