kostenloser Webspace werbefrei: lima-city


Crawler und Bots (IP-Bereiche) sperren

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    btausch

    btausch hat kostenlosen Webspace.

    Hallo
    ich habe eine HOmepage, die wird von (unerwünschten) Bots überrannt,
    zum Teil aus DE, USA, China, Japan, etc. ... die kommen 100 mal täglich und öfter


    ich möche von meiner Webseite also bestimmte Crwaler / Bots aussperren

    manche kommen immer mit ähnlicher IP-Adresse, da könnte ich doch deren IP-Block sperren ?
    ... wie macht man das ... EDIT: in der robots.txt


    deny from 144.76.22

    oder
    deny from 144.76.22.0/8


    habe das mit dem .0/8 in einem BSP gesehen, aber was macht das,
    nur von 144.76.22.0 bis 144.76.22.8 .... ??



    aber andere kommen mit sehr unterschiedlichen IPs, kann ich diese dann über user-agent sperren ?


    user-agent: trendictionbot
    disallow: /

    user-agent: AhrefsBot
    disallow: /

    wie muss der "String" nach user-agent: "Befehl" im HTTP_USER_AGENT] vorkommen ?
    ... genau oder irgendwie als Teilstring ?

    Bsp:

    [HTTP_USER_AGENT] => Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)

    würde das dann schon funktionieren (nur mit Teil-String)
    user-agent: Yandex
    disallow: /


    oder muss ich den "genauen" Name des Bots kennen ?

    ---> gibt es eine (aktuelle) Liste mit "bösen" Bots, die man aus-sperren sollte
    also eine Sammlung der IPs oder User-Agents von unerwünschten crwalern ?




    Beitrag zuletzt geändert: 29.8.2013 11:35:16 von btausch
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. nicht in der robots.txt machen,
    die wird (vorallem von bösen Bots) oft ignoriert

    in der .htaccess

    Order deny,allow
    Deny from 5.10.83.0/24
    Deny from 144.76.22.0/24
    Deny from 141.8.147.20


    oder in PHP, bevor irgend etwas ausgegeben wird
    die Variable $_SERVER['REMOTE_ADDR'] auf unerwünschte IP-Teile prüfen

    $block_ips = array( 
      '5.10.83', 
      '144.76.22', 
      '141.8.147.20',
    ); 
    
    $userip = $_SERVER['REMOTE_ADDR']; 
    
    foreach($block_ips as $bip) { 
    
    if ( strpos($userip, $bip) !== false )  { 
    print "<p>blocked</p>; 
    exit; 
    }


    anstatt strpos() kann man evtl. auch ein preg_match oder anderes Verwenden,
    um zu Prüfen, ob die User-IP einen der zu blockenden IP-Bereich entält.

    strpos() ist etwas buggy ... weil auch 188.5.10.83 "geblockt" wäre
    obwohl man ja "nur" 5.10.83.0 bis 5.10.83.255 blocken will ...
    also müsste man auch testen, ob die User-IP mit dem geblockten Bereich beginnt,
    nicht nur, ob der Bereich "enthalten" ist ... also wohl besser preg_match()
    aber den passenden pattern dafür hab ich jetzt grad auch nicht auf der Pfanne
    :)=

  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!