Блог на SuperHosting.BG

31яну/12

Добрите ботове vs лошите ботове и вашият сайт! :)

SeoConference2011В тази публикация един от дългогодишните колеги в техническия екип на нашата хостинг компания СуперХостинг.БГ - Митко, се постара да синтезира максимално, иначе огромния обем от информация по темата - индексиране от ботове. Следващите редове ще ви дадат отговори на въпросите: Кои са добри и кои лоши ботове? Как да определяте кои директории в хостинг акаунта ви да се индексират? Как да се предпазвате и да блокирате лошите ботове? ... А иначе, си знаете :)... разчитаме и вие да споделите ноу хау като коментари под публикацията. Когато става въпрос за вашия сайт, е много важно заедно да елиминираме възможността за “непослушание” от страна на лошите ботове и единствено "възпитаните", добри роботи да индексират съдържанието ви. :)

Добри ботове:

Сайтовете Ви денонощно се обхождат от ботове (роботи), най-често на търсачки, като например Googlebot , msnbot, YandexBot, bingbot и др. Тези роботи индексират съдържанието на сайтовете, с цел да предоставят по-точни и актуални резултати при търсене. Те се стремят да обходят възможно най-много, а ако е възможно и всички страници от сайта ви. Вие можете да изберете кои директории да не се обхождат от тези ботове, като използвате robots.txt файл в основната (root) директория на сайта. Преди да започне обхождане на сайта робота проверява robots.txt файла, от където разбира кои директории могат да бъдат индексирани и кои не. Синтаксиса на файла е доста опростен:

User-agent: *
Disallow: /

В User-agent се описва за кой бот важат изброените ограничения, а в Disallow се изброяват забранените директории. В посочения пример с wildcard (*) се посочва, че правилата важат за абсолютно всички ботове, а Disallow: / забранява достъпа до основната директория, т.е. и до всички нейни поддиректории. Ако пропуснете "/" в Disallow, това ще значи, че няма ограничение за директория и ботовете са свободни да обхождат всички директории в хостинг акаунта ви.

Съвет от support- a (Митко) – част 1:

За да ограничите достъп на Googlebot до /tmp директорията, например, robots.txt файла трябва да изглежда по следния начин:

User-agent: Googlebot
Disallow: /tmp

Можете да забраните достъп и до конректен файл:

User-agent: Googlebot
Disallow: /DirectoryName/FileName.html

Ако не сте сигурни за точното име на бота, който желаете да ограничите, можете да го видите в статистиката Awstats или в Raw Access Log- а на сайта. Подробна информация за robots.txt файла и начина му на употреба можете да намерите на следния адрес:

В сайта е включен също списък на голям брой роботи и кратко описание за всеки.

Лоши ботове:

Съществуват и други роботи, които предпочитат да пропуснат проверката на файла robots.txt и обхождат съдържанието на сайта, въпреки забраните описани в този файл. Такива ботове наричаме "лоши".

При обхождането на сайт от лошите ботове, това не ви носи позитиви за по-добро позициониране на сайта в мрежата, а напротив - сайта се сканира, за да се направи опит за злоупотреба с него. Това включва пробив в сигурността, публикуване на СПАМ в контактни форми, събиране на вашите имейл адреси, на които после се изпраща СПАМ и много други. За тези ботове се налага да използваме .htaccess файла, ако желаем да ограничим достъпа им.

Единият вариант е да блокираме ботовете по IP адреса им по познатия начин - deny from IP . Този начин обаче най-често не дава желания резултат, понеже лошите ботове използват различни IP адреси и ще се наложи да блокирате нови и нови IP адреси. В крайна сметка може да се окаже, че сте блокирали половината азиатски (например) IP адреси и досадния бот да продължава да “рови” из страниците Ви.

Съвет от support- a (Митко) – част 2:

По-ефективен метод за блокиране на лоши роботи е използването на User-agent- а, с който се представя робота. Можем да ограничим този User-agent с простичък Rewrite в .htaccess:

RewriteCond %{HTTP_USER_AGENT} ^(.*)Surfbot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(.*)ChinaClaw [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(.*)Zeus [NC]
RewriteRule .* - [F]

В този пример роботите Surfbot, ChinaClaw и Zeus ще получат 403 Forbidden при опит да достъпят съдържанието на директорията, в която е поставен .htaccess файла. Можете да добавяте и още роботи, като е необходимо да се добави [OR] (или) в края на всеки ред, освен на последния User-agent. (Все пак да споменем, че добавянето на твърде много правила в .htaccess файла да забави зареждането на сайта в някои случаи.)

При такова блокиране е препоръчително да съществуват страниците за грешки 404 Not Found и 403 Forbidden. В случай, че тези страници се генерират динамично от системата Ви, това може да доведе до допълнително излишно натоварване.

Съвет от support- a (Митко) – част 3:

Друг начин за блокиране по User-agent е с използване на SetEnvIfNoCase отново в .htaccess файла. Ето и пример

SetEnvIfNoCase User-Agent "^Surfbot" bad_bot
SetEnvIfNoCase User-Agent "^ChinaClaw" bad_bot
SetEnvIfNoCase User-Agent "^Zeus" bad_bot

<Limit GET POST HEAD>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Limit>

В първата част се дефинират User-Agent-и, които ще бъдат разпознати като лоши, а във втората част се блокират всички заявки (GET, POST, HEAD) от такива роботи.

В Интернет пространството има много публикувани примери за блокиране на лоши ботове по User-Agent чрез .htaccess . В някои от примерите са включени известни лоши роботи като:

Ако решите да използвате тези примери, е добре да ги прегледате, за да не блокирате някой робот, който би трябвало да може да обхожда сайта ви. Можете и да добавите бот, който ви досажда, а не е включен в списъка.  Сайтът е ваш, съответно и правилата, и свободата за действие в него са ваши! :)

А понеже вашия сайт използва нашия хостинг, то ние го чувстваме и приемаме като задължение да сме ви полезни със съвети как най-добре да работят приложенията ви! Какво ще кажете, успяхме ли и този път? :)

Коментари (12) Връзки за обратно следене (2)
  1. Благодаря ви за страхотната, супер полезна статия.

  2. Както винаги, доста полезна информация! Благодаря ви :)

  3. Няма ли начин да се направи нещо подобно както е в примера, но за good_bot и съответно да приемаме заявки само от тях ? :)

    • Красимир, като добра практика можем да посочим default-но активиране на всички ботове и блокиране само на тези лоши ботове, които влияят негативно на сайта ви. Това е използваният и тестван начин. :)

      В противен случай, дори и да се успее в трудната мисия да се блокират всички ботове (всекидневно се появяват нови, и нови) и да се одобри индексиране на сайта само от Googlebot, msnbot, YandexBot, bingbot и др., може да се получи по-скоро негативен ефект, като се пропусне одобряването на някой добър и полезен бот, User-Agent и т.н. Така че, не го препоръчваме! :)

  4. Както винаги любимият ми хостинг ме изненада приятно. Супер сте :)
    Имам само 1 въпрос
    „(Все пак да споменем, че добавянето на твърде много правила в .htaccess файла да забави зареждането на сайта в някои случаи.)“
    Колко е максимално допустимият брой ботове които можем да добавим в черния списък :)

    • Здравейте Бойко,

      Благодарим ви за милите думи и много се радваме, че информацията в статията е полезна и интересна за вас! :)

      Относно максимално допустим брой ботове, които могат да се изброят в .htaccess файла, не може да се конкретизира 5, 10, 50 или 100 ботове. Това, което можем да дадем като съвет, е да се блокират само тези ботове, които наистина създават проблеми конкретно на вашия сайт.

      Има случаи, когато забелязваме, че наши клиенти са блокирали огромен брой ботове (default-но посочени като „лоши“ в Интернет), без да са направили проверка кои конкретно влияят на техните сайтове. В тези случаи се забелязва забавяне на коректната работа на сайтовете и ние искаме и се опитваме да го предотвратим. :)

  5. много интересно наистина

  6. Благодаря за полезната информация, в доста случай „лошите“ ботове натоварват доста сайтовете и изразходват от процесорното Ви време :)

  7. Супер препоръки наистина. Специално за спама може да се възползвам от съветите ;)

  8. Аз използвам един скрипт, който автоматично улавя и добавя лошите ботове в хтакцеса, за блокиране. Работи без засечка.
    Можете да научите повече тук: http://www.braemoor.co.uk/software/robottrapphp.shtml

  9. Това с ловенето на роботите ми се струва много полезно, но какво става ако се блокира примерно googlebot по грешка.

    Напоследък имам много атаки от роботи и със сигурност трябва да предприема нещо, но ми се струва доста рисково, да не блокирам нещо, което не трябва.

    • Здравейте,

      Блокирането на ботове трябва да се извършва с повишено внимание. Препоръчваме предварително да се прегледат заявките от ботове в Access логовете, както и какъв User Agent е записан. След това да се блокира например по User Agent. По този начин ще бъде ограничен достъпа само за описаните User Agent-и.

      След блокиране може да се тества достъпа до сайта, като се смени User Agent-a. Затова може да се ползва например допълнителен плъгин към браузъра или Curl (при Unix системи).


Оставете коментар

Notify me of followup comments via e-mail. You can also subscribe without commenting.