При обращении к Веб серверу индексатор передает ему HTTP-запрос, который по умолчанию выглядит следующим образом:
GET _относительный_урл_документа_ HTTP/1.1 Host: _имя_хоста_с_которого_запрашивается_документ_ Connection: Keep-Alive From: N/A User-Agent: Yandex.Server/_номер_версии_Yandex.Server_ Accept: text/html _или_ text/plain Accept-Language: ru; q=1.0, *; q=0.01 If-Modified-Since: _дата_модификации_при_последнем_индексировании_Последний заголовок посылается при повторном индексировании, если документ уже был проиндексирован ранее, а в опциях настройки индексатора указано "переиндексировать, только если документ изменился".
Иногда требуется модифицировать посылаемые по умолчанию заголовки, или добавить новые заголовки. Так, например, для сайтов, требующих авторизации, HTTP-запрос должен содержать дополнительную информацию о полномочиях пользователя. Также бывает нужно использовать прокси-сервер или установить время задержки между запросами, чтобы не загружать веб-сервер.
Индексатор имеет гибкий механизм настройки HTTP-запросов. Эта настройка может быть различной для разных областей индексирования. Каждая настройка запоминается либо в отдельном конфигурационном файле, либо в секции <HttpOptions> конфигурационного файла индексатора, которая должна иметь идентифицирующий атрибут name. Путь к конфигурационному файлу или значение атрибута name указывается для каждой области индексирования в директиве Options секций IndexedArea конфигурационного файла индексатора.
Конфигурационный файл HTTP-запросов (или секция <HttpOptions>) состоит из необязательных директив Timeout, Delay и ProxyUrl и двух необязательных секций Headers и Authorization.
Максимальное время ожидания ответа Web-сервера в секундах.
Значение по умолчанию: 150
Время задержки перед запросом следующего документа в микросекундах. Директива необходима для уменьшения нагрузки на сервер, время индексирования при этом, естественно, увеличивается.
Значение по умолчанию: 0
Позволяет использовать в HTTP-запросе указанный прокси-сервер. Директива должна определять полный URL прокси-сервера, начинающийся с http, и содержащий номер порта, если он отличается от 80. Если указан прокси-сервер, запрос
GET _относительный_урл_документа_ HTTP/1.1
Host: _имя_хоста_с_которого_запрашивается_документ_
будет заменен на
GET _абсолютный_урл_документа_ HTTP/1.1
и HTTP-соединение будет устанавливаться с прокси-сервером, а не хостом, на
котором расположен документ.
Прокси-серверы, требующие отдельной авторизации со стороны пользователя, не
поддерживаются в данной версии.
Значение по умолчанию: не задан
Позволяет задавать любые HTTP-заголовки в формате
Имя: ЗначениеВ этом примере будет добавлен HTTP-заголовок с именем Имя и значением Значение.
Правила хорошего тона при индексировании независимых ресурсов требуют задания HTTP-заголовков User-Agent, который содержит идентифицирующую информацию о программе-клиенте, пославшей запрос, и From, который должен содержать email-адрес администратора программы-клиента в формате, определенном в RFC 822. Если ключи User-Agent и/или From отсутствуют, будут посланы заголовки по умолчанию, указанные выше.
Кроме того, всегда будут посланы заголовки Connection и, если необходимо, If-Modified-Since, поэтому их не следует указывать в данной секции.
Носит вспомогательный характер и позволяет удобным способом добавлять HTTP-заголовок Authorization, обеспечивающий проверку полномочий клиента на доступ к данным по схеме BASIC. В секцию входят следующие директивы:
Имя и пароль кодируются по base64. Например, комбинация следующих ключей в секции Authorization
<Authorization>
UserName: yandex
UserPassword: asdf12345
</Authorization>
эквивалентна заданию директивы
<Headers>
Authorization: Basic eXNpdGU6YXNkZjEyMzQ1
</Headers>
в секции Headers и приведет к включению соответствующего HTTP-заголовка.Пример 5-3. Конфигурация HTTP-запросов
Ниже приведен отрывок из конфигурационного файла индексатора, задающий конфигурацию HTTP-запросов при индексировании хоста www.host.ru.
<IndexedArea>
HttpPrefix www.host.ru
Options GetHttp:myhttp
</IndexedArea>
<HttpOptions name="myhttp">
Timeout: 150
Delay: 0
ProxyUrl: http://proxy.host.ru:8080
<Authorization>
UserName: yandex
UserPassword: asdf12345
</Authorization>
<Headers>
User-Agent: Yandex.Server.MyHost/3.0
From: admin@host.ru
Accept-Language: ru, *;q=0.1
MyHeader: TestStroka
</Headers>
</HttpOptions>В приведенном фрагменте все директивы находятся в одном файле. Такую же конфигурацию можно получить, задав в основном конфигурационном файле индексатора директивы
<IndexedArea>
HttpPrefix www.host.ru
Options http:myhttp.cfg
</IndexedArea>
и создав дополнительный конфигурационный файл myhttp.cfg следующего
содержания
Timeout: 150
Delay: 0
ProxyUrl: http://proxy.host.ru:8080
<Authorization>
UserName: yandex
UserPassword: asdf12345
</Authorization>
<Headers>
User-Agent: Yandex.Server.MyHost/3.0
From: admin@host.ru
Accept-Language: ru, *;q=0.1
MyHeader: TestStroka
</Headers>| Пред. | Начало | След. |
| Правила индексирования, не описываемые в конфигурационном файле | Уровень выше | Парсеры документных форматов |