社区更新 — 请求文档
发布历史
开发
- [非平凡变化的简短描述。]
- 添加了 requests.exceptions.JSONDecodeError 以减少库中的不一致。 这在 response.json() 方法中引发,并且向后兼容,因为它继承了先前抛出的异常。 也可以从 requests.exceptions.RequestException 中捕获。
2.26.0 (2021-07-13)
改进
- 如果安装了 brotli 或 brotlicffi 包,则请求现在支持 Brotli 压缩。 (#5783)
- Session.send 现在可以正确解析来自会话和请求的代理配置。 行为现在匹配 Session.request。 (#5681)
错误修正
- 修复了从 zip 存档并行使用请求时 zip 提取中的竞争条件。 (#5707)
依赖关系
代替 chardet,使用 MIT 许可的 charset_normalizer for Python3 来消除项目捆绑请求的许可证歧义。 如果 chardet 已经安装在你的机器上,它将被用来代替 charset_normalizer 以保持向后兼容性。 (#5797)
您还可以在安装请求时通过指定 [use_chardet_on_py3] 额外安装 chardet,如下所示:
`shell pip install "requests[use_chardet_on_py3]" `
Python2 仍然依赖于 chardet 模块。
请求现在支持 Python 3 上的 idna 3.x。 idna 2.x 将继续用于 Python 2 安装。 (#5711)
弃用
- requests[security] extra 已转换为无操作安装。 PyOpenSSL 不再是请求的推荐安全选项。 (#5867)
- Requests 已正式放弃对 Python 3.5 的支持。 (#5867)
2.25.1 (2020-12-16)
错误修正
- 请求现在默认将 application/json 视为 utf8。 解决 r.text 和 r.json 输出之间的不一致。 (#5673)
依赖关系
- Requests 现在支持 chardet v4.x。
2.25.0 (2020-11-11)
改进
- 添加了对 NETRC 环境变量的支持。 (#5643)
依赖关系
- 请求现在支持 urllib3 v1.26。
弃用
- Requests v2.25.x 将是支持 Python 3.5 的最后一个版本系列。
- requests[security] extra 已正式弃用,并将在 Requests v2.26.0 中删除。
2.24.0 (2020-06-17)
改进
- pyOpenSSL TLS 实现现在仅在 Python 没有 ssl 模块或不支持 SNI 时使用。 以前 pyOpenSSL 是无条件使用的(如果可用)。 即使 pyOpenSSL 是通过 requests[security] 额外安装的,这也适用 (#5443)
- 重定向解析现在应该只在 allow_redirects 为 True 时发生。 (#5492)
- 不再对不使用它的请求执行不必要的 Content-Length 计算。 (#5496)
2.23.0 (2020-02-19)
改进
- 删除会话 __attrs__ 中对 prefetch 的失效引用 (#5110)
错误修正
- 请求不再在基本身份验证使用警告中输出密码。 (#5099)
依赖关系
- chardet 和 idna 的固定现在使用主要版本而不是次要版本。 这有望减少每次更新依赖项时发布的需求。
2.22.0 (2019-05-15)
依赖关系
- 请求现在支持 urllib3 v1.25.2。 (注意:1.25.0 和 1.25.1 不兼容)
弃用
- Requests 已正式停止对 Python 3.4 的支持。
2.21.0 (2018-12-10)
依赖关系
- 请求现在支持 idna v2.8。
2.20.1 (2018-11-08)
错误修正
- 修复了使用默认端口(http/80、https/443)重定向的意外授权标头剥离的错误。
2.20.0 (2018-10-18)
错误修正
- Content-Type 标头解析现在不区分大小写(例如 字符集=utf8 v 字符集=utf8)。
- 修复了某些重定向 url 会引发未捕获的 urllib3 异常的异常泄漏。
- 请求从在同一主机名上从 https 重定向到 http 的请求中删除 Authorization 标头。 (CVE-2018-18074)
- should_bypass_proxies 现在可以处理没有主机名的 URI(例如 文件)。
依赖关系
- 请求现在支持 urllib3 v1.24。
弃用
- Requests 已正式停止对 Python 2.6 的支持。
2.19.1 (2018-06-14)
错误修正
- 修复了 status_codes.py 的 init 函数尝试附加到 None 的 __doc__ 值失败的问题。
2.19.0 (2018-06-12)
改进
- 使用加密版本 < 1.3.4 时警告用户可能会变慢
- 在将请求转发到适配器之前,检查代理 URL 中的无效主机。
- 片段现在可以跨重定向正确维护。 (RFC7231 7.1.2)
- 删除了使用 cgi 模块来加快库加载时间。
- 添加了对 SHA-256 和 SHA-512 摘要身份验证算法的支持。
- Request.content 的小幅性能改进。
- 迁移到使用 collections.abc 以获得 3.7 兼容性。
错误修正
- 使用 parse_header_links() 解析空的 Link 标头不再返回一个虚假条目。
- 修复了从 zip 存档加载默认证书包会引发 IOError 的问题。
- 修复了在不支持 winreg 模块的 Windows 系统上出现意外 ImportError 的问题。
- 代理绕过中的 DNS 解析不再包括请求中的用户名和密码。 这也解决了 DNS 查询在 macOS 上失败的问题。
- 正确规范化适配器前缀以进行 url 比较。
- 将 None 作为指向 files 参数的文件指针传递不再引发异常。
- 在 RequestsCookieJar 上调用 copy 现在将正确保留 cookie 策略。
依赖关系
- 我们现在支持 idna v2.7。
- 我们现在支持 urllib3 v1.23。
2.18.4 (2017-08-15)
改进
- 无效标头的错误消息现在包含标头名称以便于调试
依赖关系
- 我们现在支持 idna v2.6。
2.18.3 (2017-08-02)
改进
- 运行 $ python -m requests.help 现在包括已安装的 idna 版本。
错误修正
- 修复了在使用 urllib3 v1.22 时遇到 SSL 问题时请求会引发 ConnectionError 而不是 SSLError 的问题。
2.18.2 (2017-07-25)
错误修正
- 由于缺少 ssl.OPENSSL_VERSION_NUMBER,requests.help 在 Python 2.6 上不再失败。
依赖关系
- 我们现在支持 urllib3 v1.22。
2.18.1 (2017-06-14)
错误修正
- 修复了打包中的错误,其中 *.whl 包含不正确的数据,使 v2.17.3 中的修复回归。
2.18.0 (2017-06-14)
改进
- Response 现在是一个上下文管理器,因此可以直接在 with 语句中使用,而无需先由 contextlib.closure() 包装。
错误修正
- 如果多处理不可用,解决安装失败
- 如果多处理无法确定 CPU 内核数,则解决测试崩溃
- 解决 utils set_environ 生成器中的错误吞咽
2.17.3 (2017-05-29)
改进
- 改进了 packages 命名空间标识支持,用于monkeypatching 库。
2.17.2 (2017-05-29)
改进
- 改进了 packages 命名空间标识支持,用于monkeypatching 库。
2.17.1 (2017-05-29)
改进
- 改进了 packages 命名空间标识支持,用于monkeypatching 库。
2.17.0 (2017-05-29)
改进
- 删除 301 重定向缓存。 这提高了线程安全性。
2.16.5 (2017-05-28)
- $ python -m requests.help 的改进。
2.16.4 (2017-05-27)
- 引入 $ python -m requests.help 命令,用于与维护者一起调试!
2.16.3 (2017-05-27)
- 出于兼容性原因,进一步恢复了 requests.packages 命名空间。
2.16.2 (2017-05-27)
- 出于兼容性原因,进一步恢复了 requests.packages 命名空间。
不再需要修改代码(如下所述)。
2.16.1 (2017-05-27)
- 出于兼容性原因,恢复了 requests.packages 命名空间。
- urllib3 版本解析的错误修正。
注意:以前编写的用于导入 requests.packages 命名空间的代码现在必须导入位于此模块级别的代码。
例如:
从 requests.packages.urllib3.poolmanager 导入 PoolManager
将需要重写为:
从 requests.packages 导入 urllib3 urllib3.poolmanager.PoolManager
或者,甚至更好:
从 urllib3.poolmanager 导入 PoolManager
2.16.0 (2017-05-26)
- 把所有的东西都卖掉!
2.15.1 (2017-05-26)
- 每个人都会犯错。
2.15.0 (2017-05-26)
改进
- 引入 Response.next 属性,用于从重定向链中获取下一个 PreparedResponse(当 allow_redirects=False 时)。
- __version__ 模块的内部重构。
错误修正
- 为 requests.utils.get_environ_proxies() 恢复了一次可选参数。
2.14.2 (2017-05-10)
错误修正
- 将依赖标记中的小于号更改为等于号和或号,以扩大与旧版 setuptools 版本的兼容性。
2.14.1 (2017-05-09)
错误修正
- 更改了依赖标记以扩大与旧 pip 版本的兼容性。
2.14.0 (2017-05-09)
改进
- 现在可以将 no_proxy 作为键传递给 proxys 字典,以提供类似于 NO_PROXY 环境变量的处理。
- 当用户提供证书包文件或目录的无效路径时,请求现在会引发 IOError,而不是在 HTTPS 请求时失败并出现相当难以理解的证书验证错误。
- SessionRedirectMixin 的行为略有改变。 resolve_redirects 现在将通过调用 get_redirect_target(response) 来检测重定向,而不是直接查询 Response.is_redirect 和 Response.headers['location'][ X199X]。 高级用户将能够更轻松地处理格式错误的重定向。
- 更改了已用请求时间的内部计算,以便在 Windows 上具有更高的分辨率。
- 添加 win_inet_pton 作为 [socks] 在使用 Python 2.7 的 Windows 上额外的条件依赖项。
- 更改了 Windows 上的代理绕过实现:代理绕过检查不再使用正向和反向 DNS 请求
- 方案以 http 开头但不是 http 或 https 的 URL 不再将其主机部分强制为小写。
错误修正
- 大大改进了对重定向中非 ASCII Location 标头值的处理。 在 Python 2 上遇到的 UnicodeDecodeErrors 更少,Python 3 现在正确地理解 Latin-1 不太可能是正确的编码。
- 如果尝试 seek 文件找出其长度失败,我们现在通过中止我们的内容长度计算来适当地处理它。
- 将 HTTPDigestAuth 限制为仅响应对 4XX 响应进行的身份验证质询,而不是所有身份验证质询。
- 修复了一些在 Python 3.6 上触发 DeprecationWarning 的代码。
- 沮丧的人表情符号(/o\)不再有大头。 相信这是大家最担心的。
各种各样的
- 将捆绑的 urllib3 更新为 v1.21.1。
- 将捆绑的 chardet 更新到 v3.0.2。
- 将捆绑的 idna 更新到 v2.5。
- 将捆绑证书更新至 2017.4.17。
2.13.0 (2017-01-24)
特征
- 仅在我们确定需要时才加载 idna 库。 这将为用户节省一些内存。
各种各样的
- 将捆绑的 urllib3 更新为 1.20。
- 将捆绑的 idna 更新到 2.2。
2.12.5 (2017-01-18)
错误修正
- 修复了 JSON 编码检测问题,特别是检测带有 BOM 的 big-endian UTF-32。
2.12.4 (2016-12-14)
错误修正
- 修复了 2.12.2 的回归,其中非字符串类型在基本身份验证参数中被拒绝。 虽然已重新阅读对这种行为的支持,但该行为已被弃用,将来会被删除。
2.12.3 (2016-12-01)
错误修正
- 修复了从 v2.12.1 开始的针对以“http”开头的方案的 URL 的回归。 这些 URL 过去一直被当作 HTTP 方案的 URL 进行处理,因此添加了参数。 这在 v2.12.2 中被删除,以过度热心地尝试解决 IDNA 编码这些 URL 的问题。 此更改已恢复:IDNA 编码的其他修复已被判断为足以返回到请求在 v2.12.0 之前的行为。
2.12.2 (2016-11-30)
错误修正
- 修复了 IDNA 编码 URL 的几个问题,这些问题在技术上无效但已被广泛接受。 如果可以,请求现在将尝试对 URL 进行 IDNA 编码,但如果失败,并且主机仅包含 ASCII 字符,它将被乐观地传递。 这将允许用户根据需要自行选择使用 IDNA2003,并且还将允许使用技术上无效但仍然常见的主机名。
- 修复了带有前导空格的 URL 会引发 InvalidSchema 错误的问题。
- 修复了一些没有 HTTP 或 HTTPS 方案的 URL 仍会应用 HTTP URL 准备的问题。
- 修复了无法在基本身份验证中使用 Unicode 字符串的问题。
- 修复了一些 Requests 插件遇到的问题,其中构造 Response 对象会导致 Response.content 引发 AttributeError。
2.12.1 (2016-11-16)
错误修正
- 为 urllib3 中的新 PyOpenSSL 后端更新了额外的 setuptools 'security'。
各种各样的
- 将捆绑的 urllib3 更新为 1.19.1。
2.12.0 (2016-11-15)
改进
- 更新了对国际化域名的支持,从 IDNA2003 到 IDNA2008。 多种形式的 IDN 需要此更新的支持,并且对于 .de 域是必需的。
- 极大改进了猜测内容长度的启发式方法:请求将不再将整个 StringIO 读入内存。
- 为 PreparedRequest 对象重新计算 Content-Length 标头的大量改进逻辑。
- 改进了对没有 tell 方法但有 seek 方法的类文件对象的容忍度。
- Mapping 的子类现在被 data= 关键字参数视为字典。
- 请求现在可以容忍代理凭据中的空密码,而不是剥离凭据。
- 如果请求是使用类似文件的对象作为主体发出的,并且该请求被重定向为 307 或 308 状态代码,则请求现在将尝试倒带主体对象,以便可以重播。
错误修正
- 当调用 response.close 时,对 close 的调用将传播到非 urllib3 后端。
- 修复了 ALL_PROXY 环境变量优先于方案特定变量(如 HTTP_PROXY)的问题。
- 修复了非 UTF8 原因短语因回退到使用 ISO 8859-1 解码而被严重破坏的问题。
- 修复了一个错误,如果这些主机标头未使用平台的本机字符串类型,则在使用自定义主机标头时,请求将无法正确关联 cookie 设置。
各种各样的
- 将捆绑的 urllib3 更新到 1.19。
- 将捆绑的证书更新到 2016.09.26。
2.11.1 (2016-08-17)
错误修正
- 修复了将 iter_content 与 decode_unicode=True 一起用于流媒体时会引发 AttributeError 的错误。 这个错误是在 2.11 中引入的。
- 在遵循将动词从 POST/PUT 转换为 GET 的重定向时,从标头块中去除 Content-Type 和 Transfer-Encoding 标头。
2.11.0 (2016-08-08)
改进
- 添加了对 ALL_PROXY 环境变量的支持。
- 拒绝包含前导空格或换行符的标头值,以降低标头走私的风险。
错误修正
- 修复了在尝试解码发生在错误情况下的 JSON 响应时偶尔出现的 TypeError。 现在正确返回 ValueError。
- 请求会错误地忽略 NO_PROXY 环境变量中的非 CIDR IP 地址:请求现在将其视为特定 IP。
- 修复了发送 JSON 数据时可能导致我们在某些网络条件下遇到模糊的 OpenSSL 错误的错误(是的,真的)。
- 添加了类型检查以确保 iter_content 只接受整数和 None 块大小。
- 修复了响应体未被完全消耗的响应会关闭底层连接但不返回连接池的问题,这可能导致请求在 HTTPAdapter 已配置为使用阻塞连接的情况下挂起水池。
各种各样的
- 将捆绑的 urllib3 更新为 1.16。
- 一些以前的版本意外地接受了非字符串作为可接受的标头值。 这个版本没有。
2.10.0 (2016-04-29)
新功能
- SOCKS 代理支持! (需要 PySocks;$ pip install requests[socks])
各种各样的
- 将捆绑的 urllib3 更新为 1.15.1。
2.9.2 (2016-04-29)
改进
- 更改内置 CaseInsensitiveDict(用于标头)以使用 OrderedDict 作为其底层数据存储。
错误修正
- 如果 allow_redirects=False,则不要使用 redirect_cache
- 当传递的对象从 tell() 抛出异常时,通过分块传输编码发送它们而不是失败。
- 为代理相关的连接问题引发 ProxyError。
2.9.1 (2015-12-21)
错误修正
- 解决 2.9.0 中引入的回归问题,这使得在 Python 3 中无法将二进制字符串作为主体发送。
- 修复了在某些语言环境中计算 cookie 到期日期时的错误。
各种各样的
- 将捆绑的 urllib3 更新为 1.13.1。
2.9.0 (2015-12-15)
小改进(向后兼容)
- verify 关键字参数现在支持传递到 CA 证书目录的路径,而不仅仅是单个文件包。
- 现在发送以文本模式打开的文件时会发出警告。
- 将 511 Network Authentication Required 状态代码添加到状态代码注册表中。
错误修正
- 对于一开始就没有寻找的类文件对象,我们现在发送实际读取的字节数的内容长度,而不是文件的总大小,允许部分文件上传。
- 上传类文件对象时,如果它们为空或没有明显的内容长度,我们设置 Transfer-Encoding: chunked 而不是 Content-Length: 0。
- 上传分块主体时,我们以缓冲模式正确接收响应。
- 我们现在通过将查询字符串解码为 UTF-8 来处理在 Python 3 上作为字节字符串传递的查询字符串。
- 当使用函数式 API 而不是泄漏并等待垃圾收集器清理它们时,会话现在在所有情况下(例外和非例外)都关闭。
- 正确处理带有不包含标记的格式错误的 qop 指令的摘要认证标头,将其视为根本没有提供 qop 指令。
- 按名称删除特定 cookie 时的轻微性能改进。
各种各样的
- 将 urllib3 更新为 1.13。
2.8.1 (2015-10-13)
错误修正
- 更新证书包以匹配 certifi 2015.9.6.2 的弱证书包。
- 修复了 2.8.0 中请求会引发 ConnectTimeout 而不是 ConnectionError 的错误
- 使用 PreparedRequest 流程时,请求现在将正确遵守 json 参数。 在 2.8.0 中损坏。
- 使用 PreparedRequest 流时,请求现在可以正确处理 Python 2 上的 Unicode 字符串方法名称。 在 2.8.0 中损坏。
2.8.0 (2015-10-05)
小改进(向后兼容)
- 请求现在支持每主机代理。 这允许代理字典有形式的条目 {' :// ':' '} . 特定于主机的代理将优先于先前支持的特定于方案的代理使用,但先前的语法将继续有效。
- Response.raise_for_status 现在打印失败的 URL 作为异常消息的一部分。
- requests.utils.get_netrc_auth 现在采用 raise_errors kwarg,默认为 False。 当True时,解析.netrc文件的错误会导致抛出异常。
- 更改捆绑项目导入逻辑,以便更轻松地在下游拆分请求。
- 更改了默认的 User-Agent 字符串以避免在 Linux 上泄漏数据:现在只包含请求版本。
错误修正
- post() 和朋友的 json 参数现在仅在 data 和 files 都不存在时使用,与文档一致.
- 我们现在忽略 NO_PROXY 环境变量中的空字段。
- 修复了 httplib.BadStatusLine 将 stream=True 与 contextlib.closure 组合起来的问题。
- 防止在发送分块正文时我们尝试将同一连接返回连接池两次的错误。
- 其他细微的内部变化。
- Digest Auth 支持现在是线程安全的。
更新
- 将 urllib3 更新为 1.12。
2.7.0 (2015-05-03)
这是遵循我们新发布流程的第一个版本。 有关更多信息,请参阅 [我们的文档](https://requests.readthedocs.io/en/latest/community/release-process/)。
错误修正
- 将 urllib3 更新到 1.10.4,解决了几个涉及分块传输编码和响应帧的错误。
2.6.2 (2015-04-23)
错误修正
- 修复作为分块数据发送的压缩数据未正确解压缩的回归。 (#2561)
2.6.1 (2015-04-22)
错误修正
- 删除 v2.5.2 中引入的 VendorAlias 导入机制。
- 简化 PreparedRequest.prepare API:我们不再要求用户将空列表传递给 hooks 关键字参数。 (参见 #2552)
- 解析重定向现在接收所有原始参数并将其转发到适配器。 (#2503)
- 在尝试处理无法以 ASCII 编码的 unicode URL 时处理 UnicodeDecodeErrors。 (#2540)
- 执行摘要式身份验证时填充 URI 字段的解析路径。 (#2426)
- 当 PreparedRequest 的 CookieJar 不是 RequestsCookieJar 的实例时,更可靠地复制它。 (#2527)
2.6.0 (2015-03-14)
错误修正
- CVE-2015-2296:修复重定向时 cookie 的处理。 以前,没有设置主机值的 cookie 会使用重定向 URL 的主机名,将请求用户暴露给会话固定攻击和潜在的 cookie 窃取。 这是 [BugFuzz](https://bugfuzz.com) 的 Matthew Daley 私下披露的。 这会影响从 v2.1.0 到 v2.5.3(包括两端)的所有请求版本。
- 当请求是 install_requires 依赖项并且运行 python setup.py test 时修复错误。 (#2462)
- 修复 urllib3 未捆绑并且请求继续使用供应商提供的导入位置时的错误。
- 包括对 urllib3 的标头处理的修复。
- 请求对非供应商依赖项的处理现在更具限制性。
功能和改进
- 在 files 参数中作为参数传递时支持字节数组。 (#2468)
- 在使用 str、bytes 或 bytearray 输入到 files 参数创建请求时,避免数据重复。
2.5.3 (2015-02-24)
错误修正
- 还原对我们供应商证书包的更改。 有关更多上下文,请参阅(#2455、#2456 和 < https://bugs.python.org/issue23476 >)
2.5.2 (2015-02-23)
功能和改进
- 添加 sha256 指纹支持。 ([shazow/urllib3#540](https://github.com/shazow/urllib3/pull/540))
- 提高标题的性能。 ([shazow/urllib3#544](https://github.com/shazow/urllib3/pull/544))
错误修正
- 复制 pip 的导入机制。 当下游重新分发器删除 requests.packages.urllib3 时,导入机制将继续让这些相同的符号工作。 请求文档中的示例用法和依赖于 urllib3 的供应商副本的第 3 方库将可以工作,而无需回退到系统 urllib3。
- 如果取消引用然后引用失败,则尝试在重定向时引用部分 URL。 (#2356)
- 修复多部分表单数据上传的文件名类型检查。 (#2411)
- 正确处理服务器发出摘要认证挑战同时提供 auth 和 auth-int qop-values 的情况。 (#2408)
- 修复套接字泄漏。 ([shazow/urllib3#549](https://github.com/shazow/urllib3/pull/549))
- 正确修复多个 Set-Cookie 标头。 ([shazow/urllib3#534](https://github.com/shazow/urllib3/pull/534))
- 禁用内置主机名验证。 ([shazow/urllib3#526](https://github.com/shazow/urllib3/pull/526))
- 修复解码耗尽流的行为。 ([shazow/urllib3#535](https://github.com/shazow/urllib3/pull/535))
安全
- 引入了更新的 cacert.pem。
- 从默认密码列表中删除 RC4。 ([shazow/urllib3#551](https://github.com/shazow/urllib3/pull/551))
2.5.1 (2014-12-23)
行为改变
- 仅在 raise_for_status 中捕获 HTTPErrors (#2382)
错误修正
- 处理来自 urllib3 的 LocationParseError (#2344)
- 处理不是字符串的类文件对象文件名 (#2379)
- 打破 HTTPDigestAuth 处理程序。 允许协商新的 nonce (#2389)
2.5.0 (2014-12-01)
改进
- 允许使用 urllib3 的 Retry 对象与 HTTPAdapters (#2216)
- 响应中的 iter_lines 方法现在接受用于拆分内容的分隔符 (#2295)
行为改变
- 将弃用警告添加到将在 3.0 中删除的 requests.utils 中的函数(#2309)
- 函数式 API 使用的会话总是关闭的 (#2326)
- 限制对 HTTP/1.1 和 HTTP/1.0 的请求(停止接受 HTTP/0.9)(#2323)
错误修正
- 只解析一次 URL (#2353)
- 允许始终覆盖 Content-Length 标头 (#2332)
- 正确处理 HTTPDigestAuth 中的文件 (#2333)
- 限制重定向缓存大小以防止内存滥用 (#2299)
- 修复成功验证后重定向的 HTTPDigestAuth 处理 (#2253)
- 使用自定义方法参数修复崩溃 Session.request (#2317)
- 修复如何使用正则表达式库解析链接头 (#2271)
文档
- 添加更多互连参考 (#2348)
- 更新主题的 CSS (#2290)
- 更新按钮和侧边栏的宽度 (#2289)
- 用 Gratipay 替换 Gittip 的引用 (#2282)
- 在侧边栏中添加更改日志的链接 (#2273)
2.4.3 (2014-10-06)
错误修正
- Python 2 的 Unicode URL 改进。
- 为向后兼容重新排序 JSON 参数。
- 从主机/通行 URI 中自动整理身份验证方案。 ([#2249](https://github.com/psf/requests/issues/2249))
2.4.2 (2014-10-05)
改进
- 最后! 为上传添加json参数! ([#2258](https://github.com/psf/requests/pull/2258))
- 支持 Python 3.x 上的字节串 URL ([#2238](https://github.com/psf/requests/pull/2238))
错误修正
- 避免陷入循环 ([#2244](https://github.com/psf/requests/pull/2244))
- 多次调用 iter* 失败并出现无益的错误。 ([#2240](https://github.com/psf/requests/issues/2240), [#2241](https://github.com/psf/requests/issues /2241))
文档
- 正确的重定向介绍([#2245](https://github.com/psf/requests/pull/2245/))
- 添加了如何在一个请求中发送多个文件的示例。 ([#2227](https://github.com/psf/requests/pull/2227/))
- 阐明如何传递一组自定义 CA ([#2248](https://github.com/psf/requests/pull/2248/))
2.4.1 (2014-09-09)
- 现在有一个“安全”包附加设置,$ pip install requests[security]
- 如果可用,请求现在将使用 Certifi。
- 捕获并重新引发 urllib3 ProtocolError
- 修复试图永远重定向到自己的响应(wtf?)。
2.4.0 (2014-08-29)
行为改变
- Connection:keep-alive 标头现在自动发送。
改进
- 支持连接超时! Timeout 现在接受一个元组 (connect, read),用于设置单独的连接和读取超时。
- 允许复制没有标题/cookie 的 PreparedRequests。
- 更新了捆绑的 urllib3 版本。
- 从环境加载重构设置 - 新的 Session.merge_environment_settings。
- 处理 iter_content 中的套接字错误。
2.3.0 (2014-05-16)
API 更改
- 新的 Response 属性 is_redirect,当库可以将此响应作为重定向处理时(无论它是否真的这样做),这是正确的。
- timeout 参数现在同样影响具有 stream=True 和 stream=False 的请求。
- v2.0.0 中要求显式代理方案的更改已恢复。 代理方案现在默认为 http://。
- 当作为字符串引用或在解释器中查看时,用于 HTTP 标头的 CaseInsensitiveDict 现在表现得像普通字典。
错误修正
- 不再在重定向时公开 Authorization 或 Proxy-Authorization 标头。 分别修复 CVE-2014-1829 和 CVE-2014-1830。
- 每次重定向都会重新评估授权。
- 在重定向时,将 url 作为本机字符串传递。
- 当 Unicode 检测失败时,回退到自动检测的 JSON 编码。
- 在 Session 上设置为 None 的标头现在不会正确发送。
- 正确尊重 decode_unicode 即使之前没有在同一响应中使用过。
- 停止广告 compress 作为支持的内容编码。
- Response.history 参数现在总是一个列表。
- 许多,许多 urllib3 错误修正。
2.2.1 (2014-01-23)
错误修正
- 修复了包含文字或编码的“#”字符的代理凭据的错误解析。
- 各种 urllib3 修复。
2.2.0 (2014-01-09)
API 更改
- 新异常:ContentDecodingError。 引发而不是 urllib3 DecodeError 异常。
错误修正
- 避免在 Python 2.6 中 OS X 上 proxy_bypass 的错误实现中出现许多异常。
- 当以没有主目录的用户身份运行时,尝试从 ~/.netrc 获取身份验证凭据时避免崩溃。
- 为代理连接池使用正确的池大小。
- 修复 CookieJar 对象的迭代。
- 确保通过重定向保留 cookie。
- 切换回使用 chardet,因为它已与 charade 合并。
2.1.0 (2013-12-05)
- 当然,更新了 CA Bundle。
- 通过 Session 为单个请求设置的 Cookie(例如 通过 Session.get()) 不再持久化到 Session。
- 当我们在分块上传期间遇到问题时清理连接,而不是泄漏它们。
- 当分块上传成功时将连接返回到池,而不是泄漏它。
- 匹配 HTTP 301 重定向的 HTTPbis 建议。
- 防止在收到 401 时使用流式上传和摘要身份验证挂起。
- Requests 设置的标头值现在始终是本机字符串类型。
- 修复以前损坏的 SNI 支持。
- 修复使用代理身份验证访问 HTTP 代理的问题。
- 取消编码从 URL 中提取的 HTTP 基本用户名和密码。
- 支持 no_proxy 环境变量的 IP 地址范围
- 当用户覆盖默认的 Host: 标头时,正确解析标头。
- 在区分大小写的服务器的情况下,避免修改 URL。
- 非 HTTP/HTTPS url 的更宽松的 URL 处理。
- 接受 Python 2.6 和 2.7 中的 unicode 方法。
- 更灵活的 cookie 处理。
- 使 响应 对象可腌制。
- 实际上是在 Digest Auth 中添加了 MD5-sess,而不是假装喜欢上次。
- 更新了内部 urllib3。
- 修复了@Lukasa 缺乏品味的问题。
2.0.1 (2013-10-24)
- 更新包含 CA 捆绑包,具有新的不信任和未来的自动化流程
- 将 MD5-sess 添加到 Digest Auth
- 在多部分文件 POST 消息中接受每个文件的标头。
- 修正:不要在 CONNECT 消息上发送完整的 URL。
- 修正:正确小写重定向方案。
- 修复:通过功能性 API 设置时 Cookie 不会持久化。
- 修复:将 urllib3 ProxyError 转换为从 ConnectionError 派生的请求 ProxyError。
- 更新了内部 urllib3 和 chardet。
2.0.0 (2013-09-24)
API 变化:
- Headers 字典中的键现在是所有 Python 版本的原生字符串,即 Python 2 上的字节串,Python 3 上的 unicode。
- 代理 URL 现在 必须 有一个明确的方案。 如果他们不这样做,将引发 MissingSchema 异常。
- 如果 Stream=False,超时现在适用于读取时间。
- RequestException 现在是 IOError 的子类,而不是 RuntimeError。
- 向 PreparedRequest 对象添加了新方法:PreparedRequest.copy()。
- 向 Session 对象添加了新方法:Session.update_request()。 此方法使用数据更新 Request 对象(例如 cookies) 存储在 Session 上。
- 向 Session 对象添加了新方法:Session.prepare_request()。 该方法更新并准备一个Request对象,并返回对应的PreparedRequest对象。
- 向 HTTPAdapter 对象添加了新方法:HTTPAdapter.proxy_headers()。 这不应该直接调用,而是改进子类接口。
- httplib.IncompleteRead 由不正确的分块编码引起的异常现在将引发请求 ChunkedEncodingError。
- 无效的百分比转义序列现在会导致引发 Requests InvalidURL 异常。
- HTTP 208 不再使用原因短语 “im_used”。 正确使用 “already_reported”。
- 添加了 HTTP 226 原因(“im_used”)。
Bug修复:
- 大大改进了代理支持,包括 CONNECT 动词。 特别感谢为这一改进而努力的许多贡献者。
- 当收到 401 身份验证响应时,现在可以正确管理 Cookie。
- 分块编码修复。
- 支持混合大小写方案。
- 更好地处理流下载。
- 从更多位置检索环境代理。
- 小 cookie 修复。
- 改进的重定向行为。
- 改进了流媒体行为,特别是对于压缩数据。
- 其他小的 Python 3 文本编码错误。
- .netrc 不再覆盖显式身份验证。
- 由钩子设置的 Cookie 现在可以正确地保留在会话上。
- 修复在其主机字段中指定端口号的 cookie 问题。
- BytesIO 可用于执行流式上传。
- 更慷慨地解析 no_proxy 环境变量。
- 非字符串对象可以与文件一起传入数据值。
1.2.3 (2013-05-25)
- 简单的包装修复
1.2.2 (2013-05-23)
- 简单的包装修复
1.2.1 (2013-05-20)
- 301 和 302 重定向现在将所有动词的动词更改为 GET,而不仅仅是 POST,从而提高了浏览器兼容性。
- Python 3.3.2 兼容性
- 始终对位置标头进行百分比编码
- 首先将连接适配器匹配修复为最具体
- 用于传递块参数的默认连接适配器的新参数
- 当没有链接头时防止 KeyError
1.2.0 (2013-03-31)
- 修复了会话和请求上的 cookie
- 显着改变钩子的调度方式 - 钩子现在在发出请求时接收用户指定的所有参数,因此钩子可以使用相同的参数发出辅助请求。 这对于身份验证处理程序作者尤其必要
- 证书支持已删除
- 修复了将 OAuth 1 与 body signature_type 一起使用时不发送数据的错误
- 感谢@Lukasa 的主要代理工作,包括从代理 url 解析代理身份验证
- 修复 DigestAuth 处理过多 401 的问题
- 更新供应商 urllib3 以包含 SSL 错误修复
- 允许通过 Response.json() 方法将关键字参数传递给 json.loads()
- 默认情况下,不要在 GET 或 HEAD 请求上发送 Content-Length 标头
- 将 elapsed 属性添加到 Response 对象以计算请求花费的时间。
- 修复 RequestsCookieJar
- 会话和适配器现在可以选择,即可以与多处理库一起使用
- 将字谜更新至 1.0.3 版
钩子调度方式的改变可能会导致很多问题。
1.1.0 (2013-01-10)
- 分块请求
- 支持可迭代的响应体
- 假设服务器坚持重定向参数
- 允许为文件数据指定显式内容类型
- 查找键时使 merge_kwargs 不区分大小写
1.0.3 (2012-12-18)
- 修复文件上传编码错误
- 修复 cookie 行为
1.0.2 (2012-12-17)
- HTTPAdapter 的代理修复。
1.0.1 (2012-12-17)
- 证书验证异常错误。
- HTTPAdapter 的代理修复。
1.0.0 (2012-12-17)
- 大规模重构和简化
- 切换到 Apache 2.0 许可证
- 可交换连接适配器
- 可安装的连接适配器
- 可变处理请求链
- /s/预取/流
- 删除所有配置
- 标准库日志记录
- 使 Response.json() 可调用,而不是属性。
- 使用新的 charade 项目,它提供了 python 2 和 3 同时的 chardet。
- 删除除“响应”之外的所有钩子
- 删除所有身份验证助手(OAuth、Kerberos)
这不是向后兼容的更改。
0.14.2 (2012-10-27)
- 改进了兼容 mime 的 JSON 处理
- 代理修复
- 路径黑客修复
- 不区分大小写的内容编码标头
- 支持表单帖子中的 CJK 参数
0.14.1 (2012-10-01)
- Python 3.3 兼容性
- 简单地默认接受编码
- 错误修正
0.14.0 (2012-09-02)
- 如果已经下载,则不再有 iter_content 错误。
0.13.9 (2012-08-25)
- 修复 OAuth + POST
- 从 dispatch_hook 中删除异常进食
- 一般错误修正
0.13.8 (2012-08-21)
- 令人难以置信的链接标头支持:)
0.13.7 (2012-08-19)
- 支持(键,值)列表无处不在。
- 摘要身份验证改进。
- 确保代理排除正常工作。
- 更清晰的 UnicodeError 异常。
- 自动将 URL 转换为字符串(fURL 等)
- Bug修复。
0.13.6 (2012-08-06)
- 期待已久的悬挂连接修复!
0.13.5 (2012-07-27)
- 包装修复
0.13.4 (2012-07-27)
- GSSAPI/Kerberos 身份验证!
- App Engine 2.7 修复!
- 修复泄漏的连接(来自 urllib3 更新)
- OAuthlib 路径黑客修复
- OAuthlib URL 参数修复。
0.13.3 (2012-07-12)
- 如果可用,请使用 simplejson。
- 不要在超时后面隐藏 SSLErrors。
- 修复了包含片段的 url 的参数处理。
- 显着改进了用户代理中的信息。
- 当 verify=False 时忽略客户端证书
0.13.2 (2012-06-28)
- 零依赖(再次)!
- 新:Response.reason
- 在 OAuth 1.0 中签署查询字符串参数
- 当 verify=False 时不再忽略客户端证书
- 添加 openSUSE 证书支持
0.13.1 (2012-06-07)
- 允许将文件或类似文件的对象作为数据传递。
- 允许钩子返回指示错误的响应。
- 修复 Response.text 和 Response.json 的 body-less 响应。
0.13.0 (2012-05-29)
- 移除 Requests.async 以支持 [grequests](https://github.com/kennethreitz/grequests)
- 允许禁用 cookie 持久性。
- safe_mode 的新实现
- cookies.get 现在支持默认参数
- 使用 return_response=False 调用 Session.request 时未保存会话 cookie
- 环境:no_proxy 支持。
- RequestsCookieJar 改进。
- 各种错误修复。
0.12.1 (2012-05-08)
- 新的 Response.json 属性。
- 能够添加字符串文件上传。
- 使用 iter_lines 修复超出范围的问题。
- 修复 iter_content 默认大小。
- 修复包含文件的 POST 重定向。
0.12.0 (2012-05-02)
- 实验性的 OAUTH 支持!
- 适当的 CookieJar 支持的 cookie 接口与很棒的类似 dict 的接口。
- 非迭代内容块的速度修复。
- 将 pre_request 移到更有用的地方。
- 新的 pre_send 钩子。
- 懒惰地编码数据、参数、文件。
- 如果 certify 不可用,则加载系统证书包。
- 清理,修复。
0.11.2 (2012-04-22)
- 如果 certifi 不可用,请尝试使用操作系统的证书包。
- 无限摘要身份验证重定向修复。
- 多部分文件上传改进。
- 修复 URL 中无效 %encodings 的解码。
- 如果响应中没有内容,则第二次尝试读取该内容时不要抛出错误。
- 上传有关重定向的数据。
0.11.1 (2012-03-30)
- POST 重定向现在破坏 RFC 以执行浏览器所做的事情:跟进 GET。
- 新的 strict_mode 配置以禁用新的重定向行为。
0.11.0 (2012-03-14)
- 私有 SSL 证书支持
- 从 Gevent 猴子补丁中删除 select.poll
- 删除用于分块传输编码的冗余生成器
- 修复:Response.ok 在安全模式下引发超时异常
0.10.8 (2012-03-09)
- 生成分块的 ValueError 修复
- 通过环境变量配置代理
- iter_lines 的简化。
- 用于禁用系统/环境提示的新 trust_env 配置。
- 抑制 cookie 错误。
0.10.7 (2012-03-07)
- encode_uri = 假
0.10.6 (2012-02-25)
- 允许 '=' 在 cookie 中。
0.10.5 (2012-02-25)
- 具有 0 内容长度修复的响应正文。
- 新的 async.imap。
- 不要在 netrc 上失败。
0.10.4 (2012-02-20)
- 荣誉网络
0.10.3 (2012-02-20)
- HEAD 请求不再遵循重定向。
- raise_for_status() 不再提高 3xx。
- 使 Session 对象可以选择。
- 无效架构 URL 的 ValueError。
0.10.2 (2012-01-15)
- 大大改进了 URL 引用。
- 其他允许的 cookie 键值。
- 尝试修复“打开的文件太多”错误
- 替换第一遍的 unicode 错误,不需要第二遍。
- 在查询插入之前将“/”附加到裸域 url。
- 异常现在继承自 RuntimeError。
- 二进制上传 + 身份验证修复。
- Bug修复。
0.10.1 (2012-01-23)
- 蟒蛇 3 支持!
- 放弃 2.5 支持。 (向后不兼容)
0.10.0 (2012-01-21)
- Response.content 现在仅字节。 (向后不兼容)
- 新的 Response.text 仅支持 Unicode。
- 如果未指定 Response.encoding 且 chardet 可用,则 Response.text 将猜测编码。
- 默认为“文本”子类型的 ISO-8859-1(西方)编码。
- 删除 decode_unicode。 (向后不兼容)
- 新的多钩系统。
- 新的 Response.register_hook 用于在管道中注册钩子。
- Response.url 现在是 Unicode。
0.9.3 (2012-01-18)
- SSL verify=False 错误修正(在 Windows 机器上很明显)。
0.9.2 (2012-01-18)
- 异步 async.send 方法。
- 支持具有边界的适当块流。
- 会话类的会话参数。
- 打印整个钩子回溯,而不仅仅是异常实例。
- 从挂起的下一行修复 response.iter_lines。
- 修复但在带有查询字符串的 URI 的 HTTP 摘要身份验证中。
- 修复事件挂钩部分。
- Urllib3 更新。
0.9.1 (2012-01-06)
- 自动 Response.raise_for_status() 的危险模式
- Response.iter_lines 重构
0.9.0 (2011-12-28)
- 验证 ssl 是默认值。
0.8.9 (2011-12-28)
- 包装修复。
0.8.8 (2011-12-28)
- SSL证书验证!
- Cerifi 发布:Mozilla 的证书列表。
- SSL 请求的新“验证”参数。
- Urllib3 更新。
0.8.7 (2011-12-24)
- iter_lines 最后一行截断修复
- 为异步请求强制使用安全模式
- 更一致地处理安全模式异常
- 修复 safe_mode 中空响应的迭代
0.8.6 (2011-12-18)
- 套接字超时修复。
- 代理授权支持。
0.8.5 (2011-12-14)
- Response.iter_lines!
0.8.4 (2011-12-11)
- 预取错误修复。
- 为已安装的版本添加了许可证。
0.8.3 (2011-11-27)
- 转换身份验证系统以使用更简单的可调用对象。
- API 方法的新会话参数。
- 登录时显示完整 URL。
0.8.2 (2011-11-19)
- 新的 Unicode 解码系统,基于可覆盖的 Response.encoding。
- 正确的 URL 斜杠引用处理。
- 允许带有 [、] 和 _ 的 Cookie。
0.8.1 (2011-11-15)
- URL 请求路径修复
- 代理修复。
- 超时修复。
0.8.0 (2011-11-13)
- 继续支持!
- 彻底删除 Urllib2
- 完全去除海报
- 完全删除 CookieJars
- 新的 ConnectionError 引发
- 用于错误捕获的安全模式
- 请求方法的预取参数
- 选项方法
- 异步池大小限制
- 文件上传发送实名
- 在 urllib3 中提供
0.7.6 (2011-11-07)
- 摘要身份验证错误修复(将查询数据附加到路径)
0.7.5 (2011-11-04)
- Response.content = None 如果响应无效。
- 重定向身份验证处理。
0.7.4 (2011-10-26)
- 会话钩子修复。
0.7.3 (2011-10-23)
- 摘要验证修复。
0.7.2 (2011-10-23)
- 补丁修复。
0.7.1 (2011-10-23)
- 远离 urllib2 身份验证处理。
- 完全删除 AuthManager、AuthObject 等。
- 带有处理程序回调的新的基于元组的身份验证系统。
0.7.0 (2011-10-22)
- 会话现在是主要界面。
- 已弃用 InvalidMethodException。
- 补丁修复。
- 新的配置系统(没有更多的全局设置)。
0.6.6 (2011-10-19)
- 会话参数错误修复(参数合并)。
0.6.5 (2011-10-18)
- 离线(快速)测试套件。
- 会话字典参数合并。
0.6.4 (2011-10-13)
- 基于 HTTP 标头的 unicode 自动解码。
- 新的 decode_unicode 设置。
- 删除 r.read/close 方法。
- 用于高级响应用法的新 r.faw 接口。*
- 参数化标题的自动扩展。
0.6.3 (2011-10-13)
- 漂亮的 requests.async 模块,用于使用 gevent 发出异步请求。
0.6.2 (2011-10-09)
- GET/HEAD 遵守 allow_redirects=False。
0.6.1 (2011-08-20)
- 增强的状态代码体验 o/
- 设置最大重定向次数 (settings.max_redirects)
- 完整的 Unicode URL 支持
- 支持无协议重定向。
- 允许任意请求类型。
- 错误修正
0.6.0 (2011-08-17)
- 新的回调挂钩系统
- 新的持久会话对象和上下文管理器
- 透明的 Dict-cookie 处理
- 状态码参考对象
- 删除 Response.cached
- 添加了 Response.request
- 所有 args 都是 kwargs
- 相对重定向支持
- HTTPError 处理改进
- 改进的 https 测试
- 错误修正
0.5.1 (2011-07-23)
- 支持国际域名!
- 无需获取整个正文即可访问标头 (read())
- 使用列表作为参数的字典
- 添加强制基本身份验证
- 强制基本是默认的身份验证类型
- python-requests.org 默认用户代理头
- CaseInsensitiveDict 小写缓存
- Response.history 错误修正
0.5.0 (2011-06-21)
- 补丁支持
- 支持代理
- HTTPBin 测试套件
- 重定向修复
- settings.verbose 流写入
- 所有方法的查询字符串
- URLErrors (Connection Refused, Timeout, Invalid URLs) 被视为显式引发 r.requests.get('hwe://blah'); r.raise_for_status()
0.4.1 (2011-05-22)
- 改进的重定向处理
- 用于跟随非 GET/HEAD 重定向的新“allow_redirects”参数
- 设置模块重构
0.4.0 (2011-05-15)
- Response.history:重定向响应列表
- 不区分大小写的标题字典!
- Unicode 网址
0.3.4 (2011-05-14)
- Urllib2 HTTPAuthentication 递归修复(基本/摘要)
- 内部重构
- 字节数据上传错误修正
0.3.3 (2011-05-12)
- 请求超时
- Unicode url 编码数据
- 设置上下文管理器和模块
0.3.2 (2011-04-15)
- GZip 编码内容的自动解压缩
- 对元组 HTTP 身份验证的自动身份验证支持
0.3.1 (2011-04-01)
- Cookie 更改
- Response.read()
- 海报修复
0.3.0 (2011-02-25)
- 自动身份验证 API 更改
- 更智能的查询 URL 参数化
- 允许文件上传和 POST 数据一起
- 新的认证管理系统
- - 更简单的基本 HTTP 系统
- *;* 支持所有内置的 urllib2 Auths
- 允许自定义身份验证处理程序
0.2.4 (2011-02-19)
- Python 2.5 支持
- PyPy-c v1.4 支持
- 自动认证测试
- 改进的请求对象构造函数
0.2.3 (2011-02-15)
- 新的 HTTP 处理方法
- - Response.__nonzero__ (如果 HTTP 状态错误,则为 false)
- *;* Response.ok(如果预期的 HTTP 状态为真)
- Response.error(如果 HTTP 状态错误,则记录 HTTPError)
- Response.raise_for_status()(引发存储的 HTTPError)
0.2.2 (2011-02-14)
- 在发生 HTTPError 时仍然处理请求。 (问题#2)
- Eventlet 和 Gevent Monkeypatch 支持。
- Cookie 支持(问题 #1)
0.2.1 (2011-02-14)
- 为多部分编码文件上传的 POST 和 PUT 请求添加了文件属性。
- 为上下文和重定向添加了 Request.url 属性
0.2.0 (2011-02-14)
- 诞生!
0.0.1 (2011-02-13)
- 挫折
- 构想