PHP Bots Zugriff auf Datei verwehren!

Belee

Lt. Commander
Registriert
Dez. 2006
Beiträge
1.518
Hallo

Folgende Script scheint zu funktionieren nur gefällt mir der Header nicht,
sollte ich lieber einen kompletten Header Satz senden und dann mit
exit(); das Script beenden oder reicht das so?

Mir geht es darum das ich Bots Allgemein das Abarbeiten eines Scriptes verbieten
möchte. Das Scritp soll sich also sofort beenden wenn ein Bot erkannt wird.
Habs auch schon mit IP-Adressen versucht doch einige ändern diese ständig, kann
man also vergessen.

Dann noch eine Frage, einige Bots haben als String einfach nur "-" wie soll man diese
filtern? geht nicht oder?

PHP:
    function is_bot($bot_string) {
 
      $bots = array('Voyager','Jakarta','Socialradarbot','PycURL','PaperLiBot','DotBot','TweetmemeBot','Slurp', 
      'YandexBot','TweetedTimes','Twitterbot','Summify','bingbot','MetaURI','EQENTIA-BOT','Birubot','ceron.jp',
      'Googlebot'
      );
    foreach($bots as $bot){
     if(strpos("$bot_string",$bot)!==false)
      return 1;
    }
      return 0;
    }
    if(is_bot($_SERVER['HTTP_USER_AGENT'])) {
 
     die(header("HTTP/1.1 403 Forbidden"));
    }
 
Es steht doch oben was ich damit bezwecken will, was ist daran unverständlich?

Die robots.txt wird von sehr vielen Bots ignoriert.
 
Das Vorgehen finde ich sehr merkwürdig. Normalerweise macht man sowas über htaccess, das ist viel einfacher in der Handhabung.
 
Dir ist sicherlich nicht entgangen das ich das NUR bei einem Script benötige? und was ist da merkwürdig dran? in der htaccess soll das einfacher sein? das ist Humbug. Ausserdem wird die htaccess im Gegensatz zu dem Scritpt da open IMMER geladen, das Script aber nur bei Bedarf, warum also soll ich mir die htaccess mit Sachen zu müllen die nicht ständig benötigt werden? das musst du mir jetzt erklären. :)
 
Belee schrieb:
in der htaccess soll das einfacher sein? das ist Humbug. Ausserdem wird die htaccess im Gegensatz zu dem Scritpt da open IMMER geladen, das Script aber nur bei Bedarf, warum also soll ich mir die htaccess mit Sachen zu müllen die nicht ständig benötigt werden? das musst du mir jetzt erklären. :)
weil die htaccess den Sinn hat, den Zugriff auf bestimmte Dateien z.B. zu reglementieren.

ehrlich gesagt verstehe ich auch nicht ganz, was du willst. Ein wenig mehr Beschreibung, ein bisschen zusammenhängender Text und wir wüssten wenigstens, was du vorhast.
Wenn sich ein Bot für einen Browser ausgibt, dann kannst du das sowieso nicht erkennen, du wirst mit so etwas nur die "netten Bots" erkennen, jemand der nicht will, dass du ihn als Bot erkennst, den wirst du auch nicht blockieren können.
 
Gutartige Crawler werden auch den Robots Exclusion Standard (robots.txt) beachten.
Bösartige Crawler (z.B. E-Mail Harvester), die dieses eh ignorieren, geben sich sowieso meist als Browser aus. Da bringt dir auch so ein php Script herzlich wenig.

Und wie ice-breaker schon sagt, wird die Dateireglementierung in der htaccess gesteuert, und warum sollte man sowas deaktivieren wollen?
 
@Belee
Eben nicht.
Die Crawler mit fragwürdigen Motiven werden sich sicher nicht als solche präsentieren. Das ist ja so, als ob ein Verbrecher es sich auf die Stirn schreiben würde.
 
Mir geht es nicht um fragewürdige Bots sondern um alle. In der robots.txt eine Datei sperren klappt nicht bzw. es scheint das sich nur Google daran hält, Yahoo z.B. liesst die gesperrte Datei trotzdem ständig aus, andere sowieso.
Wenn du sagst, das man fragewürdige Bots eh nicht erkennen kann, was also bringt es dann den Filter in die htaccess unter zu bringen?
Wie willst du überhaupt was schützen wenn die doch alles ignorieren? alles sensible eine Ebene höher auf den Webspace?

