Disallow, что значит?

Disallow, что значит?

В этой статье мы расскажем о том, что такое User-Agent, для чего он нужен и как с его помощью делать всякие нужные штуки. Эта информация пригодится тем, кто планирует всерьез самостоятельно заняться оптимизацией своего сайта, уделяя особое внимание вопросам безопасности. Вслед за этой статьей появится еще несколько материалов, посвященных оптимизации сайтов, не пропустите.

Итак, User-Agent. В обычной жизни нас с вами можно идентифицировать по разным параметрам: голос и внешность выдают в нас мужчину или женщину, форма — военного или доктора. Помимо таких очевидных, есть ряд прочих критериев, которые позволяют нам определить, с кем имеешь дело, и как именно стоит себя вести в данной ситуации. Похожим образом происходит взаимодействие с сайтами — веб-приложение сообщает данные о себе, а сайт в свою очередь может обрабатывать их различными способами. Эта информация передается в User-Agent, о котором пойдет речь далее.

Что такое User-Agent, какую информацию он передает?

В последние годы использование глобальной сети Интернет стало настолько привычным и даже обыденным, что при открытии какого-либо сайта мы вовсе не замечаем, что первым делом запускаем браузер. А ведь именно он — браузер — является тем приложением, которое позволяет нам видеть сайты красиво оформленными, а не состоящими из набора HTML-тегов и текстовых ссылок. При открытии сайта браузер посылает HTTP-запрос к серверу, который занимается обслуживанием этого сайта, дожидается ответа от сервера и обрабатывает его определенным образом. HTTP-запрос содержит в себе набор информации, из которой стоит выделить метод обработки данных (GET, POST), адрес запрашиваемого ресурса, IP-адрес отправителя, и, собственно, User-Agent.

User-Agent — это текстовая часть запроса, которую веб-приложения используют для сообщения сайту информации о себе. User-Agent браузера содержит название и версию приложения, а также данные об операционной системе компьютера: версия, разрядность, язык по умолчанию и другие параметры. Помимо браузеров User-Agent есть у утилит (Wget и cURL) и поисковых роботов — обычно в них содержится имя робота и ссылка на ресурс, регламентирующий его работу.

Ниже рассмотрены различные варианты User-Agent с расшифровкой тех данных, на которые следует обратить внимание.

Браузеры ПК на примере Mozilla Firefox 36 (Win 8.1 x64):

Mozilla/5.0 (Windows NT 6.3; WOW64; rv:36.0) Gecko/20100101 Firefox/36.0

Windows NT 6.3 — вид и версия операционной системы компьютера, на котором установлен браузер.
Firefox/36.0 — имя браузера и его версия.

Мобильные браузеры на примере Android 2.3.5 (Philips W632):

Linux — тип операционной системы (семейство Linux).
Android 2.3.5 — название операционной системы и ее версия.
ru-ru — язык на мобильном устройстве по умолчанию.
Philips W632 Build/GRJ90 — название и версия мобильного устройства, на котором установлен браузер.

Поисковые системы на примере роботов Яндекс:

