Чему вы научитесь
- Читать вывод curl и определять метод, адрес, статус, заголовки и тело фактического HTTP-ответа
- Различать этапы системного разрешения имени, TCP-соединения, TLS-проверки и обмена HTTP-данными
- Проверять разрешение имени через socket.getaddrinfo и понимать, какие выводы этот вызов позволяет сделать о DNS
- Воспроизводить ошибку разрешения имени и определять, почему TCP-соединение ещё не началось
- Диагностировать отказ TCP-соединения с закрытым портом и проверять исправление адреса или порта
- Воспроизводить таймаут ожидания HTTP-ответа и отличать его от отказа подключения и таймаута соединения
- Отличать ошибки подключения и ожидания от ответов HTTP 404 и 503, которые действительно вернул сервер
- Проверять HTTP-заголовки и перенаправления, различать исходный ответ 302 и результат перехода клиента
- Запускать локальный HTTPS-сервис и устанавливать, на каком этапе проверяется TLS-сертификат
- Разбирать ошибку доверия к сертификату и настраивать доверие к учебному удостоверяющему центру для отдельного клиента
- Диагностировать несовпадение имени сервера с сертификатом и исправлять подключение с сохранением проверки TLS
- Создавать диагностический HTTPX-клиент на Python и отдельно обрабатывать HTTP-ответы, ошибки соединения и таймауты
- Писать проверки pytest для успешных запросов, HTTP-ошибок и контролируемых сетевых отказов
- Выбирать следующую диагностическую проверку по симптому и подтверждать вывод наблюдаемыми результатами
- Разрабатывать универсальный Python-пробник для проверки разных конфигураций HTTP(S)-запросов
- Находить и исправлять причины пяти независимых неисправностей, повторяя исходные запросы до подтверждённого HTTP 200
- Возвращать учебные конфигурации в исходное состояние после диагностики и проверять воспроизводимость отказов
О курсе

