• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Optimale Bot-Erkennung

S

sysop

Guest
Ich suche nach einer idealen Möglichkeit Bots auf der Seite zu identifizieren.
Nicht alle Bots geben sich über den User-Agent zu erkennen, Ip-Ranges scheinen mir auch nicht ideal, hat jemand einen Ansatz für mich.
 
Werbung:
Wie erkennst du einen Bot, der sich nach an seinem User-Agent zu erkennen gibt?
 
ganz simpel z.B. so (kleine Auswahl):
PHP:
$tofindbot = array('crawl', 'metaweb', 'msn.com', 'google', 'archiver', 'firefly', 'msnbo', 'slurp', 'inktomisearch', 'bot'); // bot erkennung
foreach($tofindbot as $element)
{
    if (stristr(getEnv("HTTP_USER_AGENT"),$element) == TRUE)
    {
        $ist_bot = 1; // zur weiteren Verarbeitung 
    }
}
Haken ist eben die Pfelege des Arrays, daher meine Frage ob es andere Ansätze gibt, ich habe keine finden können..
Mit Ip-Ranges verhält es sich genauso, das ist unzuverlässig und muss permanent gepflegt werden.
 
Werbung:
Oh, da ist ein nicht verloren gegangen. Ich meinte natürlich umgekehrt, wie erkennst du einen Bot der, sich eben nicht an seinem UA String erkennen gibt?
 
Eigentlich zielte meine Frage auf deine Aussage, dass einige Bots keine Kennung hätten. Wenn das so ist, dann sind die auch nicht erkennbar, ausser an ihrem "klick-Verhalten", aber ob es dafür einen Algorithmus gibt bezweilfe ich.

Wobei aber das zuende gedacht gar nicht so verkehrt ist. Ein Bot wird HTML Code nur einlesen und nicht die eingebetteten Bilder oder CSS nachladen. D.h. du kannst theoretisch aus dem Nichtladen von Inhalten Rückschlüsse ziehen, ob es ein Bot ist oder nicht.
 
Werbung:
Es gibt zwar solche Script wie das hier
PHP: Googlebot erkennen
aber eine 100%ige Erkennung ist imho nicht möglich. Wäre ja auch Unsinn wenn das möglich wäre: dann könnte ein Webseitenbetreiber ja den Bots andere Inhalte vorgaukeln als die menschlichen Besucher sehen. Sowas gilt als Irreführung und wird von Suchmaschinen (Google, Yahoo, Bing ..) auch bestraft.
 
Was man draus macht ist ja was anderes.
Ich möchte Bots schlicht aus meinem Besuchercounter eleminieren und ein einen eigenen Counter auslagern.
Mit meiner Arry-Variante komme ich schon relativ weit, einige Bots kommen aber auch z.B. mit einer Mozilla Kennung.

Es geht also nicht darum andere Seiten vorzugaukeln, sondern um eine halbwegs korrekte Zählung.

PS
Das verlinkte Script geht ja auch nur von header-Kennungen aus. Eine Datenbank mit IP-Adressen habe ich leider nicht finden können, sonst würde ich dahin ausweichen oder zusätzlich IP's abfragen.
 
Werbung:
Nun, zum analysieren habe ich die Zugriffe und die Zeiten auf den einzelnen Seiten mitgelogged. Da sind einige Clients, die innerhalb von 2 Sekunden 12 Seiten ansurfen.
Gehe ich davon aus, dass keine Aliens gelandet sind, halte ich das für ein zu hohe Geschwindigkeit um als User durchzugehen :-)
 
Dann geht funkioniert nur der Weg, den ich bereits beschrieben habe. Denn das werden keine regulären Bots sein, also wird es auch keine IP geben, die du benutzen kannst. Du musst also versuchen am Verhalten rausfinden ob es sich um einen Browser oder einen bot handelt.
 
