Jak rozpoznać Web-crawlera?

Jak mogę odfiltrować hity z webcrawlerów itp. Trafienia, które nie są ludzkie..

Używam maxmind.com aby zażądać od IP miasta.. Nie jest to całkiem tanie, jeśli muszę płacić za wszystkie hity, w tym webcrawlers, roboty itp.

Author: ajreal, 2011-12-06

6 answers

Istnieją dwa ogólne sposoby wykrywania robotów i nazwałbym je "grzecznymi / pasywnymi" i "agresywnymi". Zasadniczo musisz dać swojej stronie internetowej zaburzenia psychiczne.

Grzeczny

Są to sposoby, aby grzecznie powiedzieć crawlerom, że nie powinni indeksować Twojej witryny i ograniczyć częstotliwość indeksowania. Uprzejmość jest zapewniona przez roboty.txt plik, w którym określasz, które boty, jeśli w ogóle, powinny mieć prawo do indeksowania Twojej witryny i jak często Twoja witryna może być czołgał się. Zakłada to, że robot, z którym masz do czynienia, jest uprzejmy.

Agresywny

Innym sposobem, aby utrzymać boty z dala od witryny, jest bycie agresywnym.

User Agent

Niektóre agresywne zachowania obejmują (jak wcześniej wspominali inni użytkownicy) filtrowanie ciągów user-agent. Jest to prawdopodobnie najprostszy, ale także najmniej niezawodny sposób na wykrycie, czy jest to Użytkownik, czy nie. Wiele botów ma tendencję do fałszowania agentów użytkowników, a niektóre robią to Z uzasadnionych powodów (tj. chcą tylko indeksować treści mobilne), podczas gdy inni po prostu nie chcą być identyfikowani jako boty. Co gorsza, niektóre boty oszukują legalnych / uprzejmych agentów botów, takich jak agenci użytkowników google, microsoft, lycos i innych robotów, które są ogólnie uważane za uprzejme. Poleganie na user agencie może być pomocne, ale nie samo w sobie.

Istnieją bardziej agresywne sposoby radzenia sobie z robotami, które oszukują agentów użytkowników i nie przestrzegają Twoich robotów.plik txt:

Bot Trap

Lubię myśleć o tym jako o "pułapce na muchy Wenus", a to w zasadzie karze każdego bota, który chce z Tobą pogrywać.

Pułapka na boty jest prawdopodobnie najskuteczniejszym sposobem na znalezienie botów, które nie przylegają do Twoich robotów.plik txt bez faktycznego upośledzenia użyteczności witryny. Tworzenie pułapki botów zapewnia, że przechwytywane są tylko boty, a nie prawdziwi użytkownicy. Podstawowym sposobem na to jest skonfigurowanie katalogu, który specjalnie oznaczasz jako Wyłączony w swoich robotach.txt plik, więc każdy robot, który jest uprzejmy nie wpadnie w pułapkę. Drugą rzeczą, którą robisz, jest umieszczenie "ukrytego" linku ze swojej witryny do katalogu pułapki botów (zapewnia to, że prawdziwi użytkownicy nigdy tam nie pójdą, ponieważ prawdziwi użytkownicy nigdy nie klikają niewidzialnych linków). Na koniec blokujesz dowolny adres IP, który trafia do katalogu pułapki bota.

Oto kilka instrukcji, Jak to osiągnąć: Utwórz pułapkę botów (lub w Twoim przypadku: pułapkę PHP ).

Uwaga: oczywiście, niektóre boty są wystarczająco inteligentne, aby odczytać swoje roboty.plik txt, Zobacz wszystkie katalogi, które zostały oznaczone jako "off limits" i nadal ignoruj ustawienia grzeczności(takie jak indeksowanie i dozwolone boty). Te boty prawdopodobnie nie wpadną w twoją pułapkę, mimo że nie są grzeczne.

Violent

Myślę, że jest to zbyt agresywne dla publiczności (i ogólnego użytku), więc jeśli są jakieś dzieci poniżej 18 roku życia, to proszę zabrać je do innego miejsce.

Możesz zrobić pułapkę bota "brutalną " po prostu nie określając robota.plik txt. W tej sytuacji każdy BOT , który indeksuje ukryte linki, prawdopodobnie wyląduje w pułapce botów i możesz zablokować wszystkie boty, kropka!

Powodem, dla którego nie jest to zalecane, jest to, że możesz chcieć, aby niektóre boty indeksowały Twoją stronę (takie jak Google, Microsoft lub inne boty do indeksowania witryny). Pozwalając na grzeczne pełzanie Twojej strony przez boty z Google, Microsoft, Lycos itp. zapewni, że Twoja strona zostanie zindeksowana i pojawi się, gdy ludzie wyszukają ją w swojej ulubionej wyszukiwarce.

Autodestrukcyjne

Jeszcze innym sposobem na ograniczenie tego, co boty mogą indeksować na twojej stronie, jest serwowanie CAPTCHAs lub innych wyzwań, których bot nie może rozwiązać. Dzieje się to kosztem użytkowników i myślę, że wszystko, co sprawia, że Twoja strona jest mniej użyteczna (na przykład CAPTCHA), jest "autodestrukcyjne."To, oczywiście, nie będzie w rzeczywistości Zablokuj bota przed wielokrotnymi próbami indeksowania Twojej witryny, po prostu sprawi, że Twoja strona będzie dla nich bardzo nieciekawa. Są sposoby na "obejście" CAPTCHAs, ale są one trudne do wdrożenia, więc nie będę się w to zbytnio zagłębiał.

