Dans les grosses organisations, l’accès à Internet se fait souvent via un serveur mandataire (parfois proxy pac).
Pour une machine sous Linux, configurer un service qui a besoin d’accéder à Internet est assez facile, il suffit de renseigner la variable d’environnement
http_proxy=http://monproxy:3128
(si 3128 est le numéro de port du proxy à attaquer), et zou!
Particulièrement utile, ne serait-ce que pour permettre le système d’entretenir ses mises-à-jour (système apt sur Debian par exemple).
ET SI…. la « politique » de proxy pour l’accès internet est distribuée par un fichier « proxy.pac »??
Là, les affaires se compliquent: les logiciels tel « apt-get » ou « wget » ne fonctionnent plus avec « proxy.pac ». Parce que ce fichier PAC (acronyme pour Proxy Auto Config) fournit une définition globale d’une politique d’accès à Internet (selon les heures, le protocole,…). Il est écrit en JavaScript.
LA Soluce: les logiciels libres, comme souvent! En particulier pacparser https://github.com/pacparser/pacparser
C’est une librairie simple d’usage, pour exploitation en C ou Python. Exemple en Python:
>>> import pacparser >>> pacparser.init() >>> pacparser.parse_pac('examples/wpad.dat') >>> pacparser.find_proxy('http://www.google.com', 'www.google.com') 'DIRECT' >>> pacparser.setmyip("192.168.1.134") >>> 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() >>>
Et voilà, merci la communauté !
Ressources
pour plus d’informations, l’article de Wikipedia est bien fichu, alors:
- https://fr.wikipedia.org/wiki/Fichier_.PAC
- https://github.com/pacparser/pacparser pour la librairie sur GitHub