Универсальный HTTP/HTTPS клиент на Python с поддержкой:
- GET, POST, PUT, DELETE запросов
- Заголовков и тела запроса в формате JSON
- Таймаута и сессий с сохранением cookies
- Сохранения ответа в файл
- Прогресс-бара для больших загрузок
- Поддержки WebSocket
- Склонируйте репозиторий:
git clone https://github.com/pavilk/http-client
cd http-client- Создайте виртуальное окружение:
python -m venv .venv
# Linux / macOS
source .venv/bin/activate
# Windows
.venv\Scripts\activate- Установите зависимости:
pip install -r requirements.txtЗапуск клиента:
python main.pyПрограмма интерактивно спросит:
- URL запроса (
http://илиhttps://) - HTTP-метод (
get,post,put,delete) - User-Agent (chrome, firefox, safari, default)
- Логин/пароль для Basic Auth
- Заголовки и тело в формате JSON
- Таймаут и имя файла для сохранения ответа
Пример с аргументами командной строки:
python main.py -u https://httpbin.org/get -m get --headers '{"User-Agent":"Test"}' -t 5 -f response.txtПоддержка WebSocket (ws:// или wss://):
python main.py ws://echo.websocket.org- После подключения можно отправлять сообщения
- Введите
/exit, чтобы закрыть соединение
Пример работы:
Введите сообщение (или /exit): Hello
Ответ: Hello
Введите сообщение (или /exit): /exit
Соединение закрыто
Для больших загрузок используется tqdm. Пример при скачивании 5 МБ данных:
Downloading https://httpbin.org/stream-bytes/5000000 (chunked): 5.00MB [00:01, 4.5MB/s]
-
Прогресс-бар показывает:
- Сколько данных скачано
- Общий размер
- Скорость загрузки
http-client/
├─ main.py # Точка входа
├─ client.py # Класс Client с поддержкой HTTP и WebSocket
├─ http_request.py # Класс HttpRequest для хранения данных запроса/ответа
├─ cli.py # Парсер аргументов командной строки
├─ test_client.py # Тесты для HTTP, WebSocket и утилит
├─ requirements.txt # Зависимости проекта
└─ README.md
Используется pytest с покрытием кода:
# Покрытие в терминале
pytest --cov=. --cov-report=term-missing
# Генерация HTML-отчета
pytest --cov=. --cov-report=htmlПосле выполнения pytest --cov-report=html появится папка htmlcov/.
Открой htmlcov/index.html в браузере, чтобы увидеть, какие строки кода покрыты тестами, а какие нет.
- Сохраняет cookies между сессиями
- Повторные попытки при ошибках сервера (5xx)
- Возможность отправлять тело запроса и заголовки в формате JSON
- Возможность сохранять ответ в файл
- Поддержка WebSocket с интерактивным вводом
- Прогресс-бар при скачивании больших файлов
- Python 3.11+
- requests
- tqdm
- websockets
- pytest