=========================
Работа с прокси-серверами
=========================

Настройка прокси-сервера
------------------------

Для использования проки-сервера вам нужно задать две опции: :ref:`option_proxy` и :ref:`option_proxy_type`. Опция :ref:`option_proxy` принимает значения в виде строки `server:port`. Опция :ref:`option_proxy_type` допускает значения трёх типов: `http`, `socks4` и `socks5`. Пример::

    g.setup(proxy='gate.somhost.com:444', proxy_type='http')
    
Если прокси-сервер требует авторизации, используйте опцию :ref:`option_proxy_userpwd`, которая принимает значение в виде строки `username:password`.

Обратите внимание, что в случае использования прокси-сервера, информация о нём будет отображаться в logging-сообщениях, соответствующих конкретному запросу.

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

Grab поддерживает работу со списком-прокси. Используйте метод :meth:`~grab.base.BaseGrab.setup_proxylist` для задания списка проксей::

    g.setup_proxylist(proxy_file='/path/to/file.txt', proxy_type='http')

Следующими аргументами метода :meth:`~grab.base.BaseGrab.setup_proxylist` вы можете настроить работу со списком проксей:

:proxy_file: путь к файлу со списком прокси-серверов
:proxy_type: тип прокси-серверов. Возможные варианты: "http", "socks4", "socks5".
:read_timeout: Время, через которое файл с проксями, будет перечитан.
:auto_init: Один раз выбирает случайный прокси-сервер, который используется для всех дальнейших запросов.
:auto_change: Включает постоянную смену прокси-сервера для каждого запроса
:server_list: Вы можете передать непосредственно список-проксей в python-списке, вместо указания файла с прокси-серверами. Аргументы `proxy_file` и `server_list` нельзя использовать одновременно.

Строки в файле, передаваемом через `proxy_file`, или в списке, передаваемом через `server_list` могут быть в двух форматах:

* Простой формат "server:port"
* Сложный формат "server:port:username:password". Используйте его, если прокси-сервер требует авторизации.