Schaut wohl so aus, Danke jedenfalls.
Einen Großteil habe ich ja schon mit dem kleinen Array von oben erwischt, wenn dann mal 1-2 durchschlüpfen....
 
Werbung:
Hallo

Auch eine Möglichkeit, allerdings zähle ich bei den Bots dann wieder Leute, die JavaScript deaktiviert haben.
Und Google kommt mir sicher nicht in den Code.
 
Haken ist eben die Pfelege des Arrays, daher meine Frage ob es andere Ansätze gibt, ich habe keine finden können..
Bot-trap und Spidertrap sind solche Ansätze, dabei wird per robots.txt eine Datei oder ein Verzeichnis auf dissallow gesetzt. Hintergrund ist, das sich bösartige Bots meist nicht an die Einträge in der robots.txt halten und dann eine Datei aufrufen die gesperrt ist. Anschliessend wird eine neue .htaccess-Datei erzeugt mit dem neuen Eintrag und der IP-Sperre.

Ich mache es anders. Ich verwende eine .htaccess-Datei wo von vornherein schon mal alle zur Zeit bekannten UA eingetragen und gesperrt sind. Diese wird von mir von Zeit zu Zeit erweitert. Des weiteren wird die Geschwindigkeit gemessen mit der eine IP die Seiten scannt. Bei zu hoher Geschwindigkeit wird die IP für 10 Minuten gesperrt und der UA wird geloggt.

Auch dieses Vorgehen ist nicht perfekt, da es einige Bots gibt, von der ganz ekligen Sorte, die über mehrere IPs verteilt(wahrscheinlich gehackte Rechner) die Seite crawlen. Dagegen scheint wohl kein Kraut gewachsen zur Zeit. Muss man halt mit leben.
 
Werbung:
Danke, werde mir das auch mal ansehen.

Ich habe nun ca 1 Monat die Browserkennung und IP's mitgeloggt und da auch einige nette Werte bekommen. Ideal scheint wohl eine Mischform zu sein.
 
Ich kann ja mal schreiben wie die robots.txt und .htaccess aussieht, darf kopiert und verteilt werden, evtl. hilft es ja dem einen oder anderen seine Seite ein wenig sicherer zu machen:

Als erstes folgt die robots.txt, dort werden erst die Verzeichnisse aufgeführt, die nicht gecrawlt werden sollen, bei mir zum Beipiel die CSS- und JavaScript-Verzeichnisse, sowie die Datei werbung.html, die nur Werbebanner enthält, danach folgen die Suchmaschinen und Bots die sich an die robots.txt halten, aber deren Sinn in Frage gestellt werden muss.
Ich muss nicht in China oder Russland in deren Suchindex auftauchen. Wer das wünscht nimmt eben diese Einträge wieder raus. Selbiges gilt auch für andere Suchmaschinen, deren Sinn eher fragwürdig ist.

Danach folgt die .htaccess. Hier werden User-Agents aufgeführt, die sich partout nicht an die robots.txt halten wollen und daher von mir als bösartig eingestuft werden. Diese bekommen dann die Weiterleitung zu der Seite 403, Forbidden. Wer also von so einer Seite kommt, bekommt eine Fehlermeldung vom Server geliefert.

Noch eine Anmerkung. Wer seine Seite mit dem wunderbaren Tool Xenu auf gültige Links und Linkstruktur testen will, sollte solange die robots.text und .htaccess rausnehmen. Da dieses Tool auch von anderen genutzt werden kann um die Linkstruktur auszulesen, ist es natürlich gesperrt.

So, genug erklärt, hier zuerst die robots.txt

Code:
User-agent: *
Disallow: /ie/
Disallow: /js/
Disallow: /css/
Dissallow: werbung.html


User-agent: grub-client
Disallow: /

User-agent: grub
Disallow: /

User-agent: looksmart
Disallow: /

User-agent: WebZip
Disallow: /

User-agent: larbin
Disallow: /

User-agent: b2w/0.1
Disallow: /