Ich habe auch wenn es für euch merkwürdig ausschaut Erfolg mit der Methode von mir, ich habe das jetzt paar Tage beobachtet und einen Counter dahinter programmiert, und dieser ist leer. Durch robots.txt aber haben die Bots den Counter die ganze Zeit hochgezählt also wurde Disallow ignoriert.
Die htaccess ist keine Option für mich, weil ich der Meinung bin das sowas da nichts zu suchen hat.
Ausserdem, Ihr könnt nicht immer davon aussgehen das jeder htaccess Option hat.
 
Du kannst NIEMALS verhindern, dass Bots eine Seite indexieren. Völlig egal wieviele Filter du einbaust und auf welche Weise du es tust. Würdest du dich mit dem Web auskennen wüsstest du das.
 
Code:
Disallow: /contop/topchannelrating.inc.php
Disallow: /radiopoll/radiopoll.inc.php

also wenn ich das in deiner robots.txt schon sehe :rolleyes:
Daten die nicht aufgerufen werden können sollen (gerade Include-Dateien) legt man nicht in den aus dem Web erreichbaren Pfad (httpdocs) !
Du hast sicherlich noch einen Files-Ordner oder ähnliches in dem solche Dateien besser aufgehoben sind.
 
Ach Matrix, es geht mir nicht um das indexieren. Wo steht was davon? es geht darum das Bots eine Datei nicht ausführen sollen. Diese hat nichts was indexiert werden kann. Aber lassen wir das denn es bringt einfach nichts, und wenn du schon mit "wenn du dich mit dem Web auskennen würdest" anfängst, dann habe ich eh kein Bock mehr darauf.

Ja und genau das war ja auch die Frage 2 Etagen höher. Das ist ja auch testweise so! @matrix

Ausserdem CB macht es auch so:
Disallow: /forum/search.php
 
Zuletzt bearbeitet:
Belee schrieb:
Ausserdem CB macht es auch so:
Disallow: /forum/search.php

nicht CB macht es so, sondern die Forensoftware vBB, und jeder der mal in den Quellcode reingeschaut hat, wird die wahre Metrik für Programmcode kennenlernen: WTFs pro Minute
 
Was willst du denn jetzt schon wieder damit sagen? :) was hat denn jetzt die WTFs pro Minute mit dem Thema hier zutun? und das ich Scripte über Root schieben soll/kann ist mir klar doch das schützt nicht vor indexierung @Ice...Ice...Baby :D auch nicht gegen Bot Zugriffe, also fürn Hintern. Denn eine Include wird egal wo sie sich befindet includiert, die kann auch neben der Titanic am Meeresgrund liegen. Also hätte ich was davon wenn ich sie übern Root ablege? wenn du aber meinst du kannst eine include von mir die du siehst oder gesehen hast aufrufen, dann möchte ich das sehen ;) vll. wenn du meinen PHP-Interpreter lahmlegst aber sonst? doch ich lasse mich des besseren belehren, zeig mir das mal.
Obwohl, das ist auch nicht das Thema, sondern das ich Bots den Zugriff auf eine Datei verwehren will - immer noch. Nicht das sie sie nicht indexieren sollen denn da ist nix zum indexieren sondern das sie die Finger von der Datei lassen sollen...du meinst das geht nicht? nur das interessiert mich.
 
Ich sehe ehrlich gesagt wenig Chancen darin, von vorn herein zuverlässig zwischen menschlichen Benutzern und Bots zu unterscheiden.

Um was für eine Datei handelt es sich, auf die Bots keinen Zugriff haben sollen? Schließlich gibt es auch einige Routinen, um nicht-menschliches Verhalten einigermaßen zuverlässig festzustellen. Aber spätestens dann, wenn Menschen dafür bezahlt werden, bot-ähnliches Verhalten an den Tage zu legen, hat man auch damit verloren.
 
Wieso .HTACCESS Optionen? Wenn du ein FTP-Zugang oder einfach nur einen Apache-Server hast, lädst du die Datei in den Ordner.

Gerade wenn du nicht willst, das bestimmte Skript ausgeführt werden, dann wäre eine Komplett-Sperre der Datei in der .htaccess doch auch DIE Lösung? Ich blockiere alle Zugriffe auf alle PHP-Dateien, bis auf "index.php"; und dieses weiß mit den anderen umzugehen ;)
Jeder andere Versuch endet mit einer 403-Meldung :)
 
@eagle..

Das hört sich gut an, wie genau stellst du das an und funktioniert das auch mit inline Dateien? also includes?
 

Ähnliche Themen

Zurück
Oben