(modifié le 24 août 2017 à 0:46)

J'utilise un script d'auto-configuration proxy sur ma machine. Il me permet de choisir si je veux utiliser un serveur proxy en fonction de l'adresse de chaque site web.

proxy-pac-config

Ce principe de proxy.pac est très répandu en entreprise alors pourquoi ne pas l'utiliser pour surfer à la maison ?

A quoi ça sert

Un fichier proxy.pac est un fichier texte contenant une fonction javascript FindProxyForURL permettant au navigateur de savoir s'il doit envoyer la requête vers un proxy ou y accéder en direct.

En fonction de l'URL d'un site (tout ou partie) nous allons orienter la requête vers un proxy chez ibVPN. Bien sûr vous pouvez monter votre propre serveur squid sur un serveur dédié à l'autre bout de la planète si vous en avez un à dispo.

Passer par un proxy permet d'accéder à des sites filtrant le pays de provenance des visiteurs. C'est le cas de YouTube, Netflix, Pandora, Spotify, Deezer... tout ce qui attrait à des droits d'auteurs de manière générale. C'est aussi le cas des services de replay TV, si vous êtes à l'étranger vous ne pourrez pas accéder au contenu français et cette méthode vous permettra de le faire avec un proxy situé en france.

D'autres utiliseront un proxy.pac uniquement pour accéder à leurs photos de vacances pour préserver la confidentialité de ses données vis à vis du FAI.

Contenu du proxy

Voici la base de mon fichier proxy.pac homemade :

// PROXY.PAC by xhark!
var DIRECT = "DIRECT";

// proxies ibvpn
var PROXY_UK = "PROXY uk3.ibvpn.com:9339";
var PROXY_NL = "PROXY nl2.ibvpn.com:9339";

function FindProxyForURL(url, host) {

if (shExpMatch(url, "https://www.youtube.com/watch?v=oSnTfO7b1-M"))
 { return PROXY_UK; }
 
// sites via proxy
 if( dnsDomainIs(host, "site-web-n1.fr") ||
 dnsDomainIs(host, "site-web-n2.net") ||
 dnsDomainIs(host, "9ans.xyz"))
 { return PROXY_NL; }
 
if( dnsDomainIs(host, "bbc.co.uk") ||
 dnsDomainIs(host, "espn.go.com") ||
 dnsDomainIs(host, ".channel4.com"))
 { return PROXY_UK; }

// DEFAULT RULE: Reste du trafic
return DIRECT; 
}

En fonction de l'adresse du site le navigateur va interroger le proxy UK ou NL ou aucun proxy.

Une demande d'authentification apparaît si votre proxy nécessite un utilisateur et mot de passe. De mon côté j'utilise KeePass associé à Firefox qui remplit automatiquement le champ avec KeeFox.

Comment ça marche ?

Grâce au "." devant le nom de domaine "dnsDomainIs" couvre les sous-domaines s'il y en a : toto.channel4.com tout comme www.channel4.com mais pas channel.com.

Si vous voulez couvrir le domaine channel4.com et toto.channel4.com (tous les sous-domaines) 2 solutions.

Solution en 2 temps :

if(dnsDomainIs(host, "channel4.com")) ||
   dnsDomainIs(host, ".channel4.com"))
 { return PROXY_UK; }

Solution avec la regex "shExpMatch" :

if(shExpMatch(host, "*channel4.com")) { return PROXY_UK; }

C'est plus court, une seule ligne.

Configurer votre navigateur

La plupart des navigateurs supportent un proxy.pac : Chrome, Firefox et Internet Explorer. Firefox permet de préciser un proxy.pac indépendemment du système ou bien au contraire de s'appuyer sur la configuration système tout comme Chrome.

Choisissez un chemin simple c'est à dire sans espace, pas trop long et en dehors d'un dossier système (évitez la racine de C:). Chez moi c'est d:\proxy.pac.

proxy-pac

Aller dans les options internet :

  1. Touche Win + R > inetcpl.cpl (ou "inetcpl.cpl ,4")
  2. Onglet Connexion > Paramètres réseau
  3. Tout décocher
  4. Cocher "utiliser un script de configuration automatique"
  5. Adresse : file://d:/proxy.pac

Attention : Internet Explorer ne supporte pas le stockage du proxy.pac en local (pourquoi et contournement) depuis la v11 semble-t-il, mais pourquoi utiliseriez-vous IE...

Pour Firefox aller dans les options > Avancé > Réseau > Paramètres. Saisir file://d:/proxy.pac :

proxy-pac-ff

Le bouton "actualiser" permet de recharger le proxy.pac quand vous modifier son contenu.

Pour vérifier la bonne prise en compte je vous conseille d'ajouter le site monip.org dans la liste des sites proxifiés pour vérifier que l'ip qui remonte quand vous allez sur ce site est bien celle du proxy et non la votre. Si l'IP est la votre alors soit votre proxy.pac est invalide (outil 1 - outil 2) soit votre proxy est transparent (par opposition à anonymisant).

Aller plus loin

Je ne vais pas étaler toutes les possibilité qu'offre le proxy.pac. Si vous avez besoin de faire une configuration un peu particulière :

Conclusion

Il existe pleins d'applications autour de cette solution de proxy.pac, à vous de les trouver. Personnellement j'utilise ce système pour éviter d'avoir à me connecter en VPN quand j'ai besoin d'accéder à certains sites. C'est plus rapide et

 

Auteur : Mr Xhark

Fondateur du blog et passionné par les nouvelles techno, suivez-moi sur twitter