User-agent: psbot
Disallow: /

User-agent: Python-urllib
Disallow: /

User-agent: NetMechanic
Disallow: /

User-agent: URL_Spider_Pro
Disallow: /

User-agent: CherryPicker
Disallow: /

User-agent: EmailCollector
Disallow: /

User-agent: EmailSiphon
Disallow: /

User-agent: WebBandit
Disallow: /

User-agent: EmailWolf
Disallow: /

User-agent: ExtractorPro
Disallow: /

User-agent: CopyRightCheck
Disallow: /

User-agent: Crescent
Disallow: /

User-agent: SiteSnagger
Disallow: /

User-agent: ProWebWalker
Disallow: /

User-agent: CheeseBot
Disallow: /

User-agent: LNSpiderguy
Disallow: /

User-agent: ia_archiver
Disallow: /

User-agent: ia_archiver/1.6
Disallow: /

User-agent: Teleport
Disallow: /

User-agent: TeleportPro
Disallow: /

User-agent: MIIxpc
Disallow: /

User-agent: Telesoft
Disallow: /

User-agent: Website Quester
Disallow: /

User-agent: moget/2.1
Disallow: /

User-agent: WebZip/4.0
Disallow: /

User-agent: WebStripper
Disallow: /

User-agent: WebSauger
Disallow: /

User-agent: WebCopier
Disallow: /

User-agent: NetAnts
Disallow: /

User-agent: Mister PiX
Disallow: /

User-agent: WebAuto
Disallow: /

User-agent: TheNomad
Disallow: /

User-agent: WWW-Collector-E
Disallow: /

User-agent: RMA
Disallow: /

User-agent: libWeb/clsHTTP
Disallow: /

User-agent: asterias
Disallow: /

User-agent: httplib
Disallow: /

User-agent: turingos
Disallow: /

User-agent: spanner
Disallow: /

User-agent: InfoNaviRobot
Disallow: /

User-agent: Harvest/1.5
Disallow: /

User-agent: Bullseye/1.0
Disallow: /

User-agent: Mozilla/4.0 (compatible; BullsEye; Windows 95)
Disallow: /

User-agent: Crescent Internet ToolPak HTTP OLE Control v.1.0
Disallow: /

User-agent: CherryPickerSE/1.0
Disallow: /

User-agent: CherryPickerElite/1.0
Disallow: /

User-agent: WebBandit/3.50
Disallow: /

User-agent: NICErsPRO
Disallow: /

User-agent: Microsoft URL Control - 5.01.4511
Disallow: /

User-agent: DittoSpyder
Disallow: /

User-agent: Foobot
Disallow: /

User-agent: WebmasterWorldForumBot
Disallow: /

User-agent: SpankBot
Disallow: /

User-agent: BotALot
Disallow: /

User-agent: lwp-trivial/1.34
Disallow: /

User-agent: lwp-trivial
Disallow: /

User-agent: BunnySlippers
Disallow: /

User-agent: Microsoft URL Control - 6.00.8169
Disallow: /

User-agent: URLy Warning
Disallow: /

User-agent: Wget/1.6
Disallow: /

User-agent: Wget/1.5.3
Disallow: /

User-agent: Wget
Disallow: /

User-agent: LinkWalker
Disallow: /

User-agent: cosmos
Disallow: /

User-agent: moget
Disallow: /

User-agent: hloader
Disallow: /

User-agent: humanlinks
Disallow: /

User-agent: LinkextractorPro
Disallow: /

User-agent: Offline Explorer
Disallow: /

User-agent: Mata Hari
Disallow: /

User-agent: LexiBot
Disallow: /

User-agent: Web Image Collector
Disallow: /

User-agent: The Intraformant
Disallow: /

User-agent: True_Robot/1.0
Disallow: /

User-agent: True_Robot
Disallow: /

User-agent: BlowFish/1.0
Disallow: /

User-agent: JennyBot
Disallow: /

