Autor Zpráva
JtjM
Profil
Dobrý den, mohl by mi někdo poradit, jak oddělit slušné roboty od těch spamovacích (neslušných)

Situace: na webu jsem implementoval ochranu, která banuje roboty (na základě intenzity jejich přístupu na server, atd. atd.) Celkem to slušně funguje, jenže se stane, že např. robot vyhledávacího serveru je podobně agresivní a spadne tak do banu.

Samozřejmě lze jej poznat z hlavičky, kterou posílá (user-agent). Moc se v tom nevyznám, ale předpokládám, že pro spamovacího robota není problém tuto hlavičku napodobit (takže by mi asi dělání vyjímek na základě hlaviček moc nepomohlo)

Poradil by mi někdo jakou metodu zvolit, abych tyto roboty nějak oddělil?

Děkuji
jenikkozak
Profil
JtjM:
Největší problém je asi ten, že neslušný robot se nemusí přiznat k tomu, že je robotem.
Dá se třeba nějaký soubor zakázat pomocí robots.txt a pak si tam počíhat na ty nevychovance, kteří tam vlezou.
Každopádně to chce zvážit, jestli snaha o odfiltrování robotů nezatěžuje server více než jejich přítomnost.
JtjM
Profil
jenikkozak:
Každopádně to chce zvážit, jestli snaha o odfiltrování robotů nezatěžuje server více než jejich přítomnost.
Zváženo to je, bez filtrace spamovacích robotů trvá serveru pár sekund než spadne. Filtrace celkem pomáhá, ale občas prostě do ni spadnou i standardní vyhledávací roboti, čemuž bych chtěl zabránit (když ne všem případům, tak alespoň co nejvíce případům)
Davex
Profil
JtjM:
Poradil by mi někdo jakou metodu zvolit, abych tyto roboty nějak oddělil?
Záleží na tom, jaký je podle tebe rozdíl v chování slušného a neslušného robota.
JtjM
Profil
Davex:
Slušný robot jde od odkazu k odkazu
Neslušný robot se do pár minut 5000x ptá na tu stejnou adresu (nebo zkouší x tisíckrát nesmyslně GET s sql injection, apod.) Prostě bez rozmyšlení zatěžuje server.
Davex
Profil
JtjM:
SQLi jde celkem snadno vyfiltrovat - stačí chytře detekovat obvyklá klíčová slova v adrese nebo parametrech. Pro zvláště otravné roboty se skripty mohou optimalizovat a použít kešování, aby se server zbytečně nezatěžoval stejnými požadavky. Bylo by to i užitečnější než přemýšlet nad rozlišováním robotů.
JtjM
Profil
Davex
Jenže on je právě problém v tom, co sem psal výše:

JtjM:
Prostě bez rozmyšlení zatěžuje server.


Neslušní roboti (nevím z jakého důvodu, jestli záměrně nebo jen proto, že nejsou konrolování nebo špatně naprogramování) se kromě pokusů o různé sql injections, apod. ptají x tisíckrát na základní adresu (nebo i na pod adresu: www_domena_cz nebo www_domena_cz/sekce, atd.) Žádná speciální klíčová slova, žádné speciální parametry - prostě standardní dotaz jako od normálního návštěvníka - jediné, v čem se liší, je rychlost a opakování dotazů. Problémem je, že se dají takto odlišit od standardních návštěvníků, ne však od slušných robotů, kteří se chovají vlastně podobně. Určitě by mě napadlo nějak kontrolovat celé dotazy a pak je porovnávat (moc rychle za sebou - vyloučení lidského návštěvníka, pořád ta stejná adreasa - vyloučení slušného robota), ale to už by se dostal k tomu, co píše jenikkozak:

jenikkozak:
Každopádně to chce zvážit, jestli snaha o odfiltrování robotů nezatěžuje server více než jejich přítomnost.

Tedy statisíce řádků v databázi a porovnávání IP vs celý adresový dotaz vs. čas (to už bude pro server asi hodně složité)

Vaše odpověď

Mohlo by se hodit

Příspěvky nesouvisející s webem budou odstraněny.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: