Proxy PAC locaux (et IE)

closeCet article a été publié il y a 12 ans 7 mois 12 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Les fichiers PAC (Proxy Auto Configuration) sont des mini-javascript limités (en terme de fonctions) utilisés pour indiquer à un navigateur quel est le proxy de la société pour sortir sur le web.
Par extension, on peut l’utiliser pour faire une sorte de load-balancing, de répartition suivant l’IP, court-circuiter le proxy pour tel ou tel site etc. Bref, peu de fonctions, mais pas mal d’utilisation détournées. Google vous expliquera ça mieux que moi.
Ce format de fichier vient de chez Netscape, il y a une 12aine d’années, on n’a pas encore fait mieux. Sa syntaxe complète est décrite ici.

Il y a un truc bien merdique (sous IE :O) avec les fichiers PAC. Je vous en fais part car pour le coup, j’ai trouvé beaucoup de monde sur google se posant une question et personne n’y répondant correctement.

Une fois votre « proxy.pac » créé, il s’agit de le mettre à dispo des utilisateurs. Deux solutions :
– le publier sur un serveur web (interne)
– le copier d’une manière ou d’une autre sur le PC des utilisateurs, localement

La première méthode est bien pour une utilisation interne (serveur web interne toujours accessible), mais pour les personnes mobiles, c’est naze : quel que soit le serveur web utilisé, il faudra pouvoir l’atteindre, ce qui n’est pas nécessairement possible depuis un site quelconque de connexion à Internet.

La deuxième méthode est bonne pour tout le monde, du moment que vous avez moyen d’injecter le fichier sur le PC des utilisateurs.
Ensuite, dans ce cas, vous indiquez dans votre navigateur un chemin du genre c:\mon repertoire\monproxy.pac
Et c’est là le début des ennuis.
– Firefox va convertir l’adresse en file:///c:/mon%20repertoire/monproxy.pac
– IE ne convertit rien et ne trouve pas le fichier. Bref, ça-marche-pas (c) MS

Comment faire ? j’ai vu plein de fois la question sur le web, jamais la réponse.
Pour que ça marche sous IE, il faudra donc :
– commencer par file://c:/
– ne pas mettre d’espace ni de %20. Comment faire ? nommer les répertoires à l’ancienne, façon Windows 95. C’est pas beau ça ? c’est pas un navigateur génial IE ? Exemple : file://c:/docume~1/mon_id/mon_proxy.pac

Et voilà. La clef, c’est le « ~1 » des familles.

J’entends dans le fond de la salle une question : « pourquoi ne pas mettre le fichier sur C:\ ou C:\Windows directement ? ». Parce-que j’ai des utilisateurs non admin de leur poste et le script de logon au domaine n’a pas les droits d’écrire là-dedans. Par contre dans %USERPROFILE% (ie, C:\Documents and settings/mon_id/) c’est bon.

Simple, mais de quoi perdre des heures.
Merci Microsoft.

12 comments

  1. Est ce que le le .pac peut se déployer automatiquement lorsqu’il y a une demande au niveau du DHCP ?

  2. Hello

    Oui, complètement
    Méthode DHCP compliquée, à ce qu’on m’a dit
    Méthode via DNS super fastoche
    J’en parle là vaguement : http://www.experts-exchange.com/Networking/Protocols/DHCP/Q_24343652.html
    Et là précisemment :
    http://www.experts-exchange.com/Networking/Protocols/DHCP/Q_24343652.html

    Sur experts-exchange, il faut s’inscrire, mais c’est gratos et la base de connaissance derrière vaut le coup

    Je devrais pondre un article sur le WPAD, tiens…

  3. Quoique, en quelques mots :
    – créer une entrée DNS wpad, sous-entendu « wpad.votredomaine.com »
    – sur le serveur qui se cache derrière ce nom, avoir un service web (apache, iis) qui à la racine propose un fichier wpad.dat, donc http://wpad.chezvous.com/wpad.dat
    – ce fichier est le .PAC que l’on veut déployer
    – dans firefox / IE : cocher la case « détecter automatiquement » – que ce soit à la main, par GPO Windows, peu importe.
    – le fichier est lu (si trouvé) au lancement du navigateur, donc relancer !

    Ne pas oublier l’aspect proxy transparent pour le traffic http aussi (pas https)

  4. Bonjour Michauko !
    Je vois que tu touches ta bille en fichier pac et Proxy etc…
    Mon problème est le suivant :
    Nos clients (nous sommes constructeur) utilisent notre soft Talk2M (genre Skype mais avec tunnel VPN SSL et connexion vers des eWON = routeur industriel) – Et donc ce soft passe bien les firewall, il est client DHCP, il passe aussi les proxy si on a bien sûr le login et password… mais, il ne passe sort pas sur Internet si le Proxy fonctionne avec un fichier .pac . Même si le logiciel Talk2M est installé sur le PC du client, qui surf bien,.. Snif. Le client ne connait pas de login ou password dans ce cas. Aurais tu une idée ? Merci. Je suis joignable via le site ewon.fr – MERCI

  5. Bonjour,

    Je suis actuellement en train de déployer un fichier pac dans mon entreprise.

    Mais je me heurte à un soucis, je dépose le fichier pac par GPO dans le %APPDATA% ça aucun soucis, par contre dans IE comment définir par GPO l’emplacement du fichier pac sans l’écrire directement dans le registre.

    Car IE ne semble par interpréter ceci : file://%APPDATA%\pac.pac

    Comment procéder?

    Merci.

    1. Bonjour,
      Pas sûr que les % soient acceptés, encore moins pour passer une variable
      Pas sûr que le mélange / et \ soit nickel aussi

      Perso, j’opterais pour la méthode d’autodétection du .pac grâce à WPAD, cf. mes commentaires ci-dessus. Je l’ai décrit sur experts-exchange.com
      Faut vraiment que j’en fasse un article en français sur ce blog à partir de ma doc « experts-exchange », ça peut servir 🙂

  6. Desole de ce deterrage mais bon je tente
    J ai un proxy.pac deployer par gpo sur les postes a la racine
    Jusque la pas de prob
    Mais gpo configure ie pour le proxy en file://c:proxy.pac
    Le proxy fonctionne nikel avec ie mais la je seche pour firefox
    Je met bien file:///c:/proxy.pac mais rien ne filtre
    Quelqu un peu m aider ou me guider
    Mer i d avance

    1. Désolé, j’utilise maintenant en mode WPAD et la dernière fois que j’avais essayé en local, j’avais noté :
      file:///c:/Documents%20and%20Settings/mon_user/proxy.pac

      Je n’ai pas plus d’idée sur le sujet là

  7. Bonjour,
    Lorsque vous avez à gérer plusieurs dizaines de milliers de postes, il est préférable d’éviter de déployer le fichier sur chacun d’eux.
    En hébergeant le script sur un serveur HTTP avec une URL en local, si celui-ci est inaccessible, le navigateur va ignorer le script (pas de cache) après le timeout puis accéder directement aux sites demandés, ce qui est le comportement attendu lors de l’utilisation d’une borne wifi ou via une box ADSL.

    1. bonjour
      Cet article date un peu…. maintenant je configure l’accès au fichier PAC via WPAD, donc timeout au besoin, pas de proxy
      J’ai pas fait d’article sur le sujet

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.