# DuckoNet для Python

DuckoNet отправляет HTTP-запросы с сетевыми профилями Chrome и Microsoft Edge. Вы выбираете браузер и передаёте API-ключ; библиотека подготавливает установку, проверяет доступ и загружает подходящий подписанный профиль.

## Первый запрос

[Установите пакет](install.html) для своей системы и задайте переменную окружения `DUCKONET_API_KEY`. Затем выполните:

```python
import os
from duckonet import HttpClient

with HttpClient(api_key=os.environ['DUCKONET_API_KEY'], browser='chrome') as client:
    response = client.get('https://example.com/')
    response.raise_for_status()
    print(response.text)
```

Контекст `with` открывает клиент и освобождает его ресурсы после работы. Внутри одного контекста можно отправить несколько запросов. Для асинхронного кода есть `AsyncHttpClient`.

## Что читать дальше

- [Установка](install.html) — Windows и Linux, API-ключ, обновление пакета и выбор версии браузера.
- [Запросы и примеры](quickstart.html) — параметры URL, JSON, формы, файлы и скачивание по частям.
- [Справочник API](reference.html) — все параметры клиента, методы и поля ответа.
- [Cookies](cookies.html) — автоматическая обработка, ручное добавление и сохранение между запусками.
- [Прокси и управление запросами](advanced.html) — протоколы, потоки, диагностика, ошибки и низкоуровневые методы.
- [Client и AsyncClient](legacy.html) — запросы с браузерным контекстом и ответы в виде байтов.
- [Установка и профили: расширенный API](distribution.html) — прямое управление через `Distribution`.
- [Возможности и ограничения](limits.html) — поддерживаемые системы, браузеры и пределы запросов.

## Платформа и возможности

| Компонент | Поддержка в этом выпуске |
|---|---|
| Python | CPython 3.12, стандартная сборка с GIL |
| Windows | x64; системные условия — в [инструкции установки](install.html) |
| Linux | Ubuntu 24.04, x64 |
| Браузерные профили | Chrome 150 и Edge 151 — Free; Chrome 151–155 и Edge 156 — Pro |
| Интерфейсы | Синхронные и асинхронные запросы |

Список профилей определяется каталогом и правами API-ключа. Ограничения количества потоков по тарифу нет; технические пределы описаны в [справочнике](reference.html).

## Выбор API

Для HTTP-запросов приложения используйте `HttpClient` или `AsyncHttpClient`. Они принимают параметры URL, JSON, формы и файлы, обрабатывают перенаправления и возвращают `HttpResponse` с `.text`, `.json()` и `.raise_for_status()`. Cookies сохраняются между запросами одного клиента автоматически.

`Client` и `AsyncClient` подходят для запросов с явно заданным браузерным контекстом. Они возвращают `Response` с телом в байтах; сериализация данных и обработка ответа остаются в вашем коде. Если контекст не задан, клиент использует контекст открытия страницы. Это другой способ работы с библиотекой, а не устаревший API.

`Distribution` нужен для прямого управления установкой, выбором профиля и созданием сессий. Для первого запроса он не требуется.

Браузерный профиль задаёт параметры TLS и HTTP. При этом метод, адрес, заголовки и тело выбирает ваше приложение. `HttpClient` не исполняет браузерный Fetch: в частности, не проверяет CORS и не отправляет предварительный запрос preflight. Поле `assurance='custom-request'` у ответа обозначает именно этот способ отправки, а не результат измерения отпечатка.


## Профили и соединения

- [Автоматическое обновление и полные прогоны](profile-updates.html)
- [WebSocket](websocket.html)
- [HTTP/3 через MASQUE](masque.html)

## Microsoft Edge

Укажите `browser="edge"`; остальной HTTP API общий для обоих браузеров. [Выбор версии Edge и примеры](edge.html).
