Bot detektálás

Szeretném valamennyire detektálni, hogy melyik oldalletöltések bot-ok által generáltak és melyikek emberek által generáltak.

Van ugyan listám, hogy melyikek bot-ok: pl. Googlebot stb. User-Agent header alapján. Viszont van amikor valaki Googlebot-nak hazudja magát. Vag yolyan is szokott lenni, hogy egy bot normál böngészőnek hazudja magát.

Van valami ötletetek arra, hogyan lehetne detektálni mondjuk a botok többségét valami más módszerrel?

Hozzászólások

Szerintem még az IP tartományokkal lehet operálni, meg valamilyen ip-to-country listához hasonlítani. Nálunk a detektálás, főleg tiltás alapját (az eszetlen crawler, jajj csak átnézzük idióta botokat) a User-Agent adja. Ez nagyjából jól megy, komolyan érezhető terhelést sikerült megfogni és a fogyasztás miatt még pénztárca barát is.

Van pl. olyan is, amikor bot User-Agent-el bekérdeznek, majd egy valósnak tűnő böngészővel bekérnek megint. Bár ha alaposabban megnézem a User-Agent-et sejthető, hogy ez is valami bot féle. Pl.: "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.0.12195 Safari"

Ezeket is jó lenne valahogy bot-nak minősíteni.

1) keress git repo-t, hátha vki már listázza a user agenteket v. IP range-eket

2) nyiss te egy git repo-t, hogy listázd a user agenteket, IP range-eket

Nem tudom mire kell, de ha tiltani akarsz rosszindulatú botokat, és tisztán tartani a logokat, akkor én az alábbit csinálom.
A logok alapján kigyűjtöttem olyan lekéréseket amik gyakoriak, de tudom hogy nincs olyan url egyáltalán és egyik oldalon sem amiket hosztolok.
Pl.: /wp-login, /admin.php, /phpmyadmin, /dump.sql stb.
Csináltam ezekre egy fail2ban filtert és ha 1 ilyen lekérés is érkezik bannolja is az IP-t.
Persze ezzel a jóindulatú botokat nem fogod kiszűrni, mert ők valós url-eket kérnek le.
 

Több szempont is van, de a legfontosabb, hogy ez egy szótár oldal. Itt a nem talált szavakat pótoljuk toplisták alapján. Viszont eljutottunk odáig, hogy a toplista tetején bot-ok által keresett szavak / kifejezések vannak.

Most átnézve a logokat és visszakeresgélve az ip címek alapján domaineket stb., kb. 50-ből 1 a valódi emberi keresés.

A lényeg azokat a szavakat szeretném pótolni, amik valóban fontosak az emberekenek és nem a bot-oknak. 

Szerkesztve: 2021. 07. 02., p – 18:48

Ha az "apache bad bots" kifejezésre rákeresel, sok listát találsz konkrét configgal.

Van IP lista és User-Agent alapú. Én az utóbbit használom, elég hatékony.

Alapvetően azzal tudsz botot detektálni, ha olyan dolgot futtatsz, ami böngészőben tud futni és erőforrás igényes, tele van a Github ilyen Javascript cuccokkal, különféle minőségben persze, meg kell nézni, hogy neked mi a célod és ahhoz mi a legjobb.

Felhasználóként  messziről kerülöm az olyan oldalakat, amik értelmetlenül terhelik a rendszeremet, akár a készítő lustasága, akár a DRM/bot-detektálás/scrapelés akadályozása/aktuális zöldség ürügyén.

A lentebb említett Google recaptcha ennél sokkal jobb megoldás.

Psszt, elárulom az IP-címemet: 192.168.0.14

Felhasználóként  messziről kerülöm az olyan oldalakat, amik értelmetlenül terhelik a rendszeremet, akár a készítő lustasága, akár a DRM/bot-detektálás/scrapelés akadályozása/aktuális zöldség ürügyén.

Szíved joga kerülni.

A lentebb említett Google recaptcha ennél sokkal jobb megoldás.

Viszont eléggé szépen átengedi a botokat.

google recaptcha?

főleg, ha szótárhoz kell

4 és fél éve csak vim-et használok. elsősorban azért, mert még nem jöttem rá, hogy kell kilépni belőle.

elsőnek tényleg fel kell ismerni a jelzőlámpákat, de utána semmit se kér. még a pipát se, hogy nem vagy robot

4 és fél éve csak vim-et használok. elsősorban azért, mert még nem jöttem rá, hogy kell kilépni belőle.

Szerkesztve: 2021. 07. 04., v – 18:58

Én ezt használom, ezzel vagyok a legelégedettebb. 

1-2 havonta készítek TOP listát és én is megpiszkálom őket, de sajnos nem díjazza az internetszolgáltatóm:)

"ha valakire rá kiabálunk, hogy rendszergazda akkor az is - szerződés, fizetés csak az átkos időkben kellett" 

és 100 éve még boszorkányt is égettek 

Egy ecommerce sitenál hónapok óta szívok a botokkal, mert a kriptósok nonstop "szívatják" a keresőt, terméklistázót (állandóan 1030-as kártyákat akarnak venni, emiatt minden másodpercben keresnek rá, listázzák, stb).

 

Sok, mások által fentebb leírt dolgon kívül, én most ilyennekkel próbálkozom a botok, scraperek ellen:

- adott oldalra 1-1 XHR hívást betenni, és ha adott IP-ről nem hívja meg a browser/bot/bármi, akkor a látogató tuti nem user (vagy user, de esetleg adblockal)

- elasticsearch-ben gyűjtöm a logokat, és percenkénti aggregálásnál ha 120 percen belül több mint 100 olyan perc van ahol volt lekérés, akkor a látogató az scraper (nyilván lehet játszani a megfelelő arányokkal)

- ha 1-1 IPről csak dinamikus tartalmat kérnek le (php pl), de statikusat nem (képek, css), akkor szintén scaper

 

Nyilván vannak false pozitív találatok is, de ilyenkor finomítok a szabályokon.

 

Ami eddig nem vált be:

- nyilváson adatbázisok - ritkán frissülnek

- cloudflare 'know bots' - ez kb google és bing botok kívül semmire nem való már

- re-chacpa - nem userbarát

 

 

Ugyanakkor másik oldalról nézve egy jól megírt selenium scriptet baromi nehéz kiszűrni :)

Általában úgy szoktam kivédeni az ilyen kereső piszkálókat, hogy ahova a post megy, megnézem, hogy referer szerint a weboldalról jött-e? Ha nem, akkor direktben postol ezerrel, tehát 403-t adok neki.
Aztán lehet figyelni a forrás IP-t, ami ha 5 másodpercen belül keres, szintén 403-t kap.

Hibás route esetén ha a kért url tartalmazza a szokásos wp- .env .sql dump backup dev test v2 töredékeket, akkor 404 die(), még a szokásos hibaoldal render előtt és így logokba se kerül. Bosszantó, de legalább erőforrás nem sok megy rá.

Minden route csak a tényleg szükséges methodokat engedi. Fontosabb lapok engedik a HEAD methodot, botok egy részének az is elég.