Podsumowanie

Dla Twoich celów, prawdopodobnie najlepszym sposobem radzenia sobie z botami jest użycie kombinacji wyżej wymienionych strategii:

  1. Filtruj agentów użytkowników.
  2. Setup a bot trap (the violent jeden).

Złap wszystkie boty, które wchodzą w pułapkę brutalnych botów i po prostu wymień ich adresy IP na czarną listę(ale nie blokuj ich). W ten sposób nadal będziesz mieć "korzyści" z bycia pełzanym przez boty, ale nie będziesz musiał płacić za sprawdzanie adresów IP, które są na czarnej liście z powodu przejścia do pułapki botów.

 48
Author: Kiril,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-05-29 18:49:21

Możesz sprawdzić USER_AGENT, coś w stylu:

function crawlerDetect($USER_AGENT)
{
    $crawlers = array(
    array('Google', 'Google'),
    array('msnbot', 'MSN'),
    array('Rambler', 'Rambler'),
    array('Yahoo', 'Yahoo'),
    array('AbachoBOT', 'AbachoBOT'),
    array('accoona', 'Accoona'),
    array('AcoiRobot', 'AcoiRobot'),
    array('ASPSeek', 'ASPSeek'),
    array('CrocCrawler', 'CrocCrawler'),
    array('Dumbot', 'Dumbot'),
    array('FAST-WebCrawler', 'FAST-WebCrawler'),
    array('GeonaBot', 'GeonaBot'),
    array('Gigabot', 'Gigabot'),
    array('Lycos', 'Lycos spider'),
    array('MSRBOT', 'MSRBOT'),
    array('Scooter', 'Altavista robot'),
    array('AltaVista', 'Altavista robot'),
    array('IDBot', 'ID-Search Bot'),
    array('eStyle', 'eStyle Bot'),
    array('Scrubby', 'Scrubby robot')
    );

    foreach ($crawlers as $c)
    {
        if (stristr($USER_AGENT, $c[0]))
        {
            return($c[1]);
        }
    }

    return false;
}

// example

$crawler = crawlerDetect($_SERVER['HTTP_USER_AGENT']);
 8
Author: Sudhir Bastakoti,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-20 17:45:28

Agent użytkownika ($_SERVER['HTTP_USER_AGENT']) często identyfikuje, czy agent łączący jest przeglądarką, czy robotem. Przeglądaj dzienniki / analizy dla Agentów użytkowników robotów indeksujących, które odwiedzają Twoją witrynę. Filtruj odpowiednio.

Zwróć uwagę, że user agent jest nagłówkiem dostarczanym przez aplikację kliencką. Jako taki może to być praktycznie wszystko i nie należy mu ufać w 100%. Odpowiednio zaplanuj.

 6
Author: Carl Zulauf,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-23 17:08:19

Sprawdzanie User-Agent ochroni Cię przed legalnymi botami, takimi jak Google i Yahoo.

Jeśli jednak trafiasz również z botami spamowymi, to są szanse, że porównanie User-Agent nie ochroni cię, ponieważ te boty zazwyczaj podrabiają wspólny ciąg znaków User-Agent. W takim przypadku trzeba by zastosować bardziej wyrafinowane środki. Jeśli wymagane jest wprowadzenie przez użytkownika, będzie działał prosty schemat weryfikacji obrazu, taki jak ReCaptcha lub phpMeow.

Jeśli chcesz odfiltrować wszystkie odsłony stron od bota, niestety, nie ma 100% niezawodnego sposobu, aby to zrobić, jeśli bot fałszuje swoje poświadczenia. Jest to po prostu irytujący fakt życia w Internecie, z którym administratorzy stron internetowych muszą się pogodzić.

 4
Author: Kris Craig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-12-06 20:01:45

Znalazłem ten pakiet, jest aktywnie rozwijany i jak na razie bardzo mi się podoba:

Https://github.com/JayBizzle/Crawler-Detect

To takie proste:

use Jaybizzle\CrawlerDetect\CrawlerDetect;

$CrawlerDetect = new CrawlerDetect;

// Check the user agent of the current 'visitor'
if($CrawlerDetect->isCrawler()) {
    // true if crawler user agent detected
}

// Pass a user agent as a string
if($CrawlerDetect->isCrawler('Mozilla/5.0 (compatible; Sosospider/2.0; +http://help.soso.com/webspider.htm)')) {
    // true if crawler user agent detected
}

// Output the name of the bot that matched (if any)
echo $CrawlerDetect->getMatches();
 2
Author: Arda,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-16 14:45:02

Useragentstring.com służy do analizy użytkownika:

$api_request="http://www.useragentstring.com/?uas=".urlencode($_SERVER['HTTP_USER_AGENT'])."&getJSON=all";
$ua=json_decode(file_get_contents($api_request));
if($ua["agent_type"]=="Crawler") die();
 0
Author: rubo77,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-22 19:35:46