Возможности и ограничения
DuckoNet 0.11.5 предоставляет синхронный и асинхронный HTTP-клиент с браузерными сетевыми профилями. Библиотека сама подготавливает установку и обновляет подписанные профили при открытии клиента. Пользователь указывает API-ключ и браузер.
Системы и браузеры
| Компонент | Поддерживается |
|---|---|
| Python | CPython 3.12, стандартная сборка с GIL |
| Windows | x64; системные условия — в инструкции установки |
| Linux | Ubuntu 24.04, x64 |
| Free | Chrome 150; Microsoft Edge 151 |
| Pro | Chrome 151–155; Microsoft Edge 156 |
Конкретные полные версии перечислены в инструкции установки. Выбор ограничивается доступными профилями и правами API-ключа. Firefox, Safari, Android, macOS, ARM и другие версии Python не поддерживаются этим пакетом.
Запросы и ответы
HttpClient и AsyncHttpClient поддерживают параметры URL, JSON, формы, байтовые тела и файлы multipart. Они обрабатывают перенаправления, сохраняют повторяющиеся заголовки и автоматически используют cookies. Ответ можно получить целиком либо прочитать по частям. Для прямой работы с браузерным контекстом и ответами в байтах существуют Client и AsyncClient.
Доступны HTTP/1.1, HTTP/2 и HTTP/3. У HttpClient режимы protocol='h3' и protocol='auto' допускают HTTP/2 и переход на HTTP/3 после получения подходящего объявления сервера. Первый запрос поэтому не обязан использовать QUIC. Фактический протокол указан в response.protocol. Выбор режима подробно описан в разделе Прокси и управление.
| Настройка | Значение по умолчанию | Максимум или ограничение |
|---|---|---|
| Таймаут запроса | 30 секунд | 300 секунд на подготовку и выполнение запроса, включая перенаправления и чтение |
| Отправляемое тело | — | 16 MiB вместе с разделителями multipart; целиком подготавливается в памяти |
| Тело ответа в памяти | 1 MiB | 64 MiB; для больших ответов используйте stream() или consume() |
| Заголовки ответа | 64 KiB | 1 MiB |
| Перенаправления | 20 | До 100; переход с HTTPS на HTTP требует allow_downgrade=True |
| Маршруты одного клиента | Один начальный | До 8 сочетаний протокола и прокси за время жизни клиента |
Лимит потоков тарифом не устанавливается. Доступная параллельность зависит от ресурсов системы и настроек сессий. Пределы размеров и маршрутов действуют на обоих тарифах.
Прокси, URL и данные
Прокси задаётся явно: строкой URL или ProxyRoute. Поддерживаются HTTP, HTTPS, SOCKS5 и SOCKS5H при наличии соответствующих возможностей у профиля. В 0.11.5 HTTP/3 к сайту предоставляется через явный MasqueProxy с HTTPS/H2 CONNECT-UDP; обычные HTTP/SOCKS URL не дают UDP-туннель. Параметры MASQUE. При отказе прокси библиотека не переключается на прямое соединение.
URL должен быть абсолютным адресом HTTP(S). Домен с Unicode-символами не преобразуется автоматически в IDNA. IPv6-адрес непосредственно в URL у HttpClient не поддерживается. Фрагмент после # не отправляется серверу.
Cookies сохраняются в памяти клиента. Для использования после перезапуска нужно вызвать export_data(), сохранить результат и затем восстановить его через import_data(). Каталог state_dir хранит установку библиотеки, а не пользовательские cookies.
Тело gzip-ответа распаковывается автоматически. Content-Length при этом может содержать размер сжатого тела; для размера полученных данных используйте len(response.content).
В 0.11.5 WebSocket предоставляется HttpClient/AsyncHttpClient через HTTP/1.1 Upgrade со сжатием и sync/async методами. WebSocket-over-H2/H3 отсутствует. Потоковая отправка тела HTTP-запроса и отдельные HTTP таймауты подключения и чтения не предоставляются этим API.
Что означает браузерный профиль
Профиль задаёт параметры TLS и HTTP выбранной версии браузера. Сам запрос — его адрес, метод, заголовки и тело — формирует приложение. Произвольный набор пользовательских заголовков может отличаться от того, который отправил бы браузер.
HttpClient не исполняет браузерный Fetch: он не проверяет CORS и не отправляет preflight. Поле assurance='custom-request' отмечает этот режим работы. Диагностика показывает логические заголовки запроса, а не байтовую запись TLS или кадров HTTP/2 и HTTP/3.
Полные параметры и правила обработки ответа находятся в справочнике API. Примеры запросов, файлов и потоков — в практическом руководстве.