Deblan blog

Tag #Privoxy

[Astuce] Contourner un bridage HTTP comme celui de Free

...et pas que d'ailleurs.

Si vous avez besoin de contourner un bridage quelconque sur un accès HTTP alors plusieurs dispositifs existent. Dans cet article, deux outils seront présentés et vous verrez qu'ils sont simples à mettre en place.

Avant toute chose, sachez que vous êtes responsable de vos actes, donc évitez de faire ça n'importe où, ça pourrait vous causer des ennuis :)

La première solution pourra être mise en place si vous possédez un serveur Linux. Il s'agit d'installer un proxy HTTP accessible uniquement en local et auquel vous serez connecté via une connexion SSH.

J'ai choisi de travailler avec privoxy et le serveur est sous Debian.

1. Installation de privoxy
$ su -
# aptitude update
# aptitude install privoxy
# aptitude clean

On va vérifier qu'il est en fonctionnement avec lsof. Sachez que privoxy écoute par défaut sur le port 8118.

# lsof -i :8118
COMMAND  PID    USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
privoxy 9064 privoxy    4u  IPv4 1544903      0t0  TCP localhost:8118 (LISTEN)

Si lsof ne retourne rien, vérifiez que le port est ouvert sur votre firewall et relancez le serveur :

# service privoxy restart
2. Ouverture de la connexion coté client

On va ouvrir une connexion SSH vers le serveur et créer un tunnel. Quand votre client effectuera une connexion TCP sur votre machine locale (port 8118), la requête sera transmise au serveur privoxy et ce dernier fonctionnera comme un relais.

2.1. Vous êtes sur Linux, BSD ou bien sur Mac

Dans un terminal :

$ ssh -NL 8118:localhost:8118 votre_serveur -l votre_login

Une fois la ligne de commande entrée, laissez le terminal ouvert.

2.2. Vous êtes sur Windows

Il faudra passer par un client comme Putty. Si vous utilisez Putty, suivez le tutorial suivant. Indiquez simplement "8118" à la place de "8887" et "6667".

3. Configuration du navigateur internet

La dernière étape consiste à configurer votre navigateur internet. Pour ce faire, rendez-vous dans la gestion du proxy et paramétrer le serveur localhost et le port 8118. Voici un exemple avec Firefox :

Proxy Firefox

Sachez qu'avec cette méthode, tout est chiffré entre vous et le serveur proxy. Elle est intéressante pour traverser un réseau susceptible de vous surveiller. L'ensemble des accès vers le web passera par ce proxy sauf si vous indiquez des exceptions (noms de domaines). Comme le trafic est chiffré, vous aurez nécessairement une perte de débit plus ou moins importante suivant votre machine, le serveur et le débit entre


La méthode suivante est intéressante dans le cas de Free. En effet, il n'est pas nécessaire de passer tout le temps dans le proxy mais seulement sur certaines pages. On va donc utilisez un service en ligne (autre type de proxy). J'ai choisi de travailler avec Proxfree car il a le mérite d'être gratuit et de faire le taf qu'on lui demande.

Vous avez maintenant deux solutions : vous rendre sur Proxfree et rentrer manuellement les informations ou bien automatiser tout cela.

De mon coté, je suis un flemmard et je n'ai pas envie de le faire manuellement. Mon objectif ici sera d'accéder à Youtube et contourner les restrictions de débit de Free (mon FAI).

1. Préparer votre navigateur

Pour continuer la manipulation, vous devrez installer le plugin Greasemonkey. Il est disponible pour Firefox, Chrome et un mec a même fait un plugin pour Internet Explorer. Pour rappel, Greasemonkey permet d'exécuter des scripts javascript sur les pages de son choix.

2. Configurer Greasemonkey

Note : Greasemonkey vous demandera quel éditeur de texte vous utilisez.

Une fois Greasemonkey installé, ajoutez-lui un nouveau script. Plusieurs paramètres vous seront demandés : indiquez "proxy_free" comme nom et comme namespace puis incluez les URL suivantes : http://www.proxfree.com/?proxy_it et http*://*youtube.*/watch*. Vous pourrez ajouter d'autres URL si vous le désirez. La seule obligatoire est http://www.proxfree.com/?proxy_it.

Une fois ces paramètres définis, il faudra placer le code suivant :

// ==UserScript==
// @name        proxy_free
// @namespace   proxy_free
// @include     http*://*youtube.*/watch*
// @include     http://www.proxfree.com/?proxy_it
// @version     1
// ==/UserScript==


if((document.location.href).toString().indexOf('proxy_it') === -1) 
{
	GM_setValue('get', document.location.href);
	GM_setValue('main_submission', 'PROXFREE');
	GM_setValue('pfserverDropdown', 'http://eu.proxfree.com/request.php?do=go');
	GM_setValue('allowCookies', 'on');
	GM_setValue('removeTitle', 'on');
	GM_setValue('pfipDropdown', 'FR-Rou');
	GM_setValue('removeScripts', 'on');
	GM_setValue('removeObjects', 'on');
	GM_setValue('noReferer', 'on');
	GM_setValue('noUseragent', 'on');

	var proxy = document.createElement('div');
	proxy.innerHTML = '<div style="position: fixed; top: 100px; left: 0; background: red; padding: 5px"><button id="proxy_it" onclick="document.location.href = \'http://www.proxfree.com/?proxy_it\'">PROXY</button></div>';
	document.body.appendChild(proxy);
}
else
{
	var form = document.getElementsByTagName('form')[0];
	var form_html = '';
	var fields = ['get', 'main_submission', 'pfserverDropdown', 'allowCookies', 'removeTitle', 'pfipDropdown', 'removeScripts', 'removeObjects', 'noReferer', 'noUseragent'];

	for(i in fields) {
		form_html += '<input type="hidden" name="'+fields[i]+'" value="'+GM_getValue(fields[i])+'" />';	
	}

	form.innerHTML = form_html;
	form.submit();
}
3. Tester que tout fonctionne

La dernière étape consiste à tester que Greasmonkey et le script fonctionnent bien. Pour ce faire, rendez-vous sur une page de visualisation de vidéo Youtube. Vous devriez voir une bouton rouge très moche tout à gauche de votre page. Cliquez dessus et attendez un instant. Ce script va automatiquement configurer Proxfree et vous rediriger (derrière le service) sur Youtube.

Enjoy :)