Proxy PAC sous Linux, c’est possible

Ubuntu LogoDans 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. La plupart du temps, 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!

Indispensable, ne serait-ce que pour permettre au 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 »? Qu’est-ce donc?

Là, les affaires se compliquent: les logiciels tel « apt-get » ou « wget » ne fonctionnent pas correctement avec « proxy.pac ».

Définition d’un proxy.pac

L’extension de fichier « PAC » est l’acronyme pour Proxy Auto Config. Ce fichier décrit la définition globale d’une politique d’accès à Internet.

Le contenu est écrit en langage JavaScript, et permet une granularité assez fine de la gestion d’accès aux ressources réseau: selon les heures, le protocole,…

Solution pour Linux

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:

Laisser un commentaire

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