Autor | Zpráva | ||
---|---|---|---|
Sylar Profil |
Zdravím,
pro detekci robotů mám na stránce tabulku s jejich jmény a při přístupu kohokoliv na stránku kontroluji v USER_AGENTovi zda-li neobsahuje jméno nějakého robota z databázové tabulky, to funguje. Problém je když mi přijde robot, který se ohlásí takto Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10 Je ale možné tyto roboty vůbec detekovat? Jak? |
||
Chro Profil |
#2 · Zasláno: 16. 6. 2012, 12:51:37
Jedině provedením analýzy ze záznamů. Když user agent vázaný na určitou IP navštíví rychle po sobě několik různých stránek a doba setrvání na každé konkrétní stránce bude menší jak 2 (3?) sekundy, může to být robot.
|
||
Jenicek Profil |
co udělat zpětnou vazbu na IP?
například ping IP + port 3306 (mysql)... zapsáním do tabulek a regulaci bych udělal podobně jak píše Chro... |
||
Sylar Profil |
#4 · Zasláno: 16. 6. 2012, 13:28:36
Chro:
jj takové řešení už mě také napadlo, ale nepřijde mi úplně efektivní. Zase bych nerad aby kontrola robota/uživatele trvala déle než načtení celé stránky. |
||
Jenicek Profil |
#5 · Zasláno: 16. 6. 2012, 15:17:07 · Upravil/a: Jenicek
ping port trvá sotva sekundu :)
a ip by sis mohl zapisovat do statistik tak by se ping prováděl jen 1x a pouze pokud by se pohyboval "rychle" po webu :) $pinkam = fsockopen("$ip", 3306, $errno, $errstr, 1); if (!$pinkam)echo"nejsem robot, hurá :D"; |
||
had Profil * |
#6 · Zasláno: 16. 6. 2012, 16:27:51
co když by někdo zobrazil Váš web ze serveru s veřejnou IP adresou...? Nebo poskytovatel internetu bude provozovat mysql databázi na hlavním serveru, přes který dostanu přidělenou IP když jdu na internet??? odradíte zbytečně návštěvníka... jestli vám jde o ochranu formulářů před spamem, máme tu zaručené kalibry...
|
||
Sylar Profil |
#7 · Zasláno: 16. 6. 2012, 18:14:29
tak i web lze načíst za sekundu :) ale rozumím. Ještě tedy zůstává otázkou co znamená "procházet web rychle", protože když nyní koukám do statistik, naražím na roboty, kteří se po stránce pohybují 5 sec./stránka, což už není zase tak krátký interval a může to být i uživatel. Nicméně vychází mi, že je asi lepší spíše uživatele do statistik nezapočítat v domění, že jde o robota, než-li započítat robota, protože vzhledem k tomu, že sleduji i pohyb uživatele/robota po stránce, tak robot (většinou) navšítí více stránek a tím pádem udělá ve statistice i větší nepořádek.
had: odradíte zbytečně návštěvníka... já ale přeci neplánuji bránit robotovi či návštěvníkovi přístup na web nebo komukoliv znepříjemňovat pobyt, pouze chci zjistit o koho se jedná, abych mohl vést co nejpřesnější statistiky. Ohledně IP adres je pravda co říkáte, i s IP adresami může být kříž, proto mne také zajímá jestli jsou ještě nějaké další, lepší možnosti. |
||
ShiraNai7 Profil |
Sylar:
Můžeš zaznamenávat IP adresu a User-Agenta. Základní detekci provedeš pomocí User-Agenta. Pokud se nejedná o známého robota (User-Agent se nechytne), můžeš robota detekovat na základě počtu požadavků za určitý čas. 100% to samozřejmě není. Udělat robota co bude procházet více stránek najednou napřeskáčku není vůbec problém.. potom by požadavky nebyly dost časté na spolehlivou detekci. Jenicek: > $pinkam = fsockopen("$ip", 3306, $errno, $errstr, 1); > if (!$pinkam)echo"nejsem robot, hurá :D"; Proč by robot na své IP provozoval MySQL server přístupný z internetu a ještě na výchozím portu? Nesmysl. |
||
Marek88 Profil |
#9 · Zasláno: 16. 6. 2012, 21:34:46
Další možnost je pomocí javascriptu. Roboti ho snad všichni nemají a uživatelé naopak ano. Po načtení stránky JS odešle požadavek na server, kde se zaznamená, že daný návštěvník není robot.
|
||
Jenicek Profil |
#10 · Zasláno: 16. 6. 2012, 22:00:56
ShiraNai7:
„Proč by robot na své IP provozoval MySQL“ to byl jen příklad... klidně může sledovat jiný port... :) (21, 22, 443, 990... atd) napadá mě ještě, monitorovat stažení robots.txt |
||
ShiraNai7 Profil |
Jenicek:
Robot nemá důvod mít otevřený žádný port na své IP. Proč by to někdo dělal? Na základě tohodle nic nepoznáš. I kdyby tam něco bylo tak to nepoukazuje na robota. Můžou tam být nějaké služby routeru, forwardnuté porty, atd. „napadá mě ještě, monitorovat stažení robots.txt“ No "oficialni" roboti ho snad stahovat budou. Ostatni - napr. spamboti ani omylem :) |
||
Sylar Profil |
#12 · Zasláno: 17. 6. 2012, 10:37:15
Marek88:
spíše než kontrolovat dostupnost JS, mne napadá na začátek stránky umístit skrytý odkaz, který by viděli pouze roboti a po kliknutí na něj by se infrormace o robotovi zapsala do databáze. Pouze nevím jak přesně se chová robot když vejde na stránku, začne klikat na všechny odkazy od prvního po poslední nebo jak se mu zachce? Dále by mne zajímalo jak je to s indexací stránky, pokud bude stránka /test/ automaticky přesměrovávat na /home/ zaindexuje si robot /test/ nebo rovnou až /home/ ? Pokud by si totiž zaindexoval /test/ mohli by na tuto stránku, která by na naší stránce byla přístupná pouze robotům a detekovala by je, přes vyhledávače vstoupit i reální uživatelé a vše by přišlo vniveč. napadá mě ještě, monitorovat stažení robots.txt ... napadlo mne to samé jak píše ShiraNai7. Seznam, google, ostatní na robots.txt dle mého bohužel kašlou |
||
Marek88 Profil |
#13 · Zasláno: 17. 6. 2012, 11:43:26
Sylar:
„mne napadá na začátek stránky umístit skrytý odkaz, který by viděli pouze roboti a po kliknutí na něj by se infrormace o robotovi zapsala do databáze“ Možné to je, ale připadá mi, že se spoléháš na to, že každý robot je vyhledávač, který chce zaindexovat celý tvůj web a navíc pěkně postupně. Co když se na tu stránku robot jednou podívá, zjistí, že tam nic není a příště už tam nepůjde (přijde z jiné IP a ty ho nepoznáš). Nebo to bude robot se speciální funkcí. Třeba kamarád psal robota na zakázku pro jeden eshop. Ten robot obcházel konkurenční eshopy a hledal nové zboží a změny cen (a možná ještě něco dalšího). Přitom procházel adresy, které měl uložené a "klikal" jen na odkazy, které odpovídaly novým produktům. Takového robota bys taky nepoznal. Ten JS se mi jeví jako nejspolehlivější. |
||
Časová prodleva: 12 let
|
0