Blog
Le Blog

KB N° 2549 : TESTER LE FONCTIONNEMENT D’UN PROXY.PAC

KB Olfeo On-Premise
Le 5 juin 2023

Comment valider le fonctionnement d’un proxy.pac à l’aide d’un pactester.

Objectif

Valider le fonctionnement d’un proxy.pac à l’aide d’un pactester.

Contexte

Un proxy.pac est utilisé pour déclarer l’adresse et le port du proxy aux navigateurs des postes clients. Comment valider le fonctionnement du proxy.pac déclaré ?

Il est possible de vérifier le fonctionnement d’un proxy.pac grâce à l’outil pacparser.

Pacparser est une bibliothèque pour analyser la configuration automatique du proxy d’un fichier .PAC. Les fichiers de configuration automatique du proxy sont une méthode de configuration du proxy largement utilisée de nos jours. Les navigateurs Web peuvent utiliser un fichier .PAC pour déterminer le serveur proxy à utiliser ou s’il faut une connexion directe pour une URL donnée. Les fichiers .PAC sont écrits en JavaScript et peuvent être programmés pour retourner différentes méthodes de substitution (ex.  » PROXY de Proxy1 : port; DIRECT  » ) en fonction de l’URL, l’adresse IP source, le protocole, etc..

Les fichiers .PAC introduisent beaucoup de possibilités. Les fichiers .PAC sont maintenant une méthode largement acceptée pour la gestion des proxys et les sociétés les utilisent dans l’environnement d’entreprise. Les navigateurs web les plus populaires prennent en charge les fichiers .PAC.

Comme le mécanisme d’évaluation du fichier proxy .PAC est généré dans le navigateur et ne peut être accessible depuis l’extérieur, la seule façon de savoir quel proxy le navigateur va utiliser pour une URL spécifique est une inspection manuelle du fichier proxy.PAC. Mais une inspection manuelle peut s’avérer fastidieuse et être génératrice d’erreurs proportionnelles à la taille du fichier.

L’idée derrière pacparser est de faciliter l’analyse de fichier .PAC (C et python sont pris en charge à l’heure actuelle).

Étapes

Étape 1

  1. La première étape consiste à installer cet outil qui est disponible via la commande suivante pour les environnements systèmes Linux :

    $ sudo apt-get install libpacparser1 python-pacparser libpacparser-dev

    Pour un système Windows ou Mac OS X, aller à cette adresse : https://code.google.com/p/pacparser/downloads/list

  2. Pour installer la bibliothèque C de pacparser et pactester dans l’environnement Windows :

    Télécharger l’archive pacparser -vvv – win32.zip et l’extraire. Il sera créé un répertoire pacparser-v.v.v.

  3. Copier tous les fichiers .DLL et pactester.exe quelque part où le système peut les trouver (par exemple pour les répertoires qui sont déjà en chemin système comme C:\Windows) ou tout simplement ajouter le répertoire pacparser au chemin (PATH) du système.
  4. Lier libpacparser.a et pacparser.lib dans pacparser respectivement avec les outils de compilation mingw et Visual Studio. Instructions (en anglais) pour relier en pacparser sur Visual Studio : http://code.google.com/p/pacparser/wiki/LinkingOnVisualStudio

Module Python

Pour installer le module python de pacparser : télécharger le paquet pacparser – Python25 -vvv – win32.zip et l’extraire. Sur l’invite de commande (cmd), aller dans le répertoire pacparser – Python25 -vvv -win32 et exécuter setup.py install :

C:\temp > cd pacparser - Python25 - 1.0.5 -win32
C:\temp\pacparser - Python25 - 1.0.5 -win32 > setup.py install

Si elle échoue pour une raison quelconque, il suffit de copier le répertoire pacparser dans le dossier python : C:\Python25\Lib\site-packages\pacparser.

Étape 2

Une fois l’outil pacparser installé, il est possible de tester le fichier de configuration proxy.pac avec python :

Attention : Si le proxypac est hébergé sur l’Olfeo, il faut le recopier sur la machine cliente sur laquelle est installé pacparser.
>>> import pacparser
>>> pacparser.init()
>>> pacparser.parse_pac_file('examples/wpad.dat')
>>> pacparser.find_proxy('http://www.google.com', 'www.google.com')
'PROXY proxy1.manugarg.com:3128; PROXY proxy2.manugarg.com:3128; DIRECT'
>>> pacparser.find_proxy('http://www2.manugarg.com', 'www2.manugarg.com')
'DIRECT'
>>> pacparser.cleanup()
>>>
Étape 3

Il est également possible de tester le fichier.PAC avec du langage C :

manugarg@hobbiton:~$ cat pactest.c
#include <stdio.h>
#include <pacparser.h>

int main(int argc, char* argv[])
{
  char *proxy;
  pacparser_init();
  pacparser_parse_pac_file(argv[1]);
  proxy = pacparser_find_proxy(argv[2], argv[3]);
  printf("%s\n", proxy);
  pacparser_cleanup();
}

manugarg@hobbiton:~$ gcc -o pactest pactest.c -lpacparser
manugarg@hobbiton:~$ ./pactest wpad.dat http://www.google.com www.google.com
PROXY proxy1.manugarg.com:3128; PROXY proxy2.manugarg.com:3128; DIRECT

Validation

Si les conditions sont respectées, pacparser retournera le proxy souhaité ou retournera DIRECT (pas de proxy).

Cet outil permet de tester facilement les conditions d’un fichier .PAC et ainsi éviter des erreurs lors de son déploiement.