更改日志#
2.0.5(2023-09-20)#
2.0.4(2023-07-19)#
2.0.3(2023-06-07)#
2.0.2(2023-05-03)#
固定
HTTPResponse.stream()to continue yielding bytes if buffered decompressed data was still available to be read even if the underlying socket is closed. This prevents a compressed response from being truncated. (#3009 )
2.0.1(2023-04-30)#
2.0.0(2023-04-26)#
请阅读 v2.0 migration guide 有关升级到最新版本的urllib3的帮助。
已删除#
删除了证书上的回退
commonNameinmatch_hostname()function. This behavior was deprecated in May 2000 in RFC 2818. Instead onlysubjectAltNameis used to verify the hostname by default. To enable verifying the hostname againstcommonNameuseSSLContext.hostname_checks_common_name = True(#2113 )。删除了对具有
sslmodule compiled with LibreSSL, CiscoSSL, wolfSSL, and all other OpenSSL alternatives. Python is moving to require OpenSSL with PEP 644 (#2168 )。删除了对早于1.1.1或不支持SNI的OpenSSL版本的支持。当检测到不兼容的OpenSSL版本时,
ImportErroris raised (#2168 )。删除了OpenSSL1.1.1+和SecureTransport的默认密码列表,因为它们自己的默认密码已经是安全的 (#2082 _)。
已删除
urllib3.contrib.appengine.AppEngineManagerand support for Google App Engine Standard Environment (#2044 )。已删除,已弃用
Retryoptionsmethod_whitelist,DEFAULT_REDIRECT_HEADERS_BLACKLIST(#2086 )。已删除
urllib3.HTTPResponse.from_httplib(#2648 )。删除的默认值为
Nonefor therequest_contextparameter ofurllib3.PoolManager.connection_from_pool_key. This change should have no effect on users as the default value ofNonewas an invalid option and was never used (#1897 )。删除了
urllib3.requestmodule.urllib3.request.RequestMethodshas been made a private API. This change was made to ensure thatfrom urllib3 import requestimported the top-levelrequest()function instead of theurllib3.requestmodule (#2269 )。中删除了对SSLv3.0的支持
urllib3.contrib.pyopenssleven when support is available from the compiled OpenSSL library (#2233 )。删除了不推荐使用的
urllib3.contrib.ntlmpoolmodule (#2339 )。已删除
DEFAULT_CIPHERS,HAS_SNI,USE_DEFAULT_SSLCONTEXT_CIPHERS, from the private moduleurllib3.util.ssl_(#2168 )。已删除
urllib3.exceptions.SNIMissingWarning(#2168 )。删除了
_prepare_connmethod fromHTTPConnectionPool. Previously this was only used to callHTTPSConnection.set_cert()byHTTPSConnectionPool(#1985 )。已删除
tls_in_tls_requiredproperty fromHTTPSConnection. This is now determined from theschemeparameter inHTTPConnection.set_tunnel()(#1985 )。删除了
strictparameter/attribute fromHTTPConnection,HTTPSConnection,HTTPConnectionPool,HTTPSConnectionPool, andHTTPResponse(#2064 )。
已弃用#
已弃用
HTTPResponse.getheaders()andHTTPResponse.getheader()which will be removed in urllib3 v2.1.0. Instead useHTTPResponse.headersandHTTPResponse.headers.get(name, default). (#1543 , #2814 )。已弃用
urllib3.contrib.pyopensslmodule which will be removed in urllib3 v2.1.0 (#2691 )。已弃用
urllib3.contrib.securetransportmodule which will be removed in urllib3 v2.1.0 (#2692 )。已弃用
ssl_versionoption in favor ofssl_minimum_version.ssl_versionwill be removed in urllib3 v2.1.0 (#2110 )。不推荐使用
strictparameter ofPoolManager.connection_from_context()as it's not longer needed in Python 3.x. It will be removed in urllib3 v2.1.0 (#2267 )不推荐使用
NewConnectionError.poolattribute which will be removed in urllib3 v2.1.0 (#2271 )。已弃用
format_header_param_html5andformat_header_paramin favor offormat_multipart_header_param(#2257 )。已弃用
RequestField.header_formatterparameter which will be removed in urllib3 v2.1.0 (#2257 )。已弃用
HTTPSConnection.set_cert()method. Instead pass parameters to theHTTPSConnectionconstructor (#1985 )。已弃用
HTTPConnection.request_chunked()method which will be removed in urllib3 v2.1.0. Instead passchunked=TruetoHTTPConnection.request()(#1985 )。
增列#
增加了顶层
urllib3.requestfunction which uses a preconfigured module-globalPoolManagerinstance (#2150 )。添加了
jsonparameter tourllib3.request(),PoolManager.request(), andConnectionPool.request()methods to send JSON bodies in requests. Using this parameter will set the headerContent-Type: application/jsonifContent-Typeisn't already defined. Added support for parsing JSON response bodies withHTTPResponse.json()method (#2243 )。将类型提示添加到
urllib3module (#1897 )。增列
ssl_minimum_versionandssl_maximum_versionoptions which setSSLContext.minimum_versionandSSLContext.maximum_version(#2110 )。在以下情况下添加了对Z标准(RFC 8878)的支持
zstandard1.18.0 or later is installed. Added thezstdextra which installs thezstandardpackage (#1992 )。增列
urllib3.response.BaseHTTPResponseclass. All future response classes will be subclasses ofBaseHTTPResponse(#2083 )。增列
FullPoolErrorwhich is raised whenPoolManager(block=True)and a connection is returned to a full pool (#2197 )。增列
HTTPHeaderDictto the top-levelurllib3namespace (#2216 )。添加了对使用HTTPHeaderDict配置标题合并行为的支持
HTTPHeaderDictto provide headers for a request, by default duplicate header values will be repeated. But ifcombine=Trueis passed into a call toHTTPHeaderDict.add, then the added header value will be merged in with an existing value into a comma-separated list (X-My-Header: foo, bar) (#2242 )。增列
NameResolutionErrorexception when a DNS error occurs (#2305 )。增列
proxy_assert_hostnameandproxy_assert_fingerprintkwargs toProxyManager(#2409 )。添加了可配置的
backoff_maxparameter to theRetryclass. If a custombackoff_maxis provided to theRetryclass, it will replace theRetry.DEFAULT_BACKOFF_MAX(#2494 )。添加了
authorityproperty to the Url class as per RFC 3986 3.2. This property should be used in place ofnetlocfor users who want to include the userinfo (auth) component of the URI (#2520 )。添加了
schemeparameter toHTTPConnection.set_tunnelto configure the scheme of the origin being tunnelled to (#1985 )。添加了
is_closed,is_connectedandhas_connected_to_proxyproperties toHTTPConnection(#1985 )。添加了可选选项
backoff_jitterparameter toRetry. (#2952 )
变化#
变化
urllib3.response.HTTPResponse.read尊重…的语义io.BufferedIOBase而不考虑压缩。具体地说,此方法:仅返回空字节对象以指示EOF(即响应已完全使用)。
从不返回超过请求的字节数。
可以发出任意数量的系统调用:零个、一个或多个。
如果您想要每一个
urllib3.response.HTTPResponse.readcall to issue a single system call, you need to disable decompression by settingdecode_content=False(#2128 )。变化
urllib3.HTTPConnection.getresponseto return an instance ofurllib3.HTTPResponseinstead ofhttp.client.HTTPResponse(#2648 )。变化
ssl_versionto instead set the correspondingSSLContext.minimum_versionandSSLContext.maximum_versionvalues. Regardless ofssl_versionpassedSSLContextobjects are now constructed usingssl.PROTOCOL_TLS_CLIENT(#2110 )。更改的默认设置
SSLContext.minimum_versionto beTLSVersion.TLSv1_2in line with Python 3.10 (#2373 )。变化
ProxyErrorto wrap any connection error (timeout, TLS, DNS) that occurs when connecting to the proxy (#2482 )。变化
urllib3.util.create_urllib3_contextto not override the system cipher suites with a default value. The new default will be cipher suites configured by the operating system (#2168 )。变化
multipart/form-dataheader parameter formatting matches the WHATWG HTML Standard as of 2021-06-10. Control characters in filenames are no longer percent encoded (#2257 )。已更改通过HTTPS连接时引发的错误
sslmodule isn't available fromSSLErrortoImportError(#2589 )。变化
HTTPConnection.request()to always use lowercase chunk boundaries when sending requests withTransfer-Encoding: chunked(#2515 )。变化
enforce_content_lengthdefault to True, preventing silent data loss when reading streamed responses (#2514 )。已更改内部实施
HTTPHeaderDictto usedictinstead ofcollections.OrderedDictfor better performance (#2080 )。更改了
urllib3.contrib.pyopensslmodule to wrapOpenSSL.SSL.Errorwithssl.SSLErrorinPyOpenSSLContext.load_cert_chain(#2628 )。已更改不推荐使用的用法
socket.errortoOSError(#2120 )。中的所有参数已更改
HTTPConnectionandHTTPSConnectionconstructors to be keyword-only excepthostandport(#1985 )。变化
HTTPConnection.getresponse()to set the socket timeout fromHTTPConnection.timeoutvalue before reading data from the socket. This previously was done manually by theHTTPConnectionPoolcallingHTTPConnection.sock.settimeout(...)(#1985 )。更改了
_proxy_hostproperty to_tunnel_hostinHTTPConnectionPoolto more closely match how the property is used (value inHTTPConnection.set_tunnel()) (#1985 )。更改的名称
Retry.BACK0FF_MAX成为Retry.DEFAULT_BACKOFF_MAX。已将TLS握手更改为使用
SSLContext.check_hostnamewhen possible (#2452 )。变化
server_hostnameto behave like other parameters only used byHTTPSConnectionPool(#2537 )。更改了默认设置
blocksizeto 16KB to match OpenSSL's default read amounts (#2348 )。变化
HTTPResponse.read()to raise an error when calling withdecode_content=Falseafter usingdecode_content=Trueto prevent data loss (#2800 )。
固定#
修复了在访问
PoolManagerwith many distinct origins would cause connection pools to be closed while requests are in progress (#1252 )。修复了以下问题:
HTTPConnectioninstance would erroneously reuse the socket read timeout value from reading the previous response instead of a newly configured connect timeout. Instead now ifHTTPConnection.timeoutis updated before sending the next request the new timeout value will be used (#2645 )。固定
socket.error.errnowhen raised from pyOpenSSL'sOpenSSL.SSL.SysCallError(#2118 )。修正了缺省值
HTTPSConnection.socket_optionsto matchHTTPConnection(#2213 )。修复了以下位置的错误
headerswould be modified by theremove_headers_on_redirectfeature (#2272 )。修复了中的引用周期错误
urllib3.util.connection.create_connection()(#2277 )。修复了以下情况下的套接字泄漏
HTTPConnection.connect()fails (#2571 )。固定
urllib3.contrib.pyopenssl.WrappedSocketandurllib3.contrib.securetransport.WrappedSocketclose methods (#2970 )
1.26.16(2023-05-23)#
修复了在访问
PoolManager具有多个不同来源的连接将导致在请求进行时关闭连接池 (#2954 )
1.26.15(2023-03-10)#
1.26.14(2023-01-11)#
1.26.13(2022-11-23)#
不推荐使用
HTTPResponse.getheaders()和HTTPResponse.getheader()方法:研究方法。修复了端口中带有前导零的URL的解析将被拒绝的问题,即使删除零后的端口号有效。
修复了使用加密v39.0.0时的弃用警告。
删除了
<4在Requires-Python打包元数据字段。
1.26.12(2022-08-22)#
不推荐使用 urllib3[secure] extra and the urllib3.contrib.pyopenssl module. Both will be removed in v2.x. See this GitHub issue 以获得有关如何迁移的理由和信息。
1.26.11(2022-07-25)#
修复了在调用中读取超过2 GiB的问题
HTTPResponse.read会引发一个OverflowError在Python3.9和更早版本上。
1.26.10(2022-07-07)#
删除了对Python3.5的支持
修复了以下问题:
ProxyError即使未配置HTTPS代理,也可能会出现将代理配置为HTTP而不是HTTPS的建议。
1.26.9(2022-03-16)#
变化
urllib3[brotli]更有利于安装仍在接收更新的Brotli库,如brotli和brotlicffi而不是brotlipy。此更改不会影响urllib3的行为,只会影响安装的依赖项。修复了在以下情况下的套接字泄漏
HTTPSConnection.connect()引发异常。固定
server_hostname被转发自PoolManager至HTTPConnectionPool请求HTTP URL时。应仅在请求HTTPS URL时转发。
1.26.8(2022-01-07)#
添加了额外的消息到
urllib3.exceptions.ProxyError当urllib3检测到某个代理配置为使用HTTPS,但该代理本身似乎只使用HTTP时。添加了在由于连接池已满而丢弃连接时连接池的大小的说明。
添加了对Python3.11的显式支持。
不推荐使用
Retry.MAX_BACKOFF支持的类属性Retry.DEFAULT_MAX_BACKOFF以更好地匹配其余默认参数名称。Retry.MAX_BACKOFF在v2.0中已删除。受让人所在地变更
ssl.match_hostname函数来源urllib3.packages.ssl_match_hostname至urllib3.util.ssl_match_hostname以确保下游发行商重新打包后的Python3.10+兼容性。修正了绝对导入,所有导入现在都是相对的。
1.26.7(2021-09-22)#
修复了HTTPS主机名验证涉及IP地址和缺少SNI的错误。(第2400期)
修复了在证书主机名匹配期间IPv6大括号未被剥离的错误。(问题#2240)
1.26.6(2021-06-25)#
不推荐使用
urllib3.contrib.ntlmpool模块。由于以下原因,urllib3无法正确支持它 reasons listed in this issue 。如果您是此模块的用户,请留言。变化
HTTPConnection.request_chunked()为了不错误地发射多个Transfer-Encoding标头在已指定标头的情况下。修复了推荐的弃用消息中的拼写错误
Retry.DEFAULT_ALLOWED_METHODS。
1.26.5(2021-05-26)#
修复了Python3.10中发出的弃用警告。
更新后的供应商
six库升级到1.16.0。改进了拆分授权组件时URL解析器的性能。
1.26.4(2021-03-15)#
更改了默认设置的行为
SSLContext在HTTPS请求期间连接到HTTPS代理时。默认设置SSLContext现在集check_hostname=True。
1.26.3(2021-01-26)#
修复了报头的字节和字符串比较问题(拉入#2141)
变化
ProxySchemeUnknown如果用户提供不带方案的代理URL,则错误消息的可操作性更强。(拉动#2107)
1.26.2(2020-11/12)#
修复了以下问题
wrap_socket和CERT_REQUIRED在Python2.7.8及更早版本上无法正确导入(Pull#2052)
1.26.1(2020-11/11)#
修复了两个
User-Agent如果设置了User-Agent标头键作为bytes(拉动#2047)
1.26.0(2020-11/10)#
NOTE: urllib3 v2.0 will drop support for Python 2 。 Read more in the v2.0 Roadmap 。
添加了对HTTPS代理联系HTTPS服务器的支持(拉号1923、拉号1806)
默认情况下,不推荐协商TLSv1和TLSv1.1。如果用户仍希望使用1.2版之前的TLS而不发出弃用警告,则应通过设置
ssl_version=ssl.PROTOCOL_TLSv1_1(拉动#2002) Starting in urllib3 v2.0: Connections that receive a ``DeprecationWarning`` will fail已弃用
Retry选项Retry.DEFAULT_METHOD_WHITELIST,Retry.DEFAULT_REDIRECT_HEADERS_BLACKLIST和Retry(method_whitelist=...)赞成Retry.DEFAULT_ALLOWED_METHODS,Retry.DEFAULT_REMOVE_HEADERS_ON_REDIRECT,以及Retry(allowed_methods=...)(拉动#2000) Starting in urllib3 v2.0: Deprecated options will be removed添加了默认设置
User-Agent每个请求的标头(Pull#1750)增列
urllib3.util.SKIP_HEADER用于跳过User-Agent,Accept-Encoding,以及Host防止随请求自动发送标头(Pull#2018)坍塌
transfer-encoding: chunked请求数据并将其成帧到同一socket.send()呼叫(Pull#1906)发送
http/1.1默认情况下,每次TLS握手时的ALPN标识符(Pull#1894)CA验证失败时正确终止SecureTransport连接(Pull#1977)
不要发出
SNIMissingWarning当经过的时候server_hostname=None到SecureTransport(拉#1903)已禁用请求TLSv1.2会话票证,因为它们未被urllib3使用(拉#1970)
抑制
BrokenPipeError在服务器关闭套接字后写入请求正文时(Pull#1524)包好
ssl.SSLError可以通过将套接字(例如“错误的MAC”)读入urllib3.exceptions.SSLError(拉动#1939)
1.25.11(2020-10/19)#
修复解析自的重试退避时间
Retry-After以HTTP日期格式给出时的标头。HTTP日期被解析为本地时区,而不是考虑到HTTP日期中的时区(通常为UTC)(拉#1932、拉#1935、拉#1938、拉#1949)修复了在以下情况下会引发错误的问题
SSLKEYLOGFILE环境变量设置为空字符串。现在SSLContext.keylog_file没有设置在这种情况下(Pull#2016)
1.25.10(2020-07-22)#
添加了对以下各项的支持
SSLKEYLOGFILE用于记录TLS会话密钥的环境变量,与Wireshark等程序配合使用以解密捕获的Web流量(Pull#1867)修复了由于新的动态链接器缓存而在MacOS Big Sur上加载SecureTransport库的问题(拉#1905)
将分块的请求体数据和框架折叠到一个调用中,以
send()将TCP数据包数减少到原来的1/2-1/4(拉#1906)不插入
Nonevt.进入,进入ConnectionPool请求连接时池是否为空(Pull#1866)避免
hasattr呼入BrotliDecoder.decompress()(拉动#1858)
1.25.9(2020-04-16)#
增列
InvalidProxyConfigurationWarning在错误地指定HTTPS代理URL时引发。Urllib3目前不支持连接到HTTPS代理,但很快就能连接到HTTPS代理,我们希望用户能够在不造成太大破坏的情况下正确迁移。看见 this GitHub issue 有关如何修复代理配置的更多信息。(拉动#1851)
排出后的连接
PoolManager重定向(拉入#1817)确保
load_verify_locations加薪SSLError针对所有后端(Pull#1812)改名
VerifiedHTTPSConnection至HTTPSConnection(拉动#1805)允许将CA证书数据作为字符串传递(Pull#1804)
加薪
ValueError如果方法包含控制字符(Pull#1800)增列
__repr__至Timeout(拉动#1795)
1.25.8(2020-01-20)#
放弃对EOL Python3.4的支持(拉入#1774)
OPTIMIZE_ENCODE_INVALID_CHARS(Pull#1787)
1.25.7(2019-11-11)#
保留
chunked重试时的参数(Pull#1715、Pull#1734)允许取消设置
SERVER_SOFTWARE在App Engine中(拉入#1704,问题#1470)修复了在请求目标内发送URL片段的问题。(拉动#1732)
修复了URL中的空查询部分无法解析的问题。(拉动#1732)
由于Apple删除了对SecureTransport的支持,因此删除了对TLS 1.3的支持(拉号1703)
1.25.6(2019-09-24)#
修复波浪线的问题 (
~)字符在路径中以错误的百分比编码。(拉动#1692)
1.25.5(2019-09-19)#
添加对影响PYTHON<3.7.4和OPENSSL1.1.1+的bpo-37428的缓解,这会导致在使用时启用证书验证
cert_reqs=CERT_NONE。(问题#1682)
1.25.4(2019-09-19)#
将后重试标头设置传播到后续重试。(拉动#1607)
修复了边缘情况,即使明确选择退出后重试标头仍会受到尊重。(拉动#1607)
消除对…的依赖
rfc3986用于URL解析。修复URL中包含无效字符的问题
Url.auth将引发异常,而不是对这些字符进行百分比编码。添加对以下各项的支持
HTTPResponse.auto_close = False这使得HTTP响应可以很好地与BufferedReaders和其他io模块功能。(拉动#1652)百分比-对URL中的无效字符进行编码
HTTPConnectionPool.request()(拉动#1673)
1.25.3(2019-05-23)#
变化
HTTPSConnection在以下情况下加载系统CA证书ca_certs,ca_cert_dir,以及ssl_context都没有具体说明。(拉动#1608,问题#1603)将捆绑的rfc3986升级到v1.3.2。(拉动#1609,问题#1605)
1.25.2(2019-04-28)#
变化
is_ipaddress不检测IPv6未来地址。(拉动#1583)变化
parse_url对路径、查询和目标组件中的无效字符进行百分比编码。(拉动#1586)
1.25.1(2019-04-24)#
添加对谷歌的支持
Brotli包裹。(拉力#1572,拉力#1579)将捆绑的rfc3986升级到v1.3.1(Pull#1578)
1.25(2019-04-22)#
使用HTTPS时,默认情况下需要并验证证书(Pull#1507)
升级
urllib3.utils.parse_url()符合RFC 3986标准。(拉动#1487)添加了对以下各项的支持
key_password为HTTPSConnectionPool要使用加密的key_file而不是创建自己的SSLContext对象。(拉动#1489)向CPython、pyOpenSSL和SecureTransport添加TLSv1.3支持
SSLContext实施。(拉动#1496)已将默认的多部分标题编码器从RFC 2231切换为HTML5工作草案。(问题#303,拉动#1492)
修复了在提供加密的客户端私钥但没有提供密码的情况下OpenSSL将被阻止的问题。相反,一个
SSLError都被养大了。(拉动#1489)添加了对Brotli内容编码的支持。如果满足以下条件,则自动启用该功能
brotlipy已安装程序包,可以使用以下命令请求urllib3[brotli]额外的。(拉动#1532)从默认的TLS加密套件中丢弃使用DSS密钥交换的加密。改进使用SecureTransport时的默认密码。(拉动#1496)
实施了更高效的
HTTPResponse.__iter__()方法。(问题#1483)
1.24.3(2019-05-01)#
为CVE-2019-9740应用修复。(拉动#1591)
1.24.2(2019-04-17)#
在任何其他情况下,默认情况下不加载系统证书
ca_certs,ca_certs_dir或ssl_context参数是指定的。在重定向到跨站点时,不区分大小写删除授权标头。(问题#1510)
在证书的subjectAltName部分添加对IPv6地址的支持。(问题#1269)
1.24.1(2018-11-02)#
删除中的二次方行为
GzipDecoder.decompress()(1467期)恢复的功能
ciphers的参数create_urllib3_context()。(问题#1462)
1.24(2018-10-16)#
允许在初始化池管理器时指定KEY_SERVER_HOSTNAME,以允许覆盖自定义SNI。(拉动#1449)
在AppVeyor上针对Python3.7进行测试。(拉动#1453)
在App Engine上运行时的提前输出IPv6检查。(拉动#1450)
更改退避因子的模棱两可的描述(Pull#1436)
添加处理多个内容编码的功能(问题#1441和拉动#1442)
跳过在使用pyOpenSSL时无法对其进行Idna解码的域名(问题#1405)。
向HTTPSConnection添加一个SERVER_HOSTNAME参数,该参数允许覆盖握手中发送的SNI主机名。(拉动#1397)
放弃对EOL Python2.6的支持(Pull#1429和Pull#1430)
修复了标题为Content-Type:Message/*的响应错误引发HeaderParsingError,导致记录警告。(拉动#1439)
将urllib3移动到src/urllib3(拉#1409)
1.23(2018-06-04)#
允许在重定向到其他主机时提供要从请求中剥离的标头列表。默认设置为
Authorization标题。可以通过设置不同的标头Retry.remove_headers_on_redirect。(问题#1316)修整
util.selectors._fileobj_to_fd接受long(问题#1247)。放弃了对Python3.3的支持。(拉动#1242)
在对分块的Head响应调用stream()或Read_Chunked()时,将连接放回池中。(问题#1234)
修复了客户端尝试通过证书+链进行身份验证时的特定于pyOpenSSL的SSL客户端身份验证问题(问题#1060)
将端口添加到连接池连接打印(拉#1251)
不要使用
uuid模块来创建多部分数据边界。(拉动#1380)read_chunked()对于关闭的响应,不返回任何块。(问题#1088)将对Python2.6的支持添加到
contrib.securetransport(拉动#1359)添加了对SOCKS代理URL中的身份验证信息的支持(拉号1363)
1.22(2017-07-20)#
修复了中缺少的方括号
HTTP CONNECT通过IPv6代理连接到IPv6地址时。(问题#1222)已在上重试连接池
SSLError。原版SSLError在以下位置提供MaxRetryError.reason。(第1112期)在重试/重定向时递归之前,排出并释放连接。修复了阻塞连接池的死锁。(1167期)
修复了cookiejar的兼容性。(问题#1229)
Pyopenssl:使用提供的版本
six。(问题#1231)
1.21.1(2017-05-02)#
修复了可能导致响应正文传递长时间延迟的SecureTransport问题。(拉动#1154)
修复了1.21中的回归,该回归在用户通过
socket_options将标志添加到PoolManager。(1165期)修复了1.21中的回归,该回归在用户通过
assert_hostname或assert_fingerprint将标志添加到PoolManager。(拉动#1157)
1.21(2017-04-25)#
改进了某些选择器系统调用在Python3.5及更高版本上的性能。(拉动#1095)
解决了在发送数据时,PyOpenSSL后端不会适当包装SysCallError异常的问题。(拉动#1125)
选择器现在在导入补丁选择模块的模块(如Eventlet、Greenlet)后检测到猴子补丁的选择模块。(拉动#1128)
减少了流传输zlib压缩的响应时的内存消耗(而不是原始的放气流)。(拉动#1129)
连接池现在在构造池键时使用整个请求上下文。(拉动#1016)
PoolManager.connection_from_*方法现在接受新的关键字参数,pool_kwargs,它们与现有的connection_pool_kw。(拉动#1016)添加以下项的重试计数器
status_forcelist。(1147期)增列
contrib在MacOS上使用SecureTransport的模块:urllib3.contrib.securetransport。(拉动#1122)Urllib3现在只正常化
http://和https://方案:对于它不承认的方案,它假定它们区分大小写,并保持不变。(问题#1080)
1.20(2017-01-19)#
添加了对使用SELECT以外的选择器等待I/O的支持,改进了urllib3在具有大量并发连接的情况下的S行为。(拉动#1001)
已更新系统时钟检查的日期。(问题#1005)
ConnectionPool现在正确地认为主机名不区分大小写。(问题#1032)
现在,过时的版本会导致在注入时而不是在第一次使用时导致PyOpenSSL Conrib模块失败。(拉动#1063)
过时的加密版本现在会导致在注入时而不是在第一次使用时导致PyOpenSSLConrib模块失败。(问题#1044)
当请求被重试或重定向时,自动尝试回放类似文件的正文对象。(拉动#1039)
修复了模块不小心修补队列模块时出现的一些错误。(拉动#1061)
防止在请求方法不在方法白名单中的读取超时时重试。(问题#1059)
更改了PyOpenSSL Conrib模块以延迟加载Idna,以避免不需要它的程序的内存不必要地膨胀。(拉动#1076)
添加对带有区域标识符的IPv6文字的支持。(拉动#1013)
添加了使用SOCKS代理时对socks5h://和socks4a://方案的支持,并适当地控制了远程DNS。(问题#1035)
1.19.1(2016-11-16)#
修复了在Python3.5上不起作用的AppEngine导入。(拉动#1025)
1.19(2016-11-03)#
在使用默认重试逻辑时,urllib3现在尊重413、429和503响应上的后重试标头。(拉动#955)
从setup.py中删除标记以帮助旧的setupTools版本。(问题#986)
不允许在URL端口中使用上标和其他整型符号。(问题#989)
允许urllib3‘S HTTPResponse.stream()方法继续使用非Httplib底层FP。(拉动#990)
现在,多部分标头中的空文件名将按原样发出,而不是被抑制。(问题#1015)
在分块上载中首选用户提供的主机头。(第1009期)
1.18.1(2016-10-27)#
CVE-2016-9015。将urllib3版本1.17或1.18与PyOpenSSL注入和OpenSSL 1.1.0一起使用的用户 must 升级到此版本。此版本修复了一个漏洞,在该漏洞中,上述配置中的urllib3将由于错误地在OpenSSL中设置无效标志而无法自动验证TLS证书
SSL_CTX_set_verify功能。这些错误的标志在OpenSSL1.1.0之前的版本中不会造成问题,该版本将任何标志的存在解释为请求证书验证。这个补丁没有公关,因为它是为同时披露和发布而准备的。主分支在Pull#1010中收到了相同的修复。
1.18(2016-09-26)#
修复了InCompleRead异常的错误消息。(拉动#973)
接受
iPAddressTLS证书中的使用者备用名称字段。(第258期)固定的一致性
HTTPResponse.closed在 Python 2和3之间。(问题#977)修复了使用PyOpenSSL时对通配符证书的处理。(问题#979)
1.17(2016-09-06)#
接受
SSLContext用于SSL/TLS协商的对象。(问题#835)ConnectionPool调试日志现在包括方案、主机和端口。(问题#897)
对文档进行了大幅重构。(问题#887)
在AppEngine上使用了URLFetch默认超时,而不是硬编码我们自己的超时。(问题#858)
规范URL解析器中的方案和主机(问题#833)
HTTPResponse包含最后一个Retry对象,该对象现在还包含重试历史记录。(问题#848)超时不能再设置为布尔值,必须大于零。(拉动#924)
从用于PyOpenSSL的依赖项中删除了pyasn1和ndg-httpsclient。我们现在使用密码学和IDNA,这两者都已经是PyOpenSSL的依赖项。(拉动#930)
修复了中的无限循环
stream当AMT=None时。(问题#928)尝试使用操作系统的证书
SSLContext。(拉动#941)更新了密码套件列表,以允许ChaCha20+Poly1305。AES-GCM比ChaCha20更受欢迎,但ChaCha20比其他任何物质都更受欢迎。(拉动#947)
更新了密码套件列表,删除了基于3DES的密码套件。(拉动#958)
已删除加密套件回退以允许高加密。(拉动#958)
已实施
length_remaining以确定要阅读的剩余内容。(拉动#949)已实施
enforce_content_length以在收到不完整的数据区块时启用异常。(拉动#949)已从INFO中删除要调试的连接启动、连接重置、重定向、强制重试和新的HTTPS连接日志级别。(拉动#967)
1.16(2016-06-11)#
当IPv6连接不可能时,禁用IPv6 DNS。(问题#840)
提供
key_fn_by_scheme可被覆盖的池键控机制。(问题#830)将池键的方案和主机标准化为小写,包括
source_address。(问题#830)Python3中更清晰的异常链
_make_request。(问题#861)固定安装
urllib3[socks]额外的。(问题#864)已修复的签名
ConnectionPool.close所以它实际上可以被子类安全地调用。(问题#873)保留
release_conn重试时的状态。(问题#651、#866)添加可自定义的
HTTPConnectionPool.ResponseCls,它缺省为HTTPResponse但是可以用子类替换。(问题#879)
1.15.1(2016-04-11)#
修复包装以包含后端口模块。(问题#841)
1.15(2016-04-06)#
添加重试(RAISE_ON_STATUS=FALSE)。(问题#720)
始终使用setupTools,不再使用distutils回退。(问题#785)
已放弃对Python3.2的支持。(问题#786)
使用请求时的分块传输编码
chunked=True。(问题#790)修复了IPv6端口解析的回归问题。(第801期)
追加SNIMissingWarning消息以允许用户在PYTHONWARNINGS环境变量中指定它。(问题#816)
在PY2中处理Unicode标头。(问题#818)
在主机名不匹配时记录证书。(问题#820)
保持请求/响应报头的顺序。(问题#821)
1.14(2015-12-29)#
Conrib:支持SOCKS代理!(问题#762)
修复了AppEngine对传输编码标头的处理以及超时默认检查中的错误。(问题#763)
1.13.1(2015-12-18)#
修复了匹配主机名在IPv6+SSL中的回归问题。(问题#761)
1.13(2015-12-14)#
固定
pip install urllib3[secure]在现代的管子上。(第706期)Pyopenssl:修复了ssl3_WRITE_PENDING错误。(问题#717)
Pyopenssl:支持TLSv1.1和TLSv1.2。(问题#696)
在例外情况下,以更具防御性的方式密切联系。(问题#734)
调整后的
read_chunked在不反复刷新解码器的情况下处理压缩的、块编码的正文,以便在Jython上更好地运行。(问题#743)接受
ca_cert_dir用于与SSL相关的PoolManager配置。(问题#758)
1.12(2015-09-03)#
依赖于
six用于导入httplib以解决与其他Python3填充符的冲突。(问题#688)添加对证书颁发机构目录的支持,如OpenSSL所支持的那样。(问题#701)
新的例外:
NewConnectionError,当我们无法建立新连接时引发,通常ECONNREFUSED插座错误。
1.11(2015-07-21)#
什么时候
ca_certs给出了,cert_reqs默认为'CERT_REQUIRED'。(第250期)pip install urllib3[secure]将以依赖项的形式安装certifI和PyOpenSSL。(问题#678)制造
HTTPHeaderDict可用作headers输入值(问题#632、#679)增列 urllib3.contrib.appengine 它有一个
AppEngineManager用于使用URLFetch在Google AppEngine环境中。(问题#664)Dev:新增AppEngine测试套件。(问题#631)
修复使用PyOpenSSL时的性能回归问题。(问题#626)
传递不正确的方案(例如
foo://)将筹集ValueError而不是AssertionError(目前向后兼容,但请迁移)。(问题#640)修复在请求过程中发生错误时池未被补充的问题
release_conn=False。(问题#644)修复池-默认标头不适用于URL编码的请求,如GET。(问题#657)
在Python3中,由于解析错误而跳过标头时出现的log.warning。(问题#642)
如果读取过程中发生错误,则关闭并丢弃连接。(问题#660)
修复IPv6代理的主机解析。(问题#668)
单独的警告类型SubjectAltNameWarning,现在每个主机发出一次。(问题#671)
修整
httplib.IncompleteRead不会转换为ProtocolError在使用时HTTPResponse.stream()(问题#674)
1.10.4(2015-05-03)#
将测试迁移到Tornado 4。(问题#594)
追加默认警告配置,而不是覆盖。(问题#603)
修复流解码回归。(问题#595)
修复跨保活连接丢失状态的分块请求。(问题#599)
修复当块头响应没有身体时的挂起。(问题#605)
1.10.3(2015-04-21)#
发射
InsecurePlatformWarning当缺少SSLContext对象时。(问题#558)修复了被丢弃的重复标头键的回归。(问题#563)
Response.stream()返回分块响应的生成器。(问题#560)在PyOpenSSL中设置等待套接字时的超时上限。(问题#585)
在平台上工作,无需 ssl 用于纯HTTP请求的模块。(问题#587)
停止依赖stdlib的默认密码列表。(问题#588)
1.10.2(2015-02-25)#
修复重试时文件描述符泄漏的问题。(问题#548)
已从默认密码列表中删除RC4。(问题#551)
报头性能改进。(问题#544)
修复了PoolManager不遵守重定向重试设置的问题。(问题#553)
1.10.1(2015-02-10)#
池可以用作上下文管理器。(问题#545)
不要重复使用出现SSLError错误的连接。(问题#529)
当gzip解码一个空流时,不要失败。(问题#535)
增加对指纹验证的sha256支持。(问题#540)
修复了对包含逗号的标头值的处理。(问题#533)
1.10(2014-12-14)#
已禁用SSLv3。(问题#473)
增列
Url.url属性返回组成的url字符串。(问题#394)已修复PyOpenSSL+GEvent
WantWriteError。(问题#412)MaxRetryError.reason将始终是一个例外,而不是字符串。(问题#481)修复了未被检测为超时的与SSL相关的超时。(问题#492)
PY3:使用
ssl.create_default_context()如果可以的话。(问题#473)发射
InsecureRequestWarning为 every 不安全的HTTPS请求。(问题#496)发射
SecurityWarning当证书没有subjectAltName。(问题#499)关闭并丢弃出现与SSL相关的错误的套接字。(问题#501)
手柄
body参数输入.request(...)。(问题#513)使用HTTPS代理遵守超时。(问题#505)
PyOpenSSL:处理ZeroReturnError异常。(问题#520)
1.9.1(2014-09-13)#
在绑定之前应用套接字参数。(问题#427)
更仔细地检查类FP对象是否关闭。(问题#435)
修复了一些未包含的开发相关文件的打包问题。(问题#440)
允许执行 only 指纹验证。(问题#444)
发射
SecurityWarning如果系统时钟关闭。(问题#445)修复了PyOpenSSL与PyPy的兼容性。(第450期)
固定
BrokenPipeError和ConnectionError在PY3中处理。(问题#443)
1.9(2014-07-04)#
在与开发相关的文件之间来回移动。如果您维护的是urllib3的发行版包,则可能需要进行调整。(问题#415)
未经验证的HTTPS请求将在第一个请求时触发警告。查看我们的新版本 security documentation 了解更多细节。(问题#426)
新的重试逻辑与
urllib3.util.retry.Retry配置对象。(问题#326)所有引发的异常现在都应该包装在
urllib3.exceptions.HTTPException-扩展异常。(问题#326)启用重试的请求期间的所有错误都应包含在
urllib3.exceptions.MaxRetryError,包括以前被豁免的与超时相关的例外。基本错误可以从.reason财产。(问题#326)urllib3.exceptions.ConnectionError已重命名为urllib3.exceptions.ProtocolError。(问题#326)响应读取过程中的错误(如InCompleRead)现在包含在
urllib3.exceptions.ProtocolError。(问题#418)请求空主机将引发
urllib3.exceptions.LocationValueError。(问题#417)通过SSL连接捕获读取超时为
urllib3.exceptions.ReadTimeoutError。(问题#419)在连接之前应用套接字参数。(问题#427)
1.8.3(2014-06-23)#
修复了在Python3.4.1中使用代理时的TLS验证。(问题#385)
增列
disable_cache选项以urllib3.util.make_headers。(问题#393)包好
socket.timeout例外情况为urllib3.exceptions.ReadTimeoutError。(问题#399)修复了连接被错误重用的代理相关错误。(问题#366、#369)
增列
socket_options关键字参数,允许定义setsockopt配置新的插座。(第397期)已删除
HTTPConnection.tcp_nodelay赞成HTTPConnection.default_socket_options。(第397期)固定
TypeErrorPython2.6.4中的错误。(问题#411)
1.8.2(2014-04-17)#
修整
urllib3.util不包括在套餐中。
1.8.1(2014-04-17)#
修复HTTPS请求作为HTTP发出的AppEngine错误。(问题#356)
不安装
dummyservervt.进入,进入site-packages因为只有测试套件才需要它。(问题#362)添加了对指定
source_address。(问题#352)
1.8(2014-03-04)#
改进了URL解析
urllib3.util.parse_url(正确解析用户名中的‘@’,以及‘host name:’之类的空白端口)。新的
urllib3.connection包含所有HTTPConnection对象的模块。几个
urllib3.util.Timeout-相关修复。还将构造函数签名更改为更合理的顺序。 [Backwards incompatible] (问题#252、#262、#263)使用
backports.ssl_match_hostname如果已安装的话。(第274期)增列
.tell()方法,以urllib3.response.HTTPResponse它返回到目前为止读取的字节数。(第277期)支持不带线程的平台。(第289期)
扩展中的默认端口比较
HTTPConnectionPool.is_same_host允许未指定端口的池被视为等于显式提供了端口80/443的HTTP/HTTPS URL。(第305期)改进了默认的SSL/TLS设置,以避免漏洞。(第309期)
固定
urllib3.poolmanager.ProxyManager连接错误时不重试。(问题#310)在非代理的套接字上禁用Nagle算法。请求的子集将发送整个HTTP请求的速度加快约200毫秒;但是,产生的一些TCP包将更小。(第254期)
增加了中的最大SubjectAltNames数
urllib3.contrib.pyopenssl在单个证书中从默认的64位增加到1024位。(问题#318)标头现在作为自定义传递和存储
urllib3.collections_.HTTPHeaderDict对象,而不是普通的dict。(第329期、第333期)标题不再在Python3上败诉。(问题#236)
urllib3.contrib.pyopenssl现在在注入时使用操作系统的默认CA证书。(问题#332)请求与
retries=False将立即引发任何异常,而不将它们包装在MaxRetryError。(问题#348)修复了与SSL相关的故障导致的开放套接字泄漏。(第344期、第348期)
1.7.1(2013-09-25)#
通过新功能添加了精细超时支持
urllib3.util.Timeout班级。(第231期)修复了对Python3.4的支持。(问题#238)
1.7(2013-08-14)#
现在,通过测试,更多的例外是可以腌制的。(第174期)
修复了位置标头中相对URL的重定向问题。(第178期)
支持中的相对URL
Location: ...标题。(第179期)urllib3.response.HTTPResponse现在继承自io.IOBase以获得类似于奖励文件的功能。(第187期)传球
assert_hostname=False创建HTTPSConnectionPool时,将跳过对SSL连接的主机名验证。(问题#194)新方法
urllib3.response.HTTPResponse.stream(...)它起到了发电机的作用.read(...)。(第198期)IPv6 URL解析会强制将主机名括起来。(问题#199)
修复了中的线程争用情况
urllib3.poolmanager.PoolManager.connection_from_host(...)(问题#204)ProxyManager请求现在包括中的非默认端口Host: ...标题。(第217期)在中添加了HTTPS代理支持
ProxyManager。(问题#170#139)新的
RequestFieldobject can be passed to thefields=...可以指定标头的param。(第220期)加薪
urllib3.exceptions.ProxyError连接到代理失败时。(第221期)在发布文件名时使用国际标头。(第119期)
改进了对IPv6的支持。(第203期)
1.6(2013-04-25)#
Contrrib:可选的SNI支持,支持使用PyOpenSSL的PY2。(第156期)
ProxyManager自动添加Host: ...标题(如果未给出)。改进了与SSL相关的代码。
cert_req现在可以选择接受类似“Required”或“None”的字符串。同上ssl_version接受类似“SSLv23”的字符串,字符串值反映相应常量变量的后缀。(第130期)已售出
socksipy现在基于Anorov的fork,它处理意外关闭的代理连接和更大的读取缓冲区。(第135期)确保在未收到数据时关闭连接,修复某些平台上的连接泄漏。(问题#133)
添加了对Py32+上的SSL/TLS连接的SNI支持。(第89期)
测试修复为再次与Py26兼容。(第125期)
添加了通过传递
ssl.PROTOCOL_*常量到ssl_version的参数HTTPSConnectionPool。(第109期)允许在编码文件字段时指定显式内容类型。(第126期)
异常现在可以通过测试进行挑选。(第101期)
修复了在某些情况下不传递默认标头的问题。(第99期)
按照RFC 2616第3.5节的规定,将“Content-Coding”标头值视为不区分大小写。(第110期)
“连接被拒绝”SocketError将被重试而不是引发。(第92期)
更新后的供应商
six,不再覆盖全局six模块命名空间。(第113期)urllib3.exceptions.MaxRetryError包含一个reason属性,该属性包含提示最后重试的异常。如果reason is None然后,这是由于重定向。(第92期、第114期)固定
PoolManager.urlopen()从不重定向不止一次。(第149期)不要假设
Content-Type: text/plain用于不是文件的多部分编码参数。(第111期)经过 strict 参数向下至
httplib.HTTPConnection。(第122期)添加了通过指纹(MD5、SHA1)或针对任意主机名(通过IP连接或针对错误配置的服务器)验证SSL证书的机制。(第140期)
支持流解压缩。(第159期)
1.5(2012-08-02)#
增列
urllib3.add_stderr_logger()用于在urllib3中快速启用STDERR调试日志。中提供了本机完整URL解析(包括身份验证、路径、查询、片段)
urllib3.util.parse_url(url)。如果状态代码为303,内置重定向将把方法切换到‘GET’。(第11期)
urllib3.PoolManager在发送请求URI之前剥离方案和主机。(第8期)新的
urllib3.exceptions.DecodeError基于Content-Type标头的自动解码失败时例外。修复了池耗尽和连接泄漏的错误(问题#76)。添加了池逐出时显式关闭连接的功能。增列
urllib3.PoolManager.clear()。99%->100%单元测试覆盖率。
1.4(2012-06-16)#
与AppEngine相关的次要修复。
切换自
mimetools.choose_boundary至uuid.uuid4()。改进了URL解析。(第73期)
支持IPv6 URL。(第72期)
1.3(2012-03-25)#
删除了1.0之前的不推荐使用的API。
将帮助器重构为
urllib3.util子模块。修复了多部分编码,以支持具有多个值的键的元组列表。(第48期)
修复了多个Set-Cookie标头在Python3中无法正确合并的问题。(问题#53)
为AppEngine提供了对Py27的支持。(第61期)
小调
encode_multipart_formdata修复了与Python3字符串和字节相关的问题。
1.2.2(2012-02-06)#
修复了不发货的包装错误
test-requirements.txt。(第47期)
1.2.1(2012-02-05)#
修复了与以下情况相关的另一个错误
ssl模块不可用。(第41期)位置解析错误现在引发
urllib3.exceptions.LocationParseError它继承自ValueError。
1.2(2012-01-29)#
添加了对Python3的支持(在3.2.2上进行了测试)
删除了对Python2.5的支持(在2.6.7、2.7.2上进行了测试)
使用
select.poll而不是select.select用于支持它的平台。使用
Queue.LifoQueue而不是Queue.Queue以实现更积极的连接重用。可通过重写进行配置ConnectionPool.QueueCls。固定
ImportError安装过程中出现以下情况ssl模块不可用。(第41期)固定
PoolManager未正确完成方案之间的重定向(如HTTP->HTTPS)。(问题#28,在v1.1中的问题#10中发现)端口
dummyserver使用tornado而不是webob+eventlet。删除了无关的、不受支持的虚拟服务器测试后端。添加了套接字级测试。更多的测试。解锁的成就:99%的覆盖率。
1.1(2012-01-07)#
重构
dummyserver到它自己的根命名空间模块(用于测试)。添加了以下项的主机名验证
VerifiedHTTPSConnection由S在PY32‘中出售ssl_match_hostname。(第25期)修复了使用时跨主机的HTTP重定向
PoolManager。(第10期)固定
decode_content设置为时被忽略urlopen。(第27期)修复了与超时相关的错误。(问题#17、#23)
1.0.2(2011-11-04)#
修复了中的打字错误
VerifiedHTTPSConnection只有当您手动使用该对象时,它才会显示为错误。(谢谢皮奥斯)通过将访问日志包装在互斥锁中,使RecentlyUsedContainer(以及PoolManager)更具线程安全性。(谢谢@christer)
使RecentlyUsedContainer更像字典(已更正
__delitem__和__getitem__行为),并进行测试。不应影响核心urllib3代码。
1.0.1(2011-10-10)#
修复了一个错误,其中相同的连接将被返回到池中两次,导致无关的“HttpConnectionPool已满”日志警告。
1.0(2011-10-08)#
增列
PoolManager连接的LRU到期(测试和记录)。增列
ProxyManager(需要测试、文档和确认它与HTTPS代理一起工作)。在以下情况下为响应添加了可选的部分阅读支持
preload_content=False。现在,您可以发出请求并只读取头文件,而无需加载内容。将响应解码设置为可选(默认打开,与之前相同)。
添加了可选的显式边界字符串
encode_multipart_formdata。便利性请求方法现在继承自
RequestMethods。老帮手们喜欢get_url和post_url应该放弃,取而代之的是新的request(method, url, ...)。重构代码,使其更具解耦性、可重用性和可扩展性。
许可证标头已添加到
.py档案。扩展了文档:在代码和文档中使用了大量对Sphinx友好的文档字符串
docs/在https://urllib3.readthedocs.io/.上所有的东西都变得更好了!
开始写这个文件。
0.4.1(2011-07-17)#
小错误修复,代码清理。
0.4(2011-03-01)#
更好的Unicode支持。
增列
VerifiedHTTPSConnection。增列
NTLMConnectionPool在巧妙地。小小的改进。
0.3.1(2010-07-13)#
增列
assert_host_name可选参数。现在与代理兼容。
0.3(2009-12-10)#
添加了HTTPS支持。
小错误修复。
重构,打破了与0.2的向后兼容性。
从此版本开始,API将被视为稳定。
0.2(2008-11-17)#
添加了单元测试。
错误修复。
0.1(2008-11-16)#
第一次发布。