Руководство по работе с HTTP в Python

    Команда Simple-Server
    03.06.2026
    8 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Что нужно знать для работы с requests

    Отправка HTTP-запросов и использование ответов — не rocket science. Но некоторые базовые знания все-таки требуются. Как минимум нужно знать основные методы, которые вы и будете отправлять на серверы.

    • GET — получить ресурс.
    • POST — создать ресурс.
    • PUT — обновить ресурс.
    • DELETE — удалить ресурс.

    Это не все методы. Есть еще HEAD, PATCH и другие. Но нам для практики понадобится только GET. Это самый распространенный метод, пользователи постоянно просят, чтобы серверы им что-нибудь отдали: страницы, посты, картинки. Обработка HTTP-запросов на Python с другими методами строится аналогичным образом.

    В ответ на запросы приходят коды состояния. Они находятся в диапазоне от 1xx до 5xx. Все пользователи интернета с ними встречаются, просто не все знают, что это такое. Ошибка 404 — это код состояния 404. Он сообщает, что произошла ошибка на стороне клиента: пользователь пытается перейти на страницу, которой не существует.

    Первая цифра кода состояния говорит о статусе ответа:

    • 1xx — информационные коды.
    • 2xx — успешно.
    • 3xx — перенаправление.
    • 4xx — ошибка на стороне клиента.
    • 5xx — ошибка на стороне сервера.

    Этих базовых знаний будет достаточно для того, чтобы выполнить пару интересных запросов и правильно интерпретировать ответы. Теперь давайте посмотрим, как вся эта внутренняя красота интернета обрабатывается библиотекой requests.

    Для работы с библиотекой на компьютере должен быть Python. Еще потребуется менеджер пакетов pip, чтобы установить requests.

    Установка Python requests с помощью pip:

    python -m pip install requests

    Код библиотеки лежит на GitHub. Вы можете клонировать его на свой компьютер:

    git clone git://github.com/psf/requests.git

    За последними изменениями в процессе установки следите в документации библиотеки.

    Теперь самое интересное — практика.

    Начнем с простого запроса. Дадим задание библиотеке Python requests связаться со страницей, на которой размещена информация про облачные серверы Simple-Server.

    Создайте файл script.py. Пусть внутри него будет такой скрипт:

    import requests result = requests.get('https://simple-server.tech/') print(result)

    Первой строкой вы импортируете библиотеку requests. Затем вводите переменную result и применяете метод GET, чтобы получить ответ от сервера, и указываете URI, который вас интересует. Последняя строчка — вывод ответа в терминале.

    Чтобы запустить эту короткую программу, откройте любой терминал, перейдите в папку, где лежит файл script.py, и выполните его командой:

    В ответ должен вернуться код статуса 200. Это значит, что запрошенная страница доступна. Можно работать с ней дальше.

    В качестве примера давайте попробуем задать несуществующий URI. В теории должен вернуться код ошибки 404.

    Меняем адрес страницы в нашем скрипте. Можно придумать свой вариант или просто испортить любую рабочую ссылку.

    import requests result = requests.get('https://simple-server.tech/') print(result)

    В ответ приходит код статуса 404.

    С точки зрения Python каждый ответ — это объект. У этого объекта есть собственные методы и функции, которые помогают получить дополнительную информацию или нормализовать данные.

    Давайте вернем правильный адрес страницы и попробуем получить ее содержимое. Для этого достаточно добавить метод text в команду print. Так должен выглядеть скрипт после редактирования:

    import requests result = requests.get('https://simple-server.tech/') print(result.text)

    Выполнение скрипта приведет к тому, что в терминале отобразится весь HTML-код запрошенной страницы. Вы можете увидеть разметку, подключенные файлы стилей, скрипты, контент. Это общедоступная информация. Ее можно увидеть и в браузере, используя опцию просмотра кода страницы.

    Вместо метода text можно использовать, например, метод url. Тогда в терминале отобразится ссылка, к которой вы делали запрос. Или, например, применить метод status_code. Тогда в терминале появится статус код запроса.

    Это было самое начало работы с requests в Python.**** Теперь давайте посмотрим более интересные примеры.

    Аутентификация помогает приложению понять, кто вы такой, и проверить, есть ли информация о вас в базе. Обычно вы предоставляете серверу свои учетные данные, передавая их через заголовок Authorization.

    Один из примеров API, который требует аутентификации пользователя, — API GitHub Authenticated User. Эта служба предоставляет информацию о профиле аутентифицированного пользователя. Чтобы сделать запрос к Authenticated User API, вы должны передать имя пользователя и пароль GitHub в кортеже, используя метод get():

    from getpass import getpass requests.get('https://api.github.com/user', auth=('username', getpass()))

    Если вы передали в кортеже auth действительные учетные данные, то в ответ вы получите сообщение об успехе:

    Если вы попытаетесь сделать тот же запрос без действительных учетных данных, то получите в ответ код состояния 401 Unauthorized:

    >>> requests.get('https://api.github.com/user')

    Когда вы передаете имя пользователя и пароль в кортеже, учетные данные применяются с использованием базовой схемы проверки подлинности доступа. Вы можете сделать тот же запрос, используя HTTPBasicAuth:

    from requests.auth import HTTPBasicAuth from getpass import getpass requests.get( 'https://api.github.com/user', auth=HTTPBasicAuth('username', getpass()) ) <Response [200]>

    Библиотека requests предоставляет и другие методы аутентификации, такие как HTTPDigestAuth и HTTPProxyAuth.

    Вы также можете использовать собственную реализацию. Главное помнить, что плохо проработанные механизмы аутентификации могут стать причиной появления уязвимостей в системе безопасности. Если нет строгой необходимости создавать свое решение, следует использовать проверенную схему аутентификации, такую ​​как Basic или OAuth.

    Работа с запросами в Python позволяет также решить еще одну интересную задачу — проверять наличие SSL-сертификата на сайте.

    При работе с конфиденциальными данными важна безопасность. Защитить их при передаче через HTTP помогает установка зашифрованного соединения с использованием сертификата SSL.

    Чтобы убедиться в безопасности сайта, необходимо проверять SSL-сертификат целевого сервера. Хорошая новость — библиотека requests делает это за вас по умолчанию. Однако для некоторых случаев вы можете изменить это поведение.

    Если хотите отключить проверку SSL-сертификата, передайте значение False параметру verify:

    requests.get('https://api.github.com', verify=False) InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. <Response [200]>

    Requests даже предупреждает вас, когда вы делаете запрос без проверки SSL, чтобы помочь сохранить данные в безопасности.

    Напоследок — небольшая проектная работа. Создадим утилиту, которая будет запрашивать прогноз погоды и отображать результат в терминале. Источником данных станет портал OpenWeather. Там можно бесплатно создать ключ для доступа по API.

    Создайте файл weather.py и напишите в нем:

    import requests result = requests.get(   'https://api.openweathermap.org/data/2.5/weather?q=Moscow,ru&appid=someidappkey0ff7889240be2&units=metric') weather = result.text print(weather)

    Сначала вы импортируете библиотеку requests. Затем делаете запрос по API к сервису погоды. После параметра q указываете город и страну, appid — это ключ, который вы должны создать на OpenWeather. Параметр units=metric говорит, что нужно использовать метрическую систему. Тогда температура будет отображаться в градусах Цельсия.

    Ответ по умолчанию приходит в формате JSON. Но можно выбрать XML или HTML, добавив в запрос параметр mode с соответствующим значением.

    Вот пример ответа в формате JSON:

    {"coord":{"lon":37.6156,"lat":55.7522},"weather":[{"id":802,"main":"Clouds","description":"scattered clouds","icon":"03d"}],"base":"stations","main":{"temp":7.14,"feels_like":7.14,"temp_min":6.42,"temp_max":7.3,"pressure":1024,"humidity":27,"sea_level":1024,"grnd_level":1006},"visibility":10000,"wind":{"speed":1.16,"deg":249,"gust":3.13},"clouds":{"all":49},"dt":1651144117,"sys":{"type":2,"id":47754,"country":"RU","sunrise":1651110824,"sunset":1651165208},"timezone":10800,"id":524901,"name":"Moscow","cod":200}

    Даже без дополнительной обработки данных легко обнаружить, что на момент проверки в Москве была температура чуть выше 7 градусов и небольшой ветер. С этой информацией можно уже работать: например, создать под них веб-интерфейс для понятного отображения.

    Вы изучили основы библиотеки requests. Теперь вы можете делать запросы, используя методы HTTP, выполнять аутентификацию пользователей, проверять данные и получать информацию из разных источников. Дальше — самостоятельное изучение и применение для решения реальных задач.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны