Интерфейс разработчика
В этой части документации описаны все интерфейсы Requests. Для тех случаев, когда Requests зависит от внешних библиотек, здесь приведены сведения о наиболее важных из них и ссылки на официальную документацию.
Основной интерфейс
Доступ ко всем функциям Requests можно получить с помощью этих 7 методов. Каждый из них возвращает экземпляр объекта Response.
- requests.request(method:str, url:_t.UriType, **kwargs:Unpack[_t.RequestKwargs]) Response[исходный код]
-
Создаёт и отправляет
Request.- Параметры:
-
-
method – метод для нового объекта
Request:GET,OPTIONS,HEAD,POST,PUT,PATCHилиDELETE. -
url – URL для нового объекта
Request. -
params – (необязательно) Словарь, список кортежей или байты для передачи в строке запроса
Request. -
data – (необязательно) Словарь, список кортежей, байты или файловый объект для передачи в теле
Request. -
json – (необязательно) Объект Python, сериализуемый в JSON, для передачи в теле
Request. -
headers – (необязательно) Словарь заголовков HTTP, передаваемых с
Request. -
cookies – (необязательно) Словарь или объект CookieJar для передачи с
Request. -
files – (необязательно) Словарь с
'name': file-like-objects(или{'name': file-tuple}) для загрузки с кодированием multipart.file-tupleможет быть кортежем из 2 элементов('filename', fileobj), кортежем из 3 элементов('filename', fileobj, 'content_type')или кортежем из 4 элементов('filename', fileobj, 'content_type', custom_headers), где'content_type'— строка, задающая тип содержимого указанного файла, аcustom_headers— объект, подобный словарю, содержащий дополнительные заголовки для файла. - auth – (необязательно) Кортеж аутентификации для включения базовой, дайджест-аутентификации или пользовательской HTTP-аутентификации.
- timeout (float или tuple) – (необязательно) Сколько секунд ожидать отправки данных сервером, прежде чем прекратить ожидание; задаётся числом с плавающей точкой или кортежем (тайм-аут подключения, тайм-аут чтения).
-
allow_redirects (bool) – (необязательно) Логическое значение. Включает или отключает перенаправления GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD. По умолчанию
True. - proxies – (необязательно) Словарь, сопоставляющий протокол с URL прокси-сервера.
-
verify – (необязательно) Логическое значение, определяющее, проверять ли TLS-сертификат сервера, либо строка — путь к используемому пакету сертификатов CA. По умолчанию
True. -
stream – (необязательно) Если
False, содержимое ответа будет загружено немедленно. - cert – (необязательно) Если строка — путь к файлу сертификата клиента SSL (.pem). Если кортеж — пара (‘cert’, ‘key’).
-
method – метод для нового объекта
- Возвращает:
-
Объект
Response - Тип возвращаемого значения:
Использование:
>>> import requests >>> req = requests.request('GET', 'https://httpbin.org/get') >>> req <Response [200]>
- requests.head(url:_t.UriType, **kwargs:Unpack[_t.RequestKwargs]) Response[исходный код]
-
Отправляет запрос HEAD.
- Параметры:
- Возвращает:
-
Объект
Response - Тип возвращаемого значения:
- requests.get(url:_t.UriType, params:_t.ParamsType=None, **kwargs:Unpack[_t.GetKwargs]) Response[исходный код]
-
Отправляет запрос GET.
- Параметры:
- Возвращает:
-
Объект
Response - Тип возвращаемого значения:
- requests.post(url:_t.UriType, data:_t.DataType=None, json:_t.JsonType=None, **kwargs:Unpack[_t.PostKwargs]) Response[исходный код]
-
Отправляет запрос POST.
- Параметры:
- Возвращает:
-
Объект
Response - Тип возвращаемого значения:
- requests.put(url:_t.UriType, data:_t.DataType=None, **kwargs:Unpack[_t.DataKwargs]) Response[исходный код]
-
Отправляет запрос PUT.
- Параметры:
- Возвращает:
-
Объект
Response - Тип возвращаемого значения:
- requests.patch(url:_t.UriType, data:_t.DataType=None, **kwargs:Unpack[_t.DataKwargs]) Response[исходный код]
-
Отправляет запрос PATCH.
- Параметры:
- Возвращает:
-
Объект
Response - Тип возвращаемого значения:
Исключения
- exceptionrequests.RequestException(*args:Any, **kwargs:Any)[исходный код]
-
При обработке запроса возникло неоднозначное исключение.
- exceptionrequests.ConnectionError(*args:Any, **kwargs:Any)[исходный код]
-
Произошла ошибка соединения.
- exceptionrequests.HTTPError(*args:Any, **kwargs:Any)[исходный код]
-
Произошла ошибка HTTP.
- exceptionrequests.TooManyRedirects(*args:Any, **kwargs:Any)[исходный код]
-
Слишком много перенаправлений.
- exceptionrequests.ConnectTimeout(*args:Any, **kwargs:Any)[исходный код]
-
Время ожидания запроса истекло при попытке подключения к удалённому серверу.
Запросы, вызвавшие эту ошибку, безопасно отправлять повторно.
- exceptionrequests.ReadTimeout(*args:Any, **kwargs:Any)[исходный код]
-
Сервер не отправил данные за отведённое время.
- exceptionrequests.Timeout(*args:Any, **kwargs:Any)[исходный код]
-
Время ожидания запроса истекло.
Перехват этой ошибки позволяет перехватить как ошибки
ConnectTimeout, так и ошибкиReadTimeout.
- exceptionrequests.JSONDecodeError(*args:Any, **kwargs:Any)[исходный код]
-
Не удалось декодировать текст в JSON
Сеансы Request
- classrequests.Session[исходный код]
-
Сеанс Requests.
Обеспечивает сохранение файлов cookie, пул соединений и настройку.
Базовое использование:
>>> import requests >>> s = requests.Session() >>> s.get('https://httpbin.org/get') <Response [200]>Или в качестве менеджера контекста:
>>> with requests.Session() as s: ... s.get('https://httpbin.org/get') <Response [200]>- auth:_t.AuthType
-
Кортеж или объект аутентификации по умолчанию, добавляемый к
Request.
- cert:_t.CertType
-
Сертификат SSL-клиента по умолчанию: если это строка, то путь к файлу сертификата SSL-клиента (.pem). Если кортеж — пара (‘cert’, ‘key’).
- close() None[исходный код]
-
Закрывает все адаптеры и, следовательно, сеанс.
- cookies:RequestsCookieJar
-
Объект CookieJar, содержащий все активные файлы cookie, установленные в этом сеансе. По умолчанию это
RequestsCookieJar, но может быть любым другим совместимым объектомcookielib.CookieJar.
- delete(url:_t.UriType, **kwargs:Unpack[_t.RequestKwargs]) Response[исходный код]
-
Отправляет запрос DELETE. Возвращает объект
Response.- Параметры:
-
-
url – URL для нового объекта
Request. -
**kwargs – Необязательные аргументы, которые принимает
request.
-
url – URL для нового объекта
- Тип возвращаемого значения:
- get(url:_t.UriType, params:_t.ParamsType=None, **kwargs:Unpack[_t.GetKwargs]) Response[исходный код]
-
Отправляет запрос GET. Возвращает объект
Response.- Параметры:
- Тип возвращаемого значения:
- get_adapter(url:str) BaseAdapter[исходный код]
-
Возвращает подходящий адаптер соединения для указанного URL.
- Тип возвращаемого значения:
- get_redirect_target(resp:Response) str|None
-
Получает объект Response. Возвращает URI перенаправления или
None
- head(url:_t.UriType, **kwargs:Unpack[_t.RequestKwargs]) Response[исходный код]
-
Отправляет запрос HEAD. Возвращает объект
Response.- Параметры:
-
-
url – URL для нового объекта
Request. -
**kwargs – Необязательные аргументы, которые принимает
request.
-
url – URL для нового объекта
- Тип возвращаемого значения:
- headers:CaseInsensitiveDict[str]
-
Словарь заголовков без учета регистра, отправляемых с каждым запросом
Request, отправленным из этого сеансаSession.
- hooks:dict[str,list[_t.HookType]]
-
Обработчики событий.
- max_redirects:int
-
Максимальное допустимое количество перенаправлений. Если запрос превышает это ограничение, возникает исключение
TooManyRedirects. По умолчанию используется requests.models.DEFAULT_REDIRECT_LIMIT, равный 30.
- merge_environment_settings(url:str, proxies:dict[str,str]|None, stream:bool|None, verify:_t.VerifyType|None, cert:_t.CertType) dict[str,Any][исходный код]
-
Проверяет настройки окружения и объединяет их с некоторыми параметрами.
- Тип возвращаемого значения:
- mount(prefix:str, adapter:BaseAdapter) None[исходный код]
-
Регистрирует адаптер соединения для префикса.
Адаптеры сортируются по убыванию длины префикса.
- options(url:_t.UriType, **kwargs:Unpack[_t.RequestKwargs]) Response[исходный код]
-
Отправляет запрос OPTIONS. Возвращает объект
Response.- Параметры:
-
-
url – URL для нового объекта
Request. -
**kwargs – Необязательные аргументы, которые принимает
request.
-
url – URL для нового объекта
- Тип возвращаемого значения:
- params:MutableMapping[str,Any]
-
Словарь данных строки запроса, добавляемых к каждому
Request. Значениями словаря могут быть списки, представляющие параметры запроса с несколькими значениями.
- patch(url:_t.UriType, data:_t.DataType=None, **kwargs:Unpack[_t.DataKwargs]) Response[исходный код]
-
Отправляет запрос PATCH. Возвращает объект
Response.- Параметры:
- Тип возвращаемого значения:
- post(url:_t.UriType, data:_t.DataType=None, json:_t.JsonType=None, **kwargs:Unpack[_t.PostKwargs]) Response[исходный код]
-
Отправляет запрос POST. Возвращает объект
Response.- Параметры:
- Тип возвращаемого значения:
- prepare_request(request:Request) PreparedRequest[исходный код]
-
Создает
PreparedRequestдля отправки и возвращает его. ПараметрыPreparedRequestобъединяются с параметрами экземпляраRequestи параметрамиSession.- Параметры:
-
request – экземпляр
Request, который нужно подготовить с параметрами этого сеанса. - Тип возвращаемого значения:
- proxies:dict[str,str]
-
Словарь, сопоставляющий протокол или протокол и узел с URL прокси-сервера (например, {‘http’: ‘foo.bar:3128’, ‘http://host.name’: ‘foo.bar:4012’}), используемого для каждого
Request.
- put(url:_t.UriType, data:_t.DataType=None, **kwargs:Unpack[_t.DataKwargs]) Response[исходный код]
-
Отправляет запрос PUT. Возвращает объект
Response.- Параметры:
- Тип возвращаемого значения:
- rebuild_auth(prepared_request:PreparedRequest, response:Response) None
-
При перенаправлении может потребоваться удалить данные аутентификации из запроса, чтобы не допустить утечки учетных данных. Этот метод интеллектуально удаляет и повторно применяет аутентификацию, когда это возможно, чтобы избежать потери учетных данных.
- rebuild_method(prepared_request:PreparedRequest, response:Response) None
-
При перенаправлении может потребоваться изменить метод запроса в соответствии с определенными спецификациями или поведением браузера.
- rebuild_proxies(prepared_request:PreparedRequest, proxies:dict[str,str]|None) dict[str,str]
-
Этот метод повторно оценивает конфигурацию прокси с учётом переменных среды. Если выполняется перенаправление на URL, указанный в NO_PROXY, конфигурация прокси удаляется. В противном случае для этого URL задаются отсутствующие ключи прокси (на случай, если они были удалены при предыдущем перенаправлении).
При необходимости этот метод также заменяет заголовок Proxy-Authorization.
- Тип возвращаемого значения:
- request(method:str, url:_t.UriType, params:_t.ParamsType=None, data:_t.DataType=None, headers:_t.HeadersType=None, cookies:RequestsCookieJar|CookieJar|dict[str,str]|None=None, files:_t.FilesType=None, auth:_t.AuthType=None, timeout:_t.TimeoutType=None, allow_redirects:bool=True, proxies:dict[str,str]|None=None, hooks:_t.HooksInputType|None=None, stream:bool|None=None, verify:_t.VerifyType|None=None, cert:_t.CertType=None, json:_t.JsonType=None) Response[исходный код]
-
Создаёт
Request, подготавливает его и отправляет. Возвращает объектResponse.- Параметры:
-
-
method – метод для нового объекта
Request. -
url – URL для нового объекта
Request. -
params – (необязательно) Словарь или байты, передаваемые в строке запроса для
Request. -
data – (необязательно) Словарь, список кортежей, байты или файловый объект, передаваемый в теле
Request. -
json – (необязательно) JSON, передаваемый в теле
Request. -
headers – (необязательно) Словарь HTTP-заголовков, передаваемых вместе с
Request. -
cookies – (необязательно) Словарь или объект CookieJar, передаваемый вместе с
Request. -
files – (необязательно) Словарь с
'filename': file-like-objectsдля загрузки с кодированием multipart. - auth – (необязательно) Кортеж для аутентификации или вызываемый объект для включения базовой, дайджест-аутентификации или пользовательской HTTP-аутентификации.
- timeout (float или tuple) – (необязательно) Время ожидания данных от сервера в секундах до прекращения ожидания: число с плавающей точкой или кортеж (тайм-аут подключения, тайм-аут чтения).
- allow_redirects (bool) – (необязательно) По умолчанию имеет значение True.
- proxies – (необязательно) Словарь, сопоставляющий протокол или протокол и имя хоста с URL прокси-сервера.
- hooks – (необязательно) Словарь, сопоставляющий имя обработчика с одним или несколькими событиями; обработчик события должен быть вызываемым объектом.
-
stream – (необязательно) следует ли сразу загружать содержимое ответа. По умолчанию
False. -
verify – (необязательно) Логическое значение, определяющее, проверять ли TLS-сертификат сервера, или строка с путём к используемому пакету сертификатов центра сертификации. По умолчанию
True. Если задано значениеFalse, requests принимает любой TLS-сертификат, предоставленный сервером, и игнорирует несовпадения имени хоста и/или истёкшие сертификаты, что делает приложение уязвимым для атак типа «человек посередине» (MitM). ЗначениеFalseможет быть полезно при локальной разработке или тестировании. - cert – (необязательно) Если указана строка, это путь к файлу клиентского SSL-сертификата (.pem). Если указан кортеж, это пара (‘cert’, ‘key’).
-
method – метод для нового объекта
- Тип возвращаемого значения:
- resolve_redirects(resp:Response, req:PreparedRequest, stream:bool=False, timeout:_t.TimeoutType=None, verify:_t.VerifyType=True, cert:_t.CertType=None, proxies:dict[str,str]|None=None, yield_requests:bool=False, **adapter_kwargs:Any) Generator[Response,None,None]
-
Получает Response. Возвращает генератор объектов Response или Request.
- send(request:PreparedRequest, **kwargs:Any) Response[исходный код]
-
Отправляет заданный PreparedRequest.
- Тип возвращаемого значения:
- should_strip_auth(old_url:str, new_url:str) bool
-
Определяет, следует ли удалять заголовок Authorization при перенаправлении
- stream:bool
-
Значение по умолчанию для потоковой передачи содержимого ответа.
- trust_env:bool
-
Доверять настройкам среды для конфигурации прокси, аутентификации по умолчанию и других подобных параметров.
- verify:_t.VerifyType
-
Проверка SSL по умолчанию. По умолчанию
True; requests проверяет TLS-сертификат удалённой стороны. Если для verify задано значениеFalse, requests принимает любой TLS-сертификат, предоставленный сервером, и игнорирует несовпадения имени хоста и/или истёкшие сертификаты, что делает приложение уязвимым для атак типа «человек посередине» (MitM). Устанавливайте значениеFalseтолько для тестирования. Если для verify задана строка, она должна содержать путь к файлу с пакетом сертификатов центра сертификации, который будет использоваться для проверки TLS-сертификата.
Классы нижнего уровня
- classrequests.Request(method:str|None=None, url:_t.UriType|None=None, headers:_t.HeadersType=None, files:_t.FilesType=None, data:_t.DataType=None, params:_t.ParamsType=None, auth:_t.AuthType=None, cookies:RequestsCookieJar|CookieJar|dict[str,str]|None=None, hooks:_t.HooksInputType|None=None, json:_t.JsonType=None)[исходный код]
-
Объект
Request, созданный пользователем.Используется для подготовки
PreparedRequest, который отправляется на сервер.- Параметры:
-
- method – используемый метод HTTP.
- url – URL для отправки.
- headers – словарь заголовков для отправки.
- files – словарь файлов {имя_файла: файловый_объект} для отправки в формате multipart.
-
data – тело запроса. Если передан словарь или список кортежей
[(key, value)], данные будут закодированы как форма. - json – данные JSON для тела запроса (если не указаны files или data).
-
params – параметры URL, добавляемые к URL. Если передан словарь или список кортежей
[(key, value)], данные будут закодированы как форма. - auth – обработчик аутентификации или кортеж (пользователь, пароль).
- cookies – словарь или CookieJar с файлами cookie, которые нужно прикрепить к этому запросу.
- hooks – словарь хуков обратного вызова для внутреннего использования.
Использование:
>>> import requests >>> req = requests.Request('GET', 'https://httpbin.org/get') >>> req.prepare() <PreparedRequest [GET]>- deregister_hook(event:str, hook:Callable[[Response],Any]) bool
-
Отменяет регистрацию ранее зарегистрированного хука. Возвращает True, если хук существовал, и False в противном случае.
- prepare() PreparedRequest[исходный код]
-
Создает
PreparedRequestдля отправки и возвращает его.
- register_hook(event:str, hook:Iterable[Callable[[Response],Any]]|Callable[[Response],Any]) None
-
Корректно регистрирует хук.
- classrequests.Response[исходный код]
-
Объект
Response, содержащий ответ сервера на HTTP-запрос.- propertyapparent_encoding:str|None
-
Предполагаемая кодировка, определенная библиотеками charset_normalizer или chardet.
- close() None[исходный код]
-
Возвращает соединение в пул. После вызова этого метода к лежащему в его основе объекту
rawбольше нельзя обращаться.Примечание: Обычно нет необходимости вызывать этот метод явно.
- propertycontent:bytes
-
Содержимое ответа в виде байтов.
- cookies:RequestsCookieJar
-
Объект CookieJar с файлами cookie, полученными от сервера.
- elapsed:datetime.timedelta
-
Время, прошедшее между отправкой запроса и получением ответа (в виде timedelta). Это свойство измеряет именно время между отправкой первого байта запроса и завершением разбора заголовков. Поэтому на него не влияют ни получение содержимого ответа, ни значение аргумента-ключевого слова
stream.
- encoding:str|None
-
Кодировка для декодирования при обращении к r.text.
- headers:CaseInsensitiveDict[str]
-
Словарь заголовков ответа без учета регистра. Например,
headers['content-encoding']вернет значение заголовка ответа'Content-Encoding'.
- history:list[Response]
-
Список объектов
Responseиз истории запроса. Здесь будут находиться все ответы перенаправления. Список упорядочен от самого старого запроса к самому последнему.
- propertyis_redirect:bool
-
True, если этот Response представляет собой корректно сформированный HTTP-ответ перенаправления, который мог быть обработан автоматически (методом
Session.resolve_redirects).
- iter_content(chunk_size:int|None=1, decode_unicode:Literal[False]=False) Iterator[bytes][исходный код]
- iter_content(chunk_size:int|None=1, *, decode_unicode:Literal[True]) Iterator[str|bytes]
-
Перебирает данные ответа. Если для запроса задано stream=True, этот метод позволяет не загружать все содержимое больших ответов в память сразу. Размер фрагмента — это количество байтов, которое следует загрузить в память. Он не обязательно совпадает с длиной каждого возвращаемого элемента, поскольку данные могут декодироваться.
chunk_size должен иметь тип int или None. Значение None работает по-разному в зависимости от значения
stream. При stream=True данные считываются по мере поступления фрагментов, размер которых определяется полученными данными. При stream=False данные возвращаются одним фрагментом.Если decode_unicode имеет значение True, содержимое декодируется с использованием сведений о кодировке из ответа. Если сведения о кодировке отсутствуют, возвращаются байты. Это поведение можно изменить, вручную задав
encodingв ответе.
- iter_lines(chunk_size:int=ITER_CHUNK_SIZE, decode_unicode:Literal[False]=False, delimiter:bytes|None=None) Iterator[bytes][исходный код]
- iter_lines(chunk_size:int=ITER_CHUNK_SIZE, *, decode_unicode:Literal[True], delimiter:str|bytes|None=None) Iterator[str|bytes]
-
Перебирает данные ответа построчно. Если для запроса задано stream=True, этот метод позволяет не загружать все содержимое больших ответов в память сразу.
Параметр decode_unicode работает так же, как в
iter_content, с теми же ограничениями.Примечание
Этот метод не является реентерабельным.
- json(**kwargs:Any) Any[исходный код]
-
Декодирует тело ответа JSON (если оно есть) в объект Python.
В зависимости от содержимого ответа метод может вернуть словарь, список и т. д.
- Параметры:
-
**kwargs – Необязательные аргументы, принимаемые
json.loads. - Вызывает исключение:
-
requests.exceptions.JSONDecodeError – Если тело ответа не содержит допустимый JSON.
- propertylinks:dict[str,dict[str,str]]
-
Возвращает разобранные ссылки из заголовков ответа, если они есть.
- propertynext:PreparedRequest|None
-
Возвращает PreparedRequest для следующего запроса в цепочке перенаправлений, если он есть.
- propertyok:bool
-
Возвращает True, если
status_codeменьше 400, и False в противном случае.Этот атрибут проверяет, находится ли код состояния ответа в диапазоне от 400 до 600, чтобы определить, произошла ли ошибка клиента или сервера. Если код состояния находится в диапазоне от 200 до 400, будет возвращено True. Это не проверка того, что код ответа равен
200 OK.
- raise_for_status() None[исходный код]
-
Вызывает исключение
HTTPError, если оно возникло.
- raw:Any
-
Представление ответа в виде файлового объекта (для расширенного использования). Использование
rawтребует, чтобы для запроса было заданоstream=True. Это требование не распространяется на внутреннее использование в Requests.
- reason:str
-
Текстовое описание статуса HTTP-ответа, например «Not Found» или «OK».
- request:PreparedRequest
-
Объект
PreparedRequest, которому соответствует этот ответ.
- status_code:int
-
Целочисленный код статуса HTTP-ответа, например 404 или 200.
- propertytext:str
-
Содержимое ответа в виде строки Unicode.
Если Response.encoding равен None, кодировка будет определена с помощью
charset_normalizerилиchardet.Кодировка содержимого ответа определяется исключительно на основе заголовков HTTP в строгом соответствии с RFC 2616. Если у вас есть не связанные с HTTP сведения, которые позволяют точнее определить кодировку, перед обращением к этому свойству следует задать
r.encodingсоответствующим образом.
- url:str
-
Итоговый URL-адрес ответа.
Классы более низкого уровня
- classrequests.PreparedRequest[исходный код]
-
Полностью изменяемый объект
PreparedRequest, содержащий точные байты, которые будут отправлены на сервер.Экземпляры создаются из объекта
Request, и их не следует создавать вручную; это может привести к нежелательным последствиям.Использование:
>>> import requests >>> req = requests.Request('GET', 'https://httpbin.org/get') >>> r = req.prepare() >>> r <PreparedRequest [GET]> >>> s = requests.Session() >>> s.send(r) <Response [200]>- body:_t.BodyType
-
тело запроса для отправки на сервер.
- deregister_hook(event:str, hook:Callable[[Response],Any]) bool
-
Отменяет регистрацию ранее зарегистрированного обработчика. Возвращает True, если обработчик существовал, и False в противном случае.
- headers:CaseInsensitiveDict[str|bytes]
-
словарь HTTP-заголовков.
- hooks:dict[str,list[_t.HookType]]
-
словарь функций обратного вызова для внутреннего использования.
- method:str|None
-
HTTP-метод для отправки на сервер.
- propertypath_url:str
-
Формирует URL пути для использования.
- prepare(method:str|None=None, url:_t.UriType|None=None, headers:Mapping[str,str|bytes]|None=None, files:_t.FilesType=None, data:_t.DataType=None, params:_t.ParamsType=None, auth:_t.AuthType=None, cookies:RequestsCookieJar|CookieJar|dict[str,str]|None=None, hooks:_t.HooksInputType|None=None, json:_t.JsonType=None) None[исходный код]
-
Подготавливает запрос целиком с указанными параметрами.
- prepare_auth(auth:_t.AuthType, url:_t.UriType='') None[исходный код]
-
Подготавливает указанные данные HTTP-аутентификации.
- prepare_body(data:_t.DataType, files:_t.FilesType, json:_t.JsonType=None) None[исходный код]
-
Подготавливает указанные данные тела HTTP-запроса.
- prepare_content_length(body:_t.BodyType) None[исходный код]
-
Подготавливает заголовок Content-Length на основе метода запроса и тела
- prepare_cookies(cookies:RequestsCookieJar|CookieJar|dict[str,str]|None) None[исходный код]
-
Подготавливает указанные данные HTTP-cookie.
Эта функция в итоге формирует заголовок
Cookieиз указанных файлов cookie с помощью cookielib. Из-за особенностей реализации cookielib заголовок не будет сформирован заново, если он уже существует; это означает, что функцию можно вызвать только один раз за время существования объектаPreparedRequest. Любые последующие вызовыprepare_cookiesне окажут фактического эффекта, если предварительно не удалить заголовок «Cookie».
- prepare_headers(headers:Mapping[str,str|bytes]|None) None[исходный код]
-
Подготавливает указанные HTTP-заголовки.
- prepare_hooks(hooks:Mapping[str,Iterable[Callable[[Response],Any]]|Callable[[Response],Any]]|None) None[исходный код]
-
Подготавливает указанные обработчики.
- prepare_method(method:str|None) None[исходный код]
-
Подготавливает указанный HTTP-метод.
- prepare_url(url:_t.UriType, params:_t.ParamsType) None[исходный код]
-
Подготавливает указанный HTTP URL.
- register_hook(event:str, hook:Iterable[Callable[[Response],Any]]|Callable[[Response],Any]) None
-
Корректно регистрирует обработчик.
- url:str|None
-
HTTP URL, на который отправляется запрос.
- classrequests.adapters.BaseAdapter[исходный код]
-
Базовый транспортный адаптер
- close() None[исходный код]
-
Очищает специфичные для адаптера элементы.
- send(request:PreparedRequest, stream:bool=False, timeout:_t.TimeoutType=None, verify:_t.VerifyType=True, cert:_t.CertType=None, proxies:dict[str,str]|None=None) Response[исходный код]
-
Отправляет объект PreparedRequest. Возвращает объект Response.
- Параметры:
-
-
request – Отправляемый объект
PreparedRequest. - stream – (необязательно) Определяет, нужно ли передавать содержимое запроса потоком.
- timeout (float or tuple) – (необязательно) Время ожидания данных от сервера до прекращения ожидания: число с плавающей точкой или кортеж (тайм-аут подключения, тайм-аут чтения).
- verify – (необязательно) Логическое значение, определяющее, следует ли проверять TLS-сертификат сервера, либо строка, которая должна содержать путь к используемому пакету сертификатов ЦС.
- cert – (необязательно) Предоставленный пользователем SSL-сертификат, которому следует доверять.
- proxies – (необязательно) Словарь прокси-серверов, применяемый к запросу.
-
request – Отправляемый объект
- classrequests.adapters.HTTPAdapter(pool_connections:int=10, pool_maxsize:int=10, max_retries:int|Retry=0, pool_block:bool=False)[исходный код]
-
Встроенный HTTP-адаптер для urllib3.
Предоставляет универсальный интерфейс для сеансов Requests, позволяющий обращаться к URL-адресам HTTP и HTTPS за счёт реализации интерфейса транспортного адаптера. Обычно этот класс создаётся классом
Sessionскрытым образом.- Параметры:
-
- pool_connections – Количество пулов соединений urllib3 для кэширования.
- pool_maxsize – Максимальное количество соединений, сохраняемых в пуле.
-
max_retries – Максимальное количество повторных попыток для каждого соединения. Обратите внимание: это относится только к неудачным поискам DNS, подключениям к сокету и тайм-аутам соединения, но не к запросам, данные которых уже дошли до сервера. По умолчанию Requests не повторяет неудачные соединения. Если требуется детально управлять условиями повторной отправки запроса, импортируйте класс
Retryиз urllib3 и передайте его вместо этого значения. - pool_block – Указывает, должен ли пул соединений блокировать запросы при ожидании соединений.
Использование:
>>> import requests >>> s = requests.Session() >>> a = requests.adapters.HTTPAdapter(max_retries=3) >>> s.mount('http://', a)- add_headers(request:PreparedRequest, **kwargs:Any) None[исходный код]
-
Добавляет все заголовки, необходимые для соединения. Начиная с версии 2.0 по умолчанию метод ничего не делает, но оставлен для переопределения пользователями, создающими подклассы
HTTPAdapter.Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов
HTTPAdapter.- Параметры:
-
-
request – Объект
PreparedRequest, в который нужно добавить заголовки. - kwargs – Именованные аргументы, переданные при вызове send().
-
request – Объект
- build_connection_pool_key_attributes(request:PreparedRequest, verify:_t.VerifyType, cert:_t.CertType=None) tuple[dict[str,Any],dict[str,Any]][исходный код]
-
Создаёт атрибуты PoolKey, используемые urllib3 для получения соединения.
Метод использует PreparedRequest, указанное пользователем значение verify и значение параметра cert, чтобы определить значения PoolKey для выбора соединения из заданного пула соединений urllib3.
Аргументы ключа пула, связанные с SSL, задаются непоследовательно. На момент написания документации, чтобы определить, какие ключи могут присутствовать в этом словаре, используйте следующие правила:
- Если
verifyравенTrue, будет задан"ssl_context", содержащий контекст SSL Requests по умолчанию - Если
verifyравенFalse,"ssl_context"задан не будет, но будет задан"cert_reqs" - Если
verifyявляется строкой (то есть указанным пользователем набором доверенных сертификатов), будет задан"ca_certs", если строка не является каталогом, распознанным функциейos.path.isdir; в противном случае будет задан"ca_cert_dir". - Если задан
"cert","cert_file"будет задан всегда. Если"cert"— кортеж со вторым элементом, также будет присутствовать"key_file"
Чтобы переопределить эти настройки, можно создать подкласс этого класса, вызвать этот метод и изменить параметры по приведённым выше правилам. Например, чтобы использовать пользовательский
ssl.SSLContext, необходимо задать"ssl_context", а также изменить другие ключи в соответствии с требованиями, чтобы обеспечить желаемое поведение.- Параметры:
-
-
request (
PreparedRequest) – Объект PreparedRequest, отправляемый через соединение. - verify – Логическое значение, определяющее, проверять ли сертификат TLS сервера, либо строка, указывающая путь к используемому набору сертификатов центра сертификации (CA).
- cert – (необязательно) Предоставленный пользователем сертификат SSL для аутентификации клиента (то есть mTLS). Это может быть строка (то есть путь к файлу, содержащему сертификат и ключ) или кортеж длины 2 с путями к файлам сертификата и ключа.
-
request (
- Возвращает:
-
Кортеж из двух словарей. Первый содержит часть Pool Key с параметрами узла, включая схему, имя хоста и порт. Второй — словарь параметров, связанных с SSLContext.
- Если
- build_response(req:PreparedRequest, resp:Any) Response[исходный код]
-
Создаёт объект
Responseиз ответа urllib3. Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассовHTTPAdapter- Параметры:
-
-
req – Объект
PreparedRequest, использованный для формирования ответа. - resp – Объект ответа urllib3.
-
req – Объект
- Тип возвращаемого значения:
- cert_verify(conn:Any, url:str, verify:_t.VerifyType, cert:_t.CertType) None[исходный код]
-
Проверяет сертификат SSL. Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов
HTTPAdapter.- Параметры:
-
- conn – Объект соединения urllib3, связанный с сертификатом.
- url – Запрошенный URL.
- verify – Логическое значение, определяющее, проверять ли сертификат TLS сервера, либо строка, указывающая путь к используемому набору сертификатов центра сертификации (CA).
- cert – Сертификат SSL для проверки.
- close() None[исходный код]
-
Освобождает все внутренние ресурсы.
В настоящее время закрывает PoolManager и все активные ProxyManager, что приводит к закрытию всех соединений в пулах.
- get_connection(url:str, proxies:dict[str,str]|None=None) HTTPConnectionPool[исходный код]
-
УСТАРЕЛО: Пользователям следует перейти на
get_connection_with_tls_contextво всех подклассах HTTPAdapter, использующих Requests версии 2.32.2 и выше.Возвращает соединение urllib3 для указанного URL. Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов
HTTPAdapter.- Параметры:
-
- url – URL для подключения.
- proxies – (необязательно) Словарь прокси в формате Requests, используемых для этого запроса.
- Тип возвращаемого значения:
- get_connection_with_tls_context(request:PreparedRequest, verify:_t.VerifyType, proxies:dict[str,str]|None=None, cert:_t.CertType=None) HTTPConnectionPool[исходный код]
-
Возвращает соединение urllib3 для указанного запроса и настроек TLS. Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов
HTTPAdapter.- Параметры:
-
-
request – Объект
PreparedRequest, отправляемый через соединение. - verify – Логическое значение, определяющее, проверять ли сертификат TLS сервера, либо строка, указывающая путь к используемому набору сертификатов центра сертификации (CA).
- proxies – (необязательно) Словарь прокси, применяемый к запросу.
- cert – (необязательно) Предоставленный пользователем сертификат SSL для аутентификации клиента (то есть mTLS).
-
request – Объект
- Тип возвращаемого значения:
- init_poolmanager(connections:int, maxsize:int, block:bool=False, **pool_kwargs:Any) None[исходный код]
-
Инициализирует PoolManager urllib3.
Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов
HTTPAdapter.- Параметры:
-
- connections – Количество пулов соединений urllib3 для кэширования.
- maxsize – Максимальное количество соединений, сохраняемых в пуле.
- block – Ожидать освобождения соединения, если свободных соединений нет.
- pool_kwargs – Дополнительные именованные аргументы для инициализации Pool Manager.
- proxy_headers(proxy:str) dict[str,str][исходный код]
-
Возвращает словарь заголовков, добавляемых к любому запросу, отправляемому через прокси. Метод использует особенности urllib3, чтобы заголовки передавались именно прокси, а не в туннелируемом запросе, если используется CONNECT.
Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов
HTTPAdapter.- Параметры:
-
proxy – URL прокси, используемого для этого запроса.
- Тип возвращаемого значения:
- proxy_manager_for(proxy:str, **proxy_kwargs:Any) Any[исходный код]
-
Возвращает ProxyManager urllib3 для указанного прокси.
Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов
HTTPAdapter.- Параметры:
-
- proxy – Прокси, для которого нужно вернуть ProxyManager urllib3.
- proxy_kwargs – Дополнительные именованные аргументы для настройки Proxy Manager.
- Возвращает:
-
ProxyManager
- Тип возвращаемого значения:
- request_url(request:PreparedRequest, proxies:dict[str,str]|None) str[исходный код]
-
Получает URL, который будет использоваться при отправке итогового запроса.
Если сообщение отправляется через HTTP-прокси, необходимо использовать полный URL. В противном случае следует использовать только часть URL с путём.
Этот метод не следует вызывать из пользовательского кода; он доступен только для использования при создании подклассов
HTTPAdapter.- Параметры:
-
-
request – Отправляемый объект
PreparedRequest. - proxies – Словарь схем или схем и узлов, сопоставленных с URL прокси.
-
request – Отправляемый объект
- Тип возвращаемого значения:
- send(request:PreparedRequest, stream:bool=False, timeout:_t.TimeoutType=None, verify:_t.VerifyType=True, cert:_t.CertType=None, proxies:dict[str,str]|None=None) Response[исходный код]
-
Отправляет объект PreparedRequest. Возвращает объект Response.
- Параметры:
-
-
request – Отправляемый
PreparedRequest. - stream – (необязательно) Следует ли передавать содержимое запроса потоком.
- timeout (float или tuple или объект Timeout из urllib3) – (необязательно) Время ожидания данных от сервера до прекращения ожидания: число с плавающей точкой или кортеж (тайм-аут подключения, тайм-аут чтения).
- verify – (необязательно) Логическое значение, определяющее, проверять ли сертификат TLS сервера, либо строка, указывающая путь к используемому пакету сертификатов центра сертификации.
- cert – (необязательно) Сертификат SSL, предоставленный пользователем и которому следует доверять.
- proxies – (необязательно) Словарь прокси-серверов, применяемых к запросу.
-
request – Отправляемый
- Тип возвращаемого значения:
Аутентификация
- classrequests.auth.AuthBase[исходный код]
-
Базовый класс, от которого наследуются все реализации аутентификации.
- classrequests.auth.HTTPBasicAuth(username:str, password:str)[исходный код]
- classrequests.auth.HTTPBasicAuth(username:bytes, password:bytes)
-
Добавляет базовую HTTP-аутентификацию к указанному объекту Request.
- classrequests.auth.HTTPProxyAuth(username:str, password:str)[исходный код]
- classrequests.auth.HTTPProxyAuth(username:bytes, password:bytes)
-
Добавляет HTTP-аутентификацию прокси-сервера к указанному объекту Request.
- classrequests.auth.HTTPDigestAuth(username:str, password:str)[исходный код]
- classrequests.auth.HTTPDigestAuth(username:bytes, password:bytes)
-
Добавляет дайджест-аутентификацию HTTP к указанному объекту Request.
Кодировки
- requests.utils.get_encodings_from_content(content:str) list[str][исходный код]
-
Возвращает кодировки из указанной строки содержимого.
- Параметры:
-
content – байтовая строка, из которой извлекаются кодировки.
- requests.utils.get_encoding_from_headers(headers:CaseInsensitiveDict[str]) str|None[исходный код]
-
Возвращает кодировку из указанного словаря HTTP-заголовков.
- Параметры:
-
headers – словарь, из которого извлекается кодировка.
- Тип возвращаемого значения:
- requests.utils.get_unicode_from_response(r:Response) str|bytes|None[исходный код]
-
Возвращает запрошенное содержимое в формате Unicode.
- Параметры:
-
r – объект Response, из которого извлекается содержимое в формате Unicode.
Используются следующие варианты:
- кодировка charset из content-type
- в противном случае все символы Unicode заменяются
- Тип возвращаемого значения:
Поиск по кодам состояния
- requests.codes
-
псевдоним {}
Объект codes определяет соответствие между распространёнными названиями статусов HTTP и их числовыми кодами; обратиться к ним можно как к атрибутам или элементам словаря.
Пример:
>>> import requests >>> requests.codes['temporary_redirect'] 307 >>> requests.codes.teapot 418 >>> requests.codes['\o/'] 200
Некоторые коды имеют несколько названий, причём допускаются как версии названий в верхнем, так и в нижнем регистре. Например, codes.ok, codes.OK и codes.okay соответствуют коду состояния HTTP 200.
- 100:
continue - 101:
switching_protocols - 102:
processing,early-hints - 103:
checkpoint - 122:
uri_too_long,request_uri_too_long - 200:
ok,okay,all_ok,all_okay,all_good,\o/,✓ - 201:
created - 202:
accepted - 203:
non_authoritative_info,non_authoritative_information - 204:
no_content - 205:
reset_content,reset - 206:
partial_content,partial - 207:
multi_status,multiple_status,multi_stati,multiple_stati - 208:
already_reported - 226:
im_used - 300:
multiple_choices - 301:
moved_permanently,moved,\o- - 302:
found - 303:
see_other,other - 304:
not_modified - 305:
use_proxy - 306:
switch_proxy - 307:
temporary_redirect,temporary_moved,temporary - 308:
permanent_redirect,resume_incomplete,resume - 400:
bad_request,bad - 401:
unauthorized - 402:
payment_required,payment - 403:
forbidden - 404:
not_found,-o- - 405:
method_not_allowed,not_allowed - 406:
not_acceptable - 407:
proxy_authentication_required,proxy_auth,proxy_authentication - 408:
request_timeout,timeout - 409:
conflict - 410:
gone - 411:
length_required - 412:
precondition_failed,precondition - 413:
request_entity_too_large,content_too_large - 414:
request_uri_too_large,uri_too_long - 415:
unsupported_media_type,unsupported_media,media_type - 416:
requested_range_not_satisfiable,requested_range,range_not_satisfiable - 417:
expectation_failed - 418:
im_a_teapot,teapot,i_am_a_teapot - 421:
misdirected_request - 422:
unprocessable_entity,unprocessable,unprocessable_content - 423:
locked - 424:
failed_dependency,dependency - 425:
unordered_collection,unordered,too_early - 426:
upgrade_required,upgrade - 428:
precondition_required,precondition - 429:
too_many_requests,too_many - 431:
header_fields_too_large,fields_too_large - 444:
no_response,none - 449:
retry_with,retry - 450:
blocked_by_windows_parental_controls,parental_controls - 451:
unavailable_for_legal_reasons,legal_reasons - 499:
client_closed_request - 500:
internal_server_error,server_error,/o\,✗ - 501:
not_implemented - 502:
bad_gateway - 503:
service_unavailable,unavailable - 504:
gateway_timeout - 505:
http_version_not_supported,http_version - 506:
variant_also_negotiates - 507:
insufficient_storage - 509:
bandwidth_limit_exceeded,bandwidth - 510:
not_extended - 511:
network_authentication_required,network_auth,network_authentication
Переход на версию 1.x
В этом разделе описаны основные различия между версиями 0.x и 1.x, чтобы облегчить переход на новую версию.
Изменения API
-
Response.jsonтеперь является вызываемым объектом, а не свойством ответа.import requests r = requests.get('https://api.github.com/events') r.json() # This *call* raises an exception if JSON decoding fails -
API
Sessionизменился. Объекты сессий больше не принимают параметры. Кроме того,Sessionтеперь пишется с заглавной буквы, но для обратной совместимости его по-прежнему можно создавать сsessionв нижнем регистре.s = requests.Session() # formerly, session took parameters s.auth = auth s.headers.update(headers) r = s.get('https://httpbin.org/headers') - Все хуки запросов удалены, кроме «response».
- Вспомогательные средства аутентификации вынесены в отдельные модули. См. requests-oauthlib и requests-kerberos.
-
Параметр для потоковой передачи запросов изменён с
prefetchнаstream, а логика инвертирована. Кроме того, для чтения необработанного ответа теперь требуетсяstream.# in 0.x, passing prefetch=False would accomplish the same thing r = requests.get('https://api.github.com/events', stream=True) for chunk in r.iter_content(8192): ... -
Параметр
configметода requests удалён. Некоторые из этих настроек теперь задаются дляSession, например, поддержание постоянного соединения и максимальное количество перенаправлений. Параметр подробного вывода следует настраивать с помощью ведения журнала.import requests import logging # Enabling debugging at http.client level (requests->urllib3->http.client) # you will see the REQUEST, including HEADERS and DATA, and RESPONSE with HEADERS but without DATA. # the only thing missing will be the response.body which is not logged. try: # for Python 3 from http.client import HTTPConnection except ImportError: from httplib import HTTPConnection HTTPConnection.debuglevel = 1 logging.basicConfig() # you need to initialize logging, otherwise you will not see anything from requests logging.getLogger().setLevel(logging.DEBUG) requests_log = logging.getLogger("urllib3") requests_log.setLevel(logging.DEBUG) requests_log.propagate = True requests.get('https://httpbin.org/headers')
Лицензирование
Одно важное изменение, не связанное с API, — переход с лицензии ISC на лицензию Apache 2.0. Лицензия Apache 2.0 гарантирует, что вклад в Requests также будет распространяться на условиях лицензии Apache 2.0.
Переход на версию 2.x
По сравнению с выпуском 1.0 несовместимых изменений оказалось относительно мало, однако при переходе на этот мажорный выпуск всё же следует учитывать несколько моментов.
Подробнее об изменениях в этом выпуске, включая новые API, ссылки на соответствующие задачи GitHub и некоторые исправления ошибок, читайте в блоге Кори.
Изменения API
-
В обработке исключений Requests произошло несколько изменений.
RequestExceptionтеперь является подклассомIOError, а неRuntimeError, поскольку это точнее описывает тип ошибки. Кроме того, неверная escape-последовательность в URL теперь вызывает подклассRequestException, а неValueError.requests.get('http://%zz/') # raises requests.exceptions.InvalidURLНаконец, исключения
httplib.IncompleteRead, вызванные некорректным кодированием chunked, теперь будут приводить к исключению RequestsChunkedEncodingError. -
API прокси немного изменился. Теперь для URL прокси требуется схема.
proxies = { "http": "10.10.1.10:3128", # use http://10.10.1.10:3128 instead } # In requests 1.x, this was legal, in requests 2.x, # this raises requests.exceptions.MissingSchema requests.get("http://example.org", proxies=proxies)
Изменения поведения
- Ключи в словаре
headersтеперь являются строками нативного типа во всех версиях Python: байтовыми строками в Python 2 и строками Unicode в Python 3. Если ключи не относятся к нативному строковому типу (Unicode в Python 2 или байтовые строки в Python 3), они будут преобразованы в нативный строковый тип с использованием кодировки UTF-8. - Значения в словаре
headersвсегда должны быть строками. Такова позиция проекта ещё до версии 1.0, но недавнее изменение (начиная с версии 2.11.0) обеспечивает более строгое соблюдение этого правила. По возможности рекомендуется не передавать значения заголовков в виде строк Unicode.
© 2011-2026 Kenneth Reitz and other contributors
Licensed under the Apache license.
https://requests.readthedocs.io/en/latest/api/index.html