🧭 Отправная точка
При обращении к сервису клиент может получить ошибку разрешения имени, отказ TCP-соединения или HTTP 503. Эти результаты говорят о разных этапах запроса. В первых двух случаях HTTP-ответа нет, а при 503 сервер уже ответил клиенту.
С HTTPS добавляется проверка сертификата. Например, соединение может завершиться ещё до HTTP из-за недоверенного удостоверяющего центра или несовпадения имени сервера с сертификатом. Чтобы найти причину, нужно установить, какой этап прошёл успешно и где возник отказ.
На курсе вы будете исследовать такие ситуации на готовом локальном HTTP/HTTPS-сервисе FastAPI. С помощью curl и Python воспроизведёте характерные ошибки, научитесь читать результаты запросов и выбирать следующую проверку. Затем напишете собственные диагностические скрипты и тесты.
🎯 Цель курса — научиться различать сбои разрешения имени, TCP, ожидания ответа, TLS и HTTP, находить причину по наблюдаемым признакам и проверять исправление повторным запуском.
⚙️ Что вы будете делать
-
🔎 Разбирать этапы запроса. Проверите системное разрешение имени через
socket.getaddrinfo, воспроизведёте отказ соединения с закрытым портом и превышение времени ожидания HTTP-ответа. Сравните эти случаи с ответами404и503, чтобы понимать, когда сервер действительно ответил, а когда обмен остановился раньше. -
🌐 Исследовать HTTP и HTTPS. Поработаете с
curl, заголовками и перенаправлениями. Запустите локальный HTTPS-сервер, воспроизведёте ошибки доверия сертификату и несовпадения имени в сертификате. Настроите доверие к учебному удостоверяющему центру только для своего клиента, сохранив проверку TLS. -
🧪 Писать диагностический клиент и тесты. Создадите Python-клиент на HTTPX, который различает полученный HTTP-ответ, отказ подключения и таймаут чтения. Добавите проверки pytest для успешных и ошибочных сценариев, чтобы сравнивать поведение до исправления и после него.
-
🔧 Самостоятельно восстанавливать запросы. Научитесь определять следующую проверку по конкретному симптому. В финале создадите отдельный пробник на Python, исследуете пять независимых неисправных конфигураций, исправите каждую и подтвердите результат повторным запуском.
🔥 Чем отличается курс
Вы работаете с одним готовым локальным стендом. Создавать сервер с нуля не потребуется: основное время уделите поведению клиента, сетевым ошибкам и способам их проверки. Для каждого случая можно получить исходный отказ, изменить один параметр и сравнить результат.
Системное разрешение имени, TCP и HTTP исследуются отдельно. Например, успешный вызов getaddrinfo показывает, что система вернула адрес, но ещё ничего не говорит о доступности порта. Этот вызов также не подтверждает, что адрес был получен именно от DNS-сервера. Такие различия помогают делать выводы по фактическим данным.
Для HTTPS предусмотрены два разных упражнения: проверка доверия к локальному сертификату и проверка имени сервера. Вы увидите, какой отказ возникает в каждом случае, и восстановите соединение с включённой проверкой сертификата. Менять системное хранилище доверенных сертификатов не нужно.
В практических заданиях вы будете фиксировать HTTP-статус или тип исключения, проверять настройки клиента и повторять исходный сценарий. Основные эксперименты выполняются локально, без внешних сетевых сервисов, изменения системного DNS и запросов к посторонним сайтам.
📚 Дополнительные бесплатные материалы
- 📄 Как проверить DNS: команды dig, nslookup и разбор ответов
- 📄 SSL и TLS: в чём разница, как работает HTTPS и сертификаты
- 📄 Kubernetes с нуля: Pod, Deployment, Service и Ingress
- 📄 Docker Compose: что это, как работает и как запустить приложение
🎯 Итоговая диагностика
К концу курса вы напишете диагностический клиент на HTTPX и набор тестов pytest. Они помогут отличать реальные HTTP-ответы от ошибок подключения и ожидания данных.
В итоговом задании получите пять отдельных конфигураций неисправных HTTP(S)-запросов. Для каждого случая создадите и запустите универсальный case_probe.py, определите этап отказа, исправите минимально необходимую настройку и повторите проверку тем же пробником. Успех подтверждается фактическим HTTP 200 для каждого случая. После проверки восстановите исходные учебные конфигурации.
Курс бесплатный: 4 модуля, 17 уроков, ориентировочно 5–7 часов с практикой. Для работы понадобятся Python 3.12, curl и Git. Задания проверяются самостоятельно, с помощью команд и локальных тестов; ручная рецензия не требуется.
🧪 Поддержка
🧪 Самопроверка вместо ожидания ручной рецензии. Вы сверяете результат по критериям задания, ответам и предусмотренным в курсе локальным проверкам. Разборы самостоятельных упражнений доступны там, где они предусмотрены программой.
Индивидуальная проверка работ преподавателем и персональные консультации в этом курсе не предусмотрены. Формат рассчитан на самостоятельное прохождение.
🚀 О XNova
XNova — практические курсы и учебные проекты для разработчиков, тестировщиков и инженеров. Мы разбираем технологии на работающих примерах: с кодом, наблюдаемым результатом и объяснением инженерных решений.
🔗 xnova.dev — другие курсы и материалы XNova.
📬 Контакты и сообщество
Продолжить знакомство с XNova, следить за новыми материалами или задать организационный вопрос можно здесь:
- 📣 Telegram-канал: @xnova_dev — анонсы курсов, статьи и новости проекта.
- 💬 Написать XNova: @xnova_contact — контакт для вопросов о курсах и проекте.
- ✉️ Почта: contact@xnova.dev — если удобнее написать письмом.
- 💻 GitHub: xnova-tech — открытые учебные проекты и примеры.
Для кого этот курс
Начальные требования
🧠 Начальные знания
- Вы умеете запускать программы Python, ориентируетесь в функциях, импортах и исключениях.
- Вы знакомы с командной строкой и базовыми действиями Git.
- Вы представляете, что клиент отправляет HTTP-запрос и получает ответ; подробная сетевая подготовка не требуется.
🛠️ Инструменты и окружение
- Python 3.12 и возможность создать виртуальное окружение.
- Git и личный аккаунт GitHub для собственной копии открытого учебного проекта.
- curl с HTTPS и локальный loopback-интерфейс.
- Python-зависимости FastAPI, Uvicorn, HTTPX, pytest и trustme из закреплённого
requirements.txtучебного проекта. - Для Windows, macOS и Ubuntu Linux в уроках приведены отдельные команды подготовки и проверки окружения.
Для первоначальной установки зависимостей понадобится интернет. После установки основная практика должна работать без внешних сетевых сервисов.
🧭 Чего не потребуется
Docker, Kubernetes, платные API, личный TLS-сертификат, доступ к рабочим системам, изменение DNS, /etc/hosts, системных доверенных CA или прав администратора.
💰 Формат и стоимость
Курс бесплатный, ориентировочно 5–7 часов самостоятельной работы. Вопросы проверяются автоматически; практические результаты вы проверяете локально с помощью команд и pytest. Ручная рецензия не предусмотрена.
Как проходит обучение
🌐 Один запрос, несколько возможных причин сбоя. Объяснения и вопросы помогают выбрать следующую проверку, а локальный HTTP/HTTPS-стенд сразу показывает её результат.
- 🔎 Исследуете симптомы: различаете ошибки DNS, соединения, TLS и ответы приложения.
- 🛠️ Меняете клиент: собираете диагностические наблюдения через curl и Python.
- ✅ Подтверждаете вывод: повторяете запрос и запускаете тесты, чтобы отличить исправление от случайного успеха.
Программа курса
В курс входят
- 18 уроков
- 39минут видео
- 17 тестов
Наши преподаватели
Что вы получаете
- Собственная копия открытой учебной лаборатории с готовым локальным HTTP/HTTPS-сервисом FastAPI и контролируемыми сетевыми ошибками
- Диагностические скрипты на Python для проверки разрешения имени, соединения и выбора следующей проверки по симптому
- Собственный HTTPX-клиент с раздельной обработкой HTTP-ответов, ошибок подключения и таймаутов
- Набор локальных тестов pytest для успешных запросов, HTTP-статусов, ошибок соединения и TLS
- Универсальный case_probe.py и результаты самостоятельного восстановления пяти неисправных HTTP(S)-запросов
- Исправленные учебные конфигурации с подтверждёнными ответами HTTP 200 и проверкой возврата к исходным ошибочным сценариям