.. _misc:

==================
Прочие возможности
==================

Ограничение тела ответа
-----------------------

Опцией :ref:`option_nobody` вы можете запретить принимать тело ответа. Соединение будет разорвано сразу после того, как будут получены все http-заголовки ответа.

Опцией :ref:`option_body_maxsize` вы можете управлять максимальным количеством информации, получаемой с сервера. В случае превышения указанного размера, соединение с сервером разрывается, никаких ислючений не генерируется, а данные, что были получены, доступны для работы.

Сжатие ответа
-------------

С помощью опции :ref:`option_encoding` вы можете управлять сжатием ответа сервера. По-умолчанию, значение опции равно "gzip", что означает посылку заголовка "Accept-Encoding: gzip" и  автоматическое распаковывание ответа (если он таки пришёл в загзипованном виде).

HTTP-Авторизация
----------------

С помощью опции :ref:`option_userpwd` можно передать имя пользователя и пароль для прохождения http-авторизации. Значение опции - это строка вида "username:password"

Работа с pycurl-дескриптором
----------------------------

Если вам нужно какая-либо возможность `pycurl`, интерфейс к которой отсутствует в Grab, вы можете работать с pycurl-дескриптором напрямую. Пример::

    from grab import Grab
    import pycurl

    g = Grab()
    g.curl.setopt(pycurl.RANGE, '100-200')
    g.go('http://some/url')

301 и 302 редиректы
-------------------

По-умолчанию, ответы со статусами 301 и 302 обрабатываются автоматически т.е. происходит переход по адресу, указанному в "Location:" заголовке ответа сервера::

    HTTP/1.1 301 Moved Permanently
    Content-Type: text/html
    Content-Length: 174
    Location: http://www.example.org/

Запретить автоматический переход можно опцией :ref:`option_follow_location`.

Meta Refresh редиректы
----------------------

Один из способов перенаправить посетителя страницы на другой адрес - использование мета-тэга::

    <meta http-equiv="Refresh" content="0; url=http://some/url" />

Grab может автоматически обрабатывать такой редирект. По-умолчанию, это поведение отключено. Включить его можно опцией :ref:`option_follow_refresh`.