Mozilla/5.0 (compatible; YandexBot/3.0; +http://yandex.com/bots)

YandexBot/3.0 — имя и версия робота.
http://yandex.com/bots — ссылка на ресурс, содержащий справку о работе робота.

Утилиты на примере wget (Linux):

Wget/1.15 (linux-gnu)

Wget/1.15 — название и версия программного обеспечения.

Как узнать, от каких User-Agent поступают запросы к вашему сайту?

Информация о поступающих запросах хранится в виде журналов работы веб-сервера. Вы можете включить сохранение журналов веб-сервера в Панели управления аккаунтом хостинга. Перейдите в раздел «Дополнительно» → «Журналы веб-сервера», отметьте домен сайта и нажмите на кнопку «Включить». После этого журналы веб-сервера начнут сохранятся в папке /logs, находящейся в директории сайта, в указанном примере это директория domains/user-agent.01sh.ru/logs.

Информация о каждом запросе хранится в журнале отдельной строкой, например:

Разберем подробнее те части записи, которые нас интересуют в контексте статьи.

77.88.99.00 — IP-адрес, с которого поступил запрос.
sprinthost.ru — имя сайта, к которому было направлено обращение.
«Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36» — тот самый User-Agent браузера, который обращался к сайту.

Зачем сайту знать, с каким User-Agent к нему пришли?

Как видно из приведенных выше примеров, по User-Agent очень просто определить, откуда пришел запрос — это может быть компьютер, планшет, мобильное устройство, поисковый робот или некое программное обеспечение.

Информация об источнике запроса может быть необходима для решения следующих задач:

  • перенаправление запросов на мобильную версию;
  • использование специфических стилей для определенных браузеров;
  • сбор статистики о количестве запросов с разных устройств;
  • создание специальных правил для обработки запросов от роботов;
  • запрет доступа к сайту для каких-либо веб-утилит;
  • всякие другие штуки.

Значительная часть перечисленных задач требует опыта разработки скриптов на PHP, но не стоит пугаться — для большинства популярных CMS уже существуют расширения, обладающие необходимыми функциями, и вам достаточно найти подходящий плагин или модуль, чтобы получить желаемый результат.

Мы же подробнее разберем ситуацию, когда требуется запретить доступ к сайту по User-Agent. Чаще всего это необходимо для исключения из индексации поисковыми роботами файлов из определенной директории, блокировки нежелательных роботов, создающих нагрузку на сайте, или же обеспечения безопасности, если к сайту поступает множество подозрительных запросов с различных IP-адресов, но с одинаковым User-Agent.

Как запретить доступ к сайту по User-Agent?

Ответ достаточно прост — всего при помощи нескольких правил в файле .htaccess, сформировать и добавить которые не составит труда даже новичку. Освежить знания по работе с файлом .htaccess вам поможет статья в нашем блоге.

Рассмотрим пример, в котором используются правила, запрещающие доступ к сайту с использованием утилиты wget:

SetEnvIfNoCase User-Agent ‘^Wget’ bad_bot Deny from env=bad_bot

В первой строке после параметра User-Agent в кавычках указан User-Agent утилиты Wget, которому присваивается имя bad_bot. Во второй строке указывается необходимость блокировки доступа (Deny) для запроса, пришедшего от bad_bot.

Вместо «^Wget» может быть указан User-Agent любого браузера или робота, имя bad_bot может быть присвоено любому количеству User-Agent, то есть правила

SetEnvIfNoCase User-Agent ‘^Wget’ bad_bot SetEnvIfNoCase User-Agent ‘^Java’ bad_bot SetEnvIfNoCase User-Agent ‘^Zeus’ bad_bot Deny from env=bad_bot

запретят доступ для всех перечисленных User-Agent.

Чтобы убедиться в том, что изменения внесены успешно, вовсе не обязательно искать большое количество различных устройств для проверки работы сайта — гораздо удобнее воспользоваться встроенными почти во все современные браузеры функциями подмены User-Agent.

Как заменить User-Agent браузера?

Обычно замена User-Agent применяется, чтобы проверить правила для роботов и утилит.

Не секрет, что каждый из браузеров при формировании страницы сайта обрабатывает полученные с сервера данные особым образом. Соответственно, если в браузере Firefox указать User-Agent браузера Chrome, результат отображения сайта может быть совершенно неожиданным. Об этом обязательно следует помнить. Всегда возвращайте исходное значение User-Agent после завершения тестирования.

Инструкция по замене User-Agent в Mozilla Firefox (для версий 34.0 и выше)

Наберите в адресной строке вашего браузера следующую фразу:

и нажмите Enter. Если появится сообщение о том, что надо быть осторожным, нажмите кнопку «Я обещаю, что буду осторожен!». После откроется список множества настроек, а также строка поиска. Введите в эту строку:

Вам необходимо убедиться, что параметра general.useragent.override не существует. Для создания этого параметра кликните правой кнопкой мыши по пустому месту и выберите пункт «Создать (New)», затем «Строка (String)». Введите имя этой строки general.useragent.override, нажмите «ОК». Затем потребуется ввести значение этой строки, которое и будет использоваться в качестве нового User-Agent, и нажать «ОК». К примеру, если вы хотите заменить значение на User-Agent утилиты Wget, после создания строки с именем general.useragent.override укажите в качестве ее значения:

Wget/1.15 (linux-gnu)

Новое значение должно появится в списке параметров. Перезапускать Mozilla Firefox не требуется.

Инструкция по замене User-Agent в Google Chrome (для версий 26.0.1410.64 и выше)

Чтобы указать для Google Chrome нестандартный User-Agent, его необходимо запустить с ключом

—user-agent=»»

и в кавычках указать новую строку User-Agent.

Например, в ОС Windows это можно сделать, нажав сочетание клавиш Win+R и вписав в поле «Открыть» команду:

chrome —user-agent=»MyBrowser»

где вместо MyBrowser должен быть указан нужный вам User-Agent.

Например, чтобы присвоить Google Chrome значение User-Agent консольного браузера Links, следует ввести в поле «Открыть» строку

chrome —user-agent=»Links (2.8; Linux 3.13.0-24-generic x86_64; GNU C 4.8.2; text)»

и нажать на кнопку «ОК».

После этого открывшееся окно браузера будет иметь не стандартный, а заданный User-Agent. Чтобы проверить текущее значение User-Agent, можно ввести в адресной строке:

Использование веб-сайтами

Из-за доминирования отдельных браузеров в разные периоды в истории всемирной паутины многие веб-сайты проектировались не в соответствии со стандартами W3C и IETF, а для работы с определённым браузером. Такие сайты посылают разное содержимое веб-страницы в зависимости от получаемого от клиента значения User-Agent. Это приводит к тому, что использовать сайт можно с помощью только одного-трёх самых популярных браузеров, а браузеры, имеющие немного отличающийся идентификатор, оказываются «запрещёнными».

Многие веб-мастеры считают такой подход плохой практикой и рекомендуют создавать HTML-разметку настолько стандартизированно, насколько это возможно, чтобы корректно отображать страницы сайта на максимальном количестве браузеров.

Веб-сайты для мобильных телефонов часто вынуждены жёстко полагаться на определение User-Agent, так как браузеры на разных мобильных телефонах слишком различны. Поэтому мобильные веб-порталы обычно генерируют разные страницы в зависимости от модели мобильного телефона. Эти различия могут быть как небольшими (изменение размера изображений специально для меньших экранов), так и весьма существенными (формат WML вместо XHTML).

Строка User-agent также используется веб-мастерами для предотвращения индексирования «поисковыми пауками» некоторых страниц сайта, например когда индексирование определённых страниц не имеет смысла или конкретный «паук» создаёт большую нагрузку на сервер. Веб-мастер может использовать специальный файл robots.txt для рекомендаций «пауку» или просто настроить веб-сайт не отдавать «пауку» эти страницы.

Подделка User-agent

Причины

Искусственная несовместимость

Использование веб-сайтами строки User-agent для изменения отображения страницы часто приводит к тому, что менее популярные браузеры не получают полного содержимого страницы, даже если они могут корректно его отобразить, а в некоторых радикальных случаях такие браузеры не получают вообще ничего. В связи с этим многие браузеры стали «прятать» или «подделывать» User-agent.

Ранний пример этого — использование браузером Internet Explorer строки User-Agent, начинающейся с «Mozilla/<version> (compatible; MSIE <version>…», для получения контента, предназначенного для Netscape Navigator, его главного конкурента в 1990-х. Нужно отметить, что «Mozilla» в данном случае — не браузер с открытым кодом Mozilla, выпущенный гораздо позже, а оригинальное кодовое имя Navigator, которое также было именем талисмана (маскота) компании Netscape. Такой формат строки User-Agent с тех пор использовался и другими браузерами; в частности, из-за того, что доминировать стал Internet Explorer.

Когда Internet Explorer стал доминирующим браузером, такие конкуренты как Firefox, Safari и Opera встроили системы, позволяющие пользователю выбрать ложное значение User-Agent, такое же, что и у свежих версий Explorer. Некоторые из них (Firefox и Safari) копировали значение User-Agent полностью, другие (Opera) копировали значение User-Agent, добавляя истинное имя браузера в конце, что позже привело к тому, что строка содержит три имени и версии: первое зовётся как «Mozilla» (то есть Netscape Navigator); далее «MSIE» (Internet Explorer); и последнее, действительный браузер, такой как «Opera». Opera также позволяла полностью замаскироваться под Internet Explorer или Firefox, полностью скрывая имя «Opera».

В случае Safari строка User-Agent содержит 5 имён (Mozilla, AppleWebKit (идентификатор «движка»), «KHTML, like Gecko» (используемый Safari WebKit основан на движке KHTML, Gecko — кодовое имя движка последних версий Mozilla Firefox) и Safari. Таким образом, если сайт делает проверку на практически любой современный браузер (кроме Opera) — Safari её пройдёт. Другие браузеры на движке WebKit работают аналогично.

Кроме браузеров, другие программы, использующие протокол HTTP, к примеру менеджеры закачек и оффлайновые браузеры, также имеют возможность изменять значение User-Agent, посылаемое серверу, по желанию пользователя. Это сделано, наверное, для обеспечения совместимости с определёнными серверами (некоторые серверы отказываются обслуживать подобные программы, так как они могут оказать значительные нагрузки на ресурсы сервера; Google, например, для дефолтового юзерагента python urllib отдает 403).

Подобная проблема продолжает существовать в мире браузеров, и поэтому начата кампания, способствующая тому, чтобы разработчики сайтов проектировали сайты в соответствии со стандартами, а не для какого-то любого определённого браузера.

Так, многие веб-сайты, созданные в 2005 году, лучше соответствуют стандартам, чем это было ранее в истории Web. Однако, на некоторых сайтах всё ещё используются устаревшие скрипты JavaScript, в сущности, блокирующие работу других браузеров, помимо Internet Explorer или Netscape Navigator. Причина этого часто заключается в бездумном копировании старого кода, взятого с других сайтов, без полного понимания того, какой эффект этот код будет в действительности иметь.

Последствия

Одним из результатов подделки значения User-Agent является переоценка популярности соответствующего (обычно и без того популярного) браузера в статистике и недооценка популярности других браузеров и, как следствие, отсутствие у разработчиков вышеописанных сайтов стимула к исправлению проблем совместимости.

Что из себя представляет User-agent?

User-agent есть в любом браузере и мобильном устройстве. Эта строка содержит множество сведений о компьютере, операционной системе, версии браузера. Прописанные в файле Robots.txt, строки с описанием User-agent влияют на работу поисковых систем на сайте. С их помощью можно скрыть от поисковиков (от всех или каких-то определённых) находящуюся на сайте информацию – какую-то страницу или весь сайт, конкретный тип файлов. Ограничивая индексацию по типу файлов, к примеру, можно сделать видимыми только картинки, только тексты или, наоборот, исключить из индексации конкретный тип файла.

Ограничение видимости можно прописать для бота конкретной поисковой системы или для всех роботов. Инструкции прописываются для каждого робота, для которого известно написание User-agent.

Из строки, содержащей описание User-agent можно узнать следующие сведения:

  • Наименование основного браузера, его версию;
  • Версию операционной системы;
  • Какое специфическое программное обеспечение установлено на устройстве;
  • Вид устройства, с которого осуществляется выход в интернет.

Изменение User-agent может понадобиться не только для того чтобы редактировать параметры индексации сайта, но и чтобы скрывать нежелательную для отслеживания информацию: например, вид устройства для аккаунтов Google, VK. Также с помощью редактирования User-agent можно сделать актуальным устаревший браузер, перестать получать предложения об установке того или иного браузера. Изменение данной строки в разных браузерах и устройствах происходит по-своему. Следует искать инструкции для конкретного браузера или типа операционной системы (Android, iOS).

User-agent и поисковые роботы Google

Одной из самых популярных поисковых систем является Google, и этой системой создано множество ботов для индексации различного контента на сайтах и устройств, с которых осуществляется выход в интернет.

Некоторые боты системы:

  • APIs-Google – робот для рассылки push-уведомлений;
  • AdSense – распознает содержание сайта для размещения соответствующих тематике объявлений;
  • AdsBot Mobile Web Android, Mobile Apps Android, AdsBot-Google и AdsBot Mobile Web – для проверки рекламного контента, размещенного на сканируемом портале. Каждый из ботов отвечает за свои устройства – компьютеры, телефоны на IOS или Android, мобильные приложения;
  • Googlebot Images – сканирует файлы, являющиеся изображением;
  • Googlebot News – ищет информацию для размещения в новостном разделе системы;
  • Googlebot Video – отвечает за видеофайлы;
  • Googlebot.

Основной робот для поисковика Google – это Googlebot. В случае необходимости полной блокировки индексации всего сайта для этой системы, достаточно внести в файл Robots.txt условие, устанавливающее Googlebot агентом пользователя. Тогда для всех ботов компании Google сайт станет невидимым. Можно ограничить видимость определенного контента. Тогда нужно настроить правило для агента, отвечающего за этот контент. Например, сканированием изображений на сайте занимается Googlebot-Image. Запись в файле Robots, где оформляется данная операция, выглядит так:

User-agent: Googlebot

Disallow: (здесь остается пустое место, так как основному боту ничего не запрещается)

User-agent: Googlebot-Image

Disallow: /personal (запрет на видимость изображений в личном каталоге для бота, ответственного за контент данного типа).

Можно запретить индексацию всего сайта, но разрешить индексировать конкретный контент, например, видео или размещенную рекламу. К примеру, чтобы разрешить сканировать только видео, основному боту нужно запретить индексацию всего сайта, а в качестве агента, для которого запретов не предусмотрено, указать Googlebot Video.

Если сайт должен быть виден поисковой системе Google полностью, без исключений, то файл Robots.txt не нужен, его можно вовсе удалить (при условии, что не нужно ограничить какой-либо другой поисковик).

Что означает disallow в robots?

Данная директива означает, что поисковый робот не может индексировать файл или каталог, который указан после директивы Disallow. Например, Disallow: /engine/ — директива запрещает индексацию каталога /engine/ и всех его подкаталогов, то есть индексирование файла /engine/admin/index.php также запрещено. Обратите внимание на «/» в начале и в конце название директории. Слеш вначале обозначает, что это корневая папка вашего сайта. Слеш в конце сообщает поисковому роботу, что вы хотите закрыть от индексации именно каталог /engine/, а не файл. В противном случае вы запретите посещение всех страниц сервера, имя которых начинается с /engine. Например, /engine.html

Помимо слеша в конце названия директории вы можете увидеть символы «*» и «$». Давайте разберемся, для чего они нужны. Например, помимо нашей папки /engine/ у вас на сервере присутствуют такие папки, как /engine1/, /engine2/ или /engine3/ и перед вами стоит задача — закрыть их от индексации. Для этого вам следует добавить символ «*» в конец нашей директории, т.е. написать Disallow: /engine*/. Однако, тут следует оговориться, что робот автоматически воспринимает окончание каждого правила в robots.txt как если бы там был знак «*». Поэтому приведем еще один пример использования данного символа:

Disallow: /*private — запрещает индексацию не только /private, но и /cgi-bin/private

Если же вы хотите запретить индексацию только /private, а /cgi-bin/private и /private/admin/index.php оставить открытыми, то тут вам необходим символ «$»:

Disallow: /private$

Вдобавок ко всему вы можете увидеть вот такой robots.txt:

User-agent:
Disallow:

Вопреки логическим предположениям директива с пустым значением параметра разрешает индексацию всего сайта без исключений. А вот директива Disallow: / как раз таки запрещает поисковому роботу индексировать ваш ресурс полностью. Обычно её используют при создании или редизайне сайта, когда не нужно, чтобы робот сохранял в свою базу данных недоделанные страницы.

Итак, мы разобрались, что означает dissalow в robots.txt. Следует также сказать, что при составлении технического задания на доработки сайта обязательным является проверка файла robots.txt. Нужно тщательно проследить, какие именно страницы закрыты от индексации директивой Disallow, а какие нет. Наиболее удобный способ для поверки файла robots.txt предоставляет сервис Яндекс.Вебмастер. Данный инструмент расположен по адресу http://webmaster.yandex.ru/robots.xml.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *