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 la page GoogleSafeBrowsing à partir du nom de la machine pour une machine du réseau du FAI (exemple), et en déduire que l’AS de Free est AS:2322.

Rendez vous ensuite 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&egrave;s Internet a d&eacute;cid&eacute; de proc&eacute;der &agrave; une censure des publicit&eacute;s pr&eacute;sentes sur ce site pour certains de ses abonn&eacute;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&egrave;rement gratuit et ne peut continuer &agrave; exister que gr&acirc;ce aux revenus publicitaires.
<p>
Vous pouvez n&eacute;amoins continuer  &agrave; acc&eacute;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 &agrave; exister, merci d'accepter d'afficher quelques publicit&eacute;s, de faire un don via Paypal ou d'&eacute;crire &agrave; votre op&eacute;rateur d'acc&egrave;s Internet pour lui faire part de votre m&eacute;contentement quant &agrave; ses m&eacute;thodes...</b>
<p>

Pour toute question : <a href=mailto:censure.free@courbis.fr>&eacute;crivez-moi</a>. N'h&eacute;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 ?

modération a priori

Ce forum est modéré a priori : votre contribution n’apparaîtra qu’après avoir été validée par un administrateur du site.

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

ipv6 ready ipv6 test
Suivre ce site :
Recommander cette page :
Bookmark and Share
Traduire :