Часто задаваемые вопросы¶
Данная часть документации отвечает на распространенные вопросы о Requests.
Поддерживается ли декодирование данных?¶
Requests автоматически распаковывают ответы, закодированные с помощью gzip, и делает всё возможное, чтобы декодировать содержимое ответа в Юникод, когда это возможно.
Если установлен пакет brotli или brotlicffi, requests также декодирует ответы, закодированные по Brotli.
При необходимости вы можете получить прямой доступ к необработанному ответу (и даже к сокету).
Можно ли установить свой User-Agent?¶
Requests позволяют легко переопределять строки User-Agent вместе с любым другим заголовком HTTP. См. документацию о заголовках.
Почему не Httplib2?¶
Крис Адамс дал отличное объяснение:
Модуль httplib2 не реализует всех возможностей requests: он гораздо более многословный как клиент, но не так хорошо документирован и по-прежнему требует слишком много кода для основных операций. Я ценю то, что пытается сделать httplib2, что при создании современного HTTP-клиента есть масса жёстких низкоуровневых неприятностей, но на самом деле вместо него проще использовать requests. Кеннет Рейц очень мотивирован и понимает, насколько простые вещи должны быть простыми, тогда как httplib2 больше похож на академическое упражнение, чем на то, что люди должны использовать для создания производственных систем [1].
Раскрытие информации: я указан в файле AUTHORS requests, но могу претендовать на признание, ох, около 0,0001% крутизны.
Поддерживается ли Python 3?¶
Да! Requests официально поддерживает Python 2.7 и 3.6+ и PyPy.
Поддержка Python 2?¶
Да! У нас нет ближайших планов по прекращению поддержки Python 2.7. Мы понимаем, что у нас большая база пользователей с различными потребностями, и намерены поддерживать поддержку Python 2.7 в Requests пока pip не прекратит поддержку Python 2.7 (предполагаемой даты этого пока нет).
Тем не менее, настоятельно рекомендует пользователям перейти на Python 3.6+, поскольку Python 2.7 больше не получает исправления ошибок или обновления безопасности с 1 января 2020 года.
Что за ошибка «hostname doesn’t match (имя хоста не совпадает)»?¶
Эти ошибки возникают, когда проверка SSL-сертификата не может соответствовать сертификату, с которым сервер отвечает на запросы имени хоста, которые, по его мнению, связываются. Если вы уверены, что настройка SSL сервера правильная (например, потому что вы можете посетить сайт с помощью своего браузера), и вы используете Python 2.7, возможное объяснение состоит в том, что вам требуется Указание-Имени-Сервера.
Указание-Имени-Сервера, или SNI, является официальным расширением SSL, в котором клиент сообщает серверу, с каким именем хоста он обращается. Это важно, когда серверы используют виртуальный хостинг. Когда на таких серверах размещается более одного SSL-сайта, они должны иметь возможность возвращать соответствующий сертификат на основе имени хоста, к которому подключается клиент.
Python3 и Python 2.7.9+ включают встроенную поддержку SNI в своём модуле SSL.