User-agent: MIIxpc/4.2
Disallow: /

User-agent: BuiltBotTough
Disallow: /

User-agent: ProPowerBot/2.14
Disallow: /

User-agent: BackDoorBot/1.0
Disallow: /

User-agent: toCrawl/UrlDispatcher
Disallow: /

User-agent: WebEnhancer
Disallow: /

User-agent: suzuran
Disallow: /

User-agent: VCI WebViewer VCI WebViewer Win32
Disallow: /

User-agent: VCI
Disallow: /

User-agent: Szukacz/1.4 
Disallow: /

User-agent: QueryN Metasearch
Disallow: /

User-agent: Openfind data gathere
Disallow: /

User-agent: Openfind 
Disallow: /

User-agent: Xenu's Link Sleuth 1.1c
Disallow: /

User-agent: Xenu's
Disallow: /

User-agent: Zeus
Disallow: /

User-agent: RepoMonkey Bait & Tackle/v1.01
Disallow: /

User-agent: RepoMonkey
Disallow: /

User-agent: Microsoft URL Control
Disallow: /

User-agent: Openbot
Disallow: /

User-agent: URL Control
Disallow: /

User-agent: Zeus Link Scout
Disallow: /

User-agent: Zeus 32297 Webster Pro V2.9 Win32
Disallow: /

User-agent: Webster Pro
Disallow: /

User-agent: EroCrawler
Disallow: /

User-agent: LinkScan/8.1a Unix
Disallow: /

User-agent: Keyword Density/0.9
Disallow: /

User-agent: Kenjin Spider
Disallow: /

User-agent: Iron33/1.0.2
Disallow: /

User-agent: Bookmark search tool
Disallow: /

User-agent: GetRight/4.2
Disallow: /

User-agent: FairAd Client
Disallow: /

User-agent: Gaisbot
Disallow: /

User-agent: Aqua_Products
Disallow: /

User-agent: Radiation Retriever 1.1
Disallow: /

User-agent: Flaming AttackBot
Disallow: /

User-agent: Oracle Ultra Search
Disallow: /

User-agent: MSIECrawler
Disallow: /

User-agent: PerMan
Disallow: /

User-agent: searchpreview
Disallow: /

User-agent: HuaweiSymantecSpider
Disallow: / 

User-agent: Sosospider
Disallow: / 

User-agent: Yandex
Disallow: / 

User-agent: gigabot
Disallow: / 

User-agent: Speedy
Disallow: /

User-agent: findlinks
Disallow: /

User-agent:Ezooms
Disallow: /

User-agent: Baiduspider
Disallow: /

User-agent: 008
Disallow: /
    
User-agent: TurnitinBot
Disallow: /

User-agent: Cityreview
Disallow: /

User-agent: Yasni-Bot
Disallow: /

User-agent: MJ12bot
Disallow: /

User-agent: twiceler
Disallow: /

User-agent: sistrix
Disallow: / 

User-agent: Exabot
Disallow: /

User-agent: ScoutJet
Disallow: /

User-agent: Yeti
Disallow: /
 
Die .htaccess
Code:
order allow,deny
allow from all               
# BELONGS TO COPYSCAPE
deny from 212.100.254.105    

RewriteEngine On
RewriteBase /
 
# IF THE UA STARTS WITH THESE
RewriteCond %{HTTP_USER_AGENT}  ^(008.0.83|123peoplebot|aesop_com_spiderman|aihitbot|alexibot|backweb|bandit|batchftp|bigfoot)  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(black.?hole|blackwidow|blowfish|botalot|buddy|builtbottough|bullseye) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(cheesebot|cherrypicker|chinaclaw|collector|copier|copyrightcheck) [NC,OR]
RewriteCond %{HTTP_USER_AGENT}  ^(comodo|cosmos|crescent|curl|custo|da|diibot|disco|dittospyder|dle_spider|docomo|dotbot|dragonfly)  [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(drip|easydl|ebingbong|ecatch|eirgrabber|emailcollector|emailsiphon) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(emailwolf|erocrawler|exabot|eyenetie|ezooms|filehound|findlinks|flashget|flunky) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(frontpage|getright|getweb|go.?zilla|go-ahead-got-it|gotit|grabnet) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(grafula|harvest|hloader|hmview|httplib|httrack|humanlinks|ilsebot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(infonavirobot|infotekies|intelliseek|interget|iria|jennybot|jetcar) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(joc|justview|jyxobot|kenjin|keyword|larbin|leechftp|lexibot|lftp|libweb) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(likse|linkscan|linkwalker|lnspiderguy|lwp|magnet|mag-net|markwatch) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(mata.?hari|memo|microsoft.?url|midown.?tool|miixpc|mirror|missigua) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(mister.?pix|mj12bot|moget|mozilla.?newt|nameprotect|naver|navroad|backdoorbot|nearsite) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(net.?vampire|netants|netcraft|netmechanic|netspider|nextgensearchbot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(attach|nicerspro|nimblecrawler|npbot|obot|octopus|offline.?explorer) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(offline.?navigator|openfind|outfoxbot|pagegrabber|papa|pavuk) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(pcbrowser|php.?version.?tracker|pockey|propowerbot|prowebwalker) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(psbot|pump|queryn|recorder|realdownload|reaper|reget|true_robot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(repomonkey|rma|internetseer|sitesnagger|siphon|slysearch|smartdownload) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(snake|snapbot|snoopy|sogou|spacebison|spankbot|spanner|sqworm|superbot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(superhttp|surfbot|surveybot|asterias|speedyspider|suzuran|szukacz|takeout|teleport) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(telesoft|the.?intraformant|thenomad|tighttwatbot|titan|urldispatcher) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(turingos|turnitinbot|urly.?warning|vacuum|vci|voideye|voila|wget|whacker) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(libwww-perl|widow|wisenutbot|wwwoffle|xaldon|xenu|YoudaoBot|zeus|zyborg|anonymouse) [NC,OR]
 
# STARTS WITH WEB
RewriteCond %{HTTP_USER_AGENT}  ^web(zip|crawler|emaile|enhancer|fetch|go.?is|auto|bandit|clip|copier|master|reaper|sauger|site.?quester|whack)  [NC,OR]
 
# ANYWHERE IN UA -- GREEDY REGEX
RewriteCond %{HTTP_USER_AGENT}  ^.*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures).*$  [NC]
 
# ISSUE 403 / SERVE ERRORDOCUMENT
RewriteRule . - [F]
 
Werbung:
ich spiele schon länger mit dem gedanken spambots anhand von peripherie zu erkennen.
zeitsperren funktionieren ja schon ganz gut. so kann man z.b. messen wie lange ein formular ausgefüllt wird und bots, die es in unter einer sekunde schaffen, aussperren.

ein bot wird warscheinlich keine onkeyup oder mousemove events auslösen, daher würd ich es warscheinich mit dem mousemove event versuchen. setzt vorraus, dass der counter mit javascript nachgeladen wird.

ansonsten sind ip tables gängig, unterscheidung zwischen festen und dynamischen ips und botfallen.
 
ein bot wird warscheinlich keine onkeyup oder mousemove events auslösen, daher würd ich es warscheinich mit dem mousemove event versuchen. setzt vorraus, dass der counter mit javascript nachgeladen wird.
Ein Bot kann i.d.R. gar kein JS! Wie soll das funktionieren?
JS Event bedeuten ja meistens, dass etwas am Monitor passiert. Aber der Bot hat keinen Monitor, keine Maus, keine Interaktion. google hat zwar eine rudimentäre JS Erkennung eingebaut, weil so viele Leute ihre Inhalte mit AJAX einbauen, aber selbst das dürfte nur bei exakt definierten Rahmenbedingungen funktionieren
 
Zurück
Oben