Accueil > Divers (et d’été) > Informatique > Scripts et outils maison > Bannir ou avertir les utilisateur d’un ISP particulier
Bannir ou avertir les utilisateur d’un ISP particulier
vendredi 4 janvier 2013, par Paul Courbis
Avec la censure de Free sur les publicités en ce début Janvier 2013, j’ai mis en place une configuration spécifique pour avertir les utilisateurs de ce FAI des pratiques discutables de leur fournisseur. Voici la méthode employée. C’est du « quick and dirty » mais cela fonctionne !
La méthode décrite fonctionne parfaitement avec Apache mais peut être adaptée pour de nombreux serveurs web.
Etape 1 : trouver les IPs du FAI concerné
Il faut pour cela trouver son numéro d’AS (autonomous system) puis lister les classes d’IP correspondand à cet AS.
Vous pouvez par exemple utiliser Huricane Electric (http://bgp.he.net). A partir du nom vous obtiendrez le ou les adresses (IPv4 et/ou IPv6), Voir cet exemple.
Puis à partir le l’IP de la machine pour une machine du réseau du FAI (exemple) en déduire que l’AS de Free est AS12322.
Continuez pour cela sur le site de Huricane Electric (http://bgp.he.net), dans le cas de Free c’est cette page) et vous obtenez la liste des IPs (V4 et V6) associées à ce prestataire.
Il est aussi possible d’utiliser une IP du FAI et d’interroger directement le site de Huricane Electric (http://bgp.he.net), pour Free cela donne ceci, de cliquer sur le numéros d’AS (AS12322) pour obtenir le même résultat.
Etape 2 : paramétrer votre serveur Internet
J’ai pour ma part choisit de rediriger les utilisateurs correspondant à ces adresses IPs vers une page de Warning si un cookie n’était pas activé dans le navigateur. J’ai fait cela à partir de « rewrite rules » Apache du type :
RewriteCond %{REMOTE_ADDR} ^62.4.0.[0-9]*$
RewriteCond %{HTTP_COOKIE} !warning_free.as=([^;]+)
RewriteCond %{REQUEST_URI} !/favicon
RewriteCond %{REQUEST_URI} !/NATURABUY
RewriteRule (.*) /warnings/warning_free.as.php?$1 [R=302,L,QSA]
RewriteCond %{REMOTE_ADDR} ^62.4.1.[0-9]*$
RewriteCond %{HTTP_COOKIE} !warning_free.as=([^;]+)
RewriteCond %{REQUEST_URI} !/warnings/
RewriteCond %{REQUEST_URI} !/favicon
RewriteRule (.*) /warnings/warning_free.as.php?$1 [R=302,L,QSA]
.../...
|
(liste complète ici).
J’ai alors crée deux scripts php :
/warnings/warning_free.as.php
<center>
<br>
<br>
<br>
<table border=1 bgcolor=lightblue width=400 cellpadding=20>
<tr><td>
<center>
<h1><font color=red>Merci de lire ceci</font></h1>
</center>
Votre fournisseur d'accès Internet a décidé de procéder à une censure des publicités présentes sur ce site pour certains de ses abonnés (voir par exemple <a href=http://www.lepoint.fr/high-tech-internet/avec-free-la-pub-sur-internet-c-est-fini-03-01-2013-1608325_47.php target=_blank>cet article</a>). Ce site est entièrement gratuit et ne peut continuer à exister que grâce aux revenus publicitaires.
<p>
Vous pouvez néamoins continuer à accéder au contenu en appuyant sur le bouton ci-dessous.
<p>
<center>
<form action=/warnings/enter.php method=post>
<input type=hidden name=cookie value=warning_free.as>
<?php
$query=$_SERVER["QUERY_STRING"];
echo "<input type=hidden name=query value='$query'>";
setcookie( 'test_cookie', 'merci la pub', 0, '/' );
?>
<input type=submit value="Consulter le site...">
</form>
</center>
<p>
<b>Si vous souhaitez que ce site continue à exister, merci d'accepter d'afficher quelques publicités, de faire un don via Paypal ou d'écrire à votre opérateur d'accès Internet pour lui faire part de votre mécontentement quant à ses méthodes...</b>
<p>
Pour toute question : <a href=mailto:censure.free@courbis.fr>écrivez-moi</a>. N'hésitez pas si vous voulez reproduire ce warning sur votre propre site !
<br><br>
<font size=-1> 2013 (c) Paul Courbis (http://www.courbis.fr)</font>
</td></tr></table>
|
/warnings/enter.php
<?php
$test = $_COOKIE['test_cookie'];
if ( "$test" == "" )
{
die( "Les cookies sont indispensables pour acceder au site..." );
}
if ( array_key_exists( 'cookie', $_POST ))
{
$cookie=$_POST['cookie'];
}
else
{
die( "Invalid data");
}
if ( array_key_exists( 'query', $_POST ))
{
$query=$_POST['query'];
}
else
{
die( "Invalid data");
}
if( "$query" == "" )
{
$query="/";
}
setcookie( $cookie, 'merci la pub', 0, '/' );
header( "Location: $query" );
?>
|
Voilà, c’est tout... Vous pouvez cliquer ici pour voir ce que cela donne...
Cela mériterait des améliorations/optimisations, mais ça fonctionne !
Soyez sympa, si vous utilisez cette méthode, faites un lien vers cette page !
Pour toute question, voir la rubrique « contact ».
Un message, un commentaire ?
Les spams donneront systématiquement lieu à dépôt de plainte. Les messages peu aimables ou comportant trop de fautes d'orthographe seront purement et simplement supprimés sans publication. Aucune obligation de publication ne pourra être opposée au webmaster, sauf éventuel droit de réponse dûment justifié.