IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Apache Discussion :

.htaccess et ip liste.txt


Sujet :

Apache

  1. #1
    Membre régulier Avatar de la_chouette
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 183
    Points : 121
    Points
    121
    Par défaut .htaccess et ip liste.txt
    Bonjour,

    Sur l'un de mes sites, je bloque certains pays dont US via apache et le mod géo... et en filtrant les bots GG/Y/MSN.

    Une exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^SN|NE|NG|CG|DE|CI|BJ|RU|CN|RU|US|EN|CA|KR$
    RewriteCond %{REMOTE_ADDR} !^(66\.249\.65.\202|207\.46\.13\.46|66\.249\.71\.237|67\.195\.112\.122|67\.195\.111\.170)$
    RewriteRule ^(.*)$ ban.php [L]
    Ceci fonctionne très bien mais pour la gestion au quotidien des bots cela reste un calvaire, j'ai donc trouver plusieurs listes recensent les ip des bots GG/Y/MSN sous forme de fichier txt:

    http://www.iplists.com/
    http://www.iplists.com/nw/

    Ma question est: Peut ton utiliser ses listes sous forme de fichier txt ou autre avec RewriteCond dans un htaccess ?

    Précision: Pour X raison je ne souhaite pas utiliser php et une db, je suis en mutualisé...

    Merci pour votre aide

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par la_chouette Voir le message
    Ma question est: Peut ton utiliser ses listes sous forme de fichier txt ou autre avec RewriteCond dans un htaccess ?
    Le plus proche c'est RewriteMap, si cela est possible (en "chaînant" les règles ? ou alors il faut que le programme traitant la requête ait accès aux variables d'environnement). Mais vu qu'elle ne peut pas être utilisée depuis un fichier .htaccess, c'est une impasse.

    Je ne vois pas de solutions avec Apache seul.

    N'y a-t-il pas moyen de se baser sur d'autres informations, qui sont éventuellement plus fiables (encore que ...) ? Résolution inversée (HostnameLookups, ce qui peut aussi être assez lourd) ou sur les entêtes ?
    Google doesn't post a public list of IP addresses for webmasters to whitelist. This is because these IP address ranges can change, causing problems for any webmasters who have hard coded them. The best way to identify accesses by Googlebot is to use the user-agent (Googlebot).
    Après faut voir comment fonctionnent les autres aussi.

  3. #3
    Membre régulier Avatar de la_chouette
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 183
    Points : 121
    Points
    121
    Par défaut
    Bonjour julp,

    Effectivement tu as raison impossible via apache seulement, donc je me suis rabattu vers php, un petit exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    <?php
    $ouvre=fopen("google.txt","r");
    while (!feof ($ouvre))
    {
    	$lecture = fgets($ouvre, 4096);
    	$explode = explode("/n", $lecture); 	
    	$ip_google = $explode;
    }
    fclose($ouvre);
     
    $ouvre=fopen("yahoo.txt","r");
    while (!feof ($ouvre))
    {
    	$lecture = fgets($ouvre, 4096);
    	$explode = explode("/n", $lecture); 	
    	$ip_yahoo = $explode;
    }
    fclose($ouvre);
     
    $ouvre=fopen("msn.txt","r");
    while (!feof ($ouvre))
    {
    	$lecture = fgets($ouvre, 4096);
    	$explode = explode("/n", $lecture); 	
    	$ip_msn = $explode;
    }
    fclose($ouvre);
     
    $country_code =  $_SERVER["GEOIP_COUNTRY_CODE"];
    $deny = array("SN", "TN", "TR");
    $ip = $_SERVER["REMOTE_ADDR"];
     
    if (in_array($country_code, $deny) && $ip != $ip_google && $ip != $ip_yahoo && $ip != $ip_msn)
    {
       header('Location: http://www.google.com/');
       exit();
    } 
    ?>
    Quand pense tu ?

  4. #4
    Membre régulier Avatar de la_chouette
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    183
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 183
    Points : 121
    Points
    121
    Par défaut
    Oups petite correction ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    function getUserIP()
    {
        if (!empty($_SERVER['HTTP_CLIENT_IP']))
        {
          $ip=$_SERVER['HTTP_CLIENT_IP'];
        }
        elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR']))
        {
          $ip=$_SERVER['HTTP_X_FORWARDED_FOR'];
        }
        else
        {
          $ip=$_SERVER['REMOTE_ADDR'];
        }
        return $ip;
    }
     
     
    $filename = 'google.txt';
    $str = file_get_contents($filename);
    $ip_google = explode ("\n", $str);
     
    $filename = 'yahoo.txt';
    $str = file_get_contents($filename);
    $ip_yahoo = explode ("\n", $str);
     
    $filename = 'msn.txt';
    $str = file_get_contents($filename);
    $ip_msn = explode ("\n", $str);
     
     
    $country_code =  $_SERVER["GEOIP_COUNTRY_CODE"];
    $deny = array("SN", "TN", "US");
    $visitor_ip = getUserIP();
     
    if (in_array($visitor_ip, $ip_google))
    {
    	# Ont laisse passer le googlebot
    }
    elseif (in_array($visitor_ip, $ip_yahoo))
    {
    	# Ont laisse passer le bot yahoo
    }
    elseif (in_array($visitor_ip, $ip_msn))
    {
    	# Ont laisse passer le bot msn
    }
    elseif (in_array($country_code, $deny))
    {
     
       # Ont redirige le visisteur
       header('Location: http://www.google.com/');
       exit();
    }

Discussions similaires

  1. Copier-coller des fichiers à partir d'un listing.txt
    Par Gizmil dans le forum Scripts/Batch
    Réponses: 13
    Dernier message: 05/05/2020, 12h49
  2. [Batch] Copier Fichiers A vers B si NON present dans liste.txt
    Par scotop dans le forum Scripts/Batch
    Réponses: 15
    Dernier message: 05/04/2013, 01h51
  3. Copier-coller des fichiers à partir d'un listing.txt
    Par Gizmil dans le forum Autres Logiciels
    Réponses: 0
    Dernier message: 21/09/2011, 15h23
  4. robots.txt / user agent / htaccess
    Par Invité dans le forum Langage
    Réponses: 2
    Dernier message: 25/07/2006, 10h58
  5. Liste exhaustive des paramètres du fichier .htaccess
    Par Christophe Charron dans le forum Apache
    Réponses: 3
    Dernier message: 09/02/2006, 17h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo