一图看懂 urllib3 模块:一个具有线程安全连接池,支持文件post,清晰友好的HTTP库,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创,转载请声明。
链接: https://blog.csdn.net/Ahcao2008

Alt

一图看懂 urllib3 模块:一个具有线程安全连接池,支持文件post,清晰友好的HTTP库,资料整理+笔记(大全)

🧊摘要

  • 全文介绍python的 urllib3 模块(一个具有线程安全连接池,支持文件post,清晰友好的HTTP库)、函数、类及类的方法和属性。
  • 它通过代码抓取并经AI智能翻译和人工校对。
  • 是一部不可多得的权威字典类工具书。它是系列集的一部分。后续陆续发布、敬请关注。【原创:AhcaoZhu大侠】

🧊模块图

urllib3-module


	urllib3.packages
		urllib3.packages.six
	urllib3.exceptions
	urllib3._version
	urllib3.contrib
		urllib3.contrib._appengine_environ
		urllib3.contrib.socks
			◆socks
	urllib3.util
		urllib3.util.wait
			◆select
		urllib3.util.connection
		urllib3.util.request
		urllib3.util.response
			◆http.client
		urllib3.util.retry
		urllib3.util.url
		urllib3.util.ssltransport
		urllib3.util.ssl_
		urllib3.util.timeout
		urllib3.util.proxy
		urllib3.util.ssl_match_hostname
			◆ipaddress
		urllib3.util.queue
	urllib3._collections
	urllib3.connection
	urllib3.fields
	urllib3.filepost
	urllib3.request
	urllib3.response
	urllib3.connectionpool
		◆queue
	urllib3.poolmanager

🧊类关系图

urllib3-class

◆object
	◆BaseException
		◆Exception
			◆ValueError
				urllib3.exceptions.HTTPError
					◆ValueError
					urllib3.exceptions.BodyNotHttplibCompatible
					urllib3.exceptions.DecodeError
					urllib3.exceptions.HeaderParsingError
					urllib3.exceptions.IncompleteRead
					urllib3.exceptions.InvalidChunkLength
					urllib3.exceptions.InvalidHeader
					urllib3.exceptions.PoolError
						urllib3.exceptions.ClosedPoolError
						urllib3.exceptions.EmptyPoolError
						urllib3.exceptions.RequestError
							urllib3.exceptions.HostChangedError
							urllib3.exceptions.MaxRetryError
							urllib3.exceptions.TimeoutError
								urllib3.exceptions.ConnectTimeoutError
									urllib3.exceptions.NewConnectionError
								urllib3.exceptions.ReadTimeoutError
						urllib3.exceptions.TimeoutError
					urllib3.exceptions.ProtocolError
						urllib3.exceptions.ResponseNotChunked
					urllib3.exceptions.ProxyError
					urllib3.exceptions.ResponseError
					urllib3.exceptions.SSLError
					urllib3.exceptions.TimeoutError
					urllib3.exceptions.TimeoutStateError
					urllib3.exceptions.UnrewindableBodyError
				urllib3.exceptions.LocationValueError
					urllib3.exceptions.LocationParseError
					urllib3.exceptions.URLSchemeUnknown
						◆AssertionError
							urllib3.exceptions.ProxySchemeUnknown
				urllib3.exceptions.ProxySchemeUnsupported
				urllib3.util.ssl_match_hostname.CertificateError
			◆Warning
				urllib3.exceptions.HTTPWarning
					urllib3.exceptions.DependencyWarning
					urllib3.exceptions.SNIMissingWarning
					urllib3.exceptions.SecurityWarning
						urllib3.exceptions.InsecurePlatformWarning
						urllib3.exceptions.InsecureRequestWarning
						urllib3.exceptions.SubjectAltNameWarning
						urllib3.exceptions.SystemTimeWarning
			◆http.client.HTTPException
				◆http.client.IncompleteRead
					urllib3.exceptions.HTTPError
			urllib3.exceptions.HTTPError
			urllib3.util.wait.NoWayToWaitForSocketError
	◆_io._IOBase
		◆io.IOBase
			urllib3.response.HTTPResponse
	◆collections.abc.Container
		◆collections.abc.Iterable
			◆collections.abc.Sized
				◆collections.abc.Collection
					◆collections.abc.Mapping
						◆collections.abc.MutableMapping
							urllib3._collections.HTTPHeaderDict
							urllib3._collections.RecentlyUsedContainer
	◆http.client.HTTPConnection
		urllib3.connection.HTTPConnection
			urllib3.connection.HTTPSConnection
				urllib3.contrib.socks.SOCKSConnection
					urllib3.contrib.socks.SOCKSHTTPSConnection
			urllib3.contrib.socks.SOCKSConnection
	◆module
		urllib3.packages.six.Module_six_moves_urllib
		urllib3.packages.six._LazyModule
			urllib3.packages.six.Module_six_moves_urllib_error
			urllib3.packages.six.Module_six_moves_urllib_parse
			urllib3.packages.six.Module_six_moves_urllib_request
			urllib3.packages.six.Module_six_moves_urllib_response
			urllib3.packages.six.Module_six_moves_urllib_robotparser
			urllib3.packages.six._MovedItems
	◆queue.Queue
		urllib3.util.queue.LifoQueue
	◆tuple
		urllib3.poolmanager.PoolKey
		urllib3.poolmanager.ProxyConfig
		urllib3.util.retry.RequestHistory
		urllib3.util.url.Url
			urllib3.util.url.Url
	◆type
		urllib3.util.retry._RetryMeta
	urllib3.connection.DummyConnection
	urllib3.connectionpool.ConnectionPool
		urllib3.connectionpool.HTTPConnectionPool
			urllib3.connectionpool.HTTPSConnectionPool
				urllib3.contrib.socks.SOCKSHTTPSConnectionPool
			urllib3.contrib.socks.SOCKSHTTPConnectionPool
	urllib3.fields.RequestField
	urllib3.packages.six._LazyDescr
		urllib3.packages.six.MovedAttribute
		urllib3.packages.six.MovedModule
	urllib3.packages.six._SixMetaPathImporter
	urllib3.request.RequestMethods
		urllib3.connectionpool.ConnectionPool
		urllib3.poolmanager.PoolManager
			urllib3.contrib.socks.SOCKSProxyManager
			urllib3.poolmanager.ProxyManager
	urllib3.response.DeflateDecoder
	urllib3.response.GzipDecoder
	urllib3.response.GzipDecoderState
	urllib3.response.MultiDecoder
	urllib3.util.retry.Retry
	urllib3.util.ssltransport.SSLTransport
	urllib3.util.timeout.Timeout

🧊模块全展开

☘️【urllib3】

urllib3, fullname=urllib3, file=urllib3_init_.py

Python HTTP库,具有线程安全的连接池,文件发布支持,用户友好等等

🔵统计

序号类别数量
4str8
5tuple1
6list1
8dict1
9module15
10class7
11function7
13residual3
14system13
15private2
16all43

🔵常量

🔵模块

🌿1 logging

logging, fullname=logging, file=logging_init_.py

🌿2 warnings

warnings, fullname=warnings, file=warnings.py

🌿3 urllib3.packages

packages, fullname=urllib3.packages, file=urllib3\packages_init_.py

🌿4 urllib3.exceptions

exceptions, fullname=urllib3.exceptions, file=urllib3\exceptions.py

🌿5 urllib3._version

_version, fullname=urllib3._version, file=urllib3_version.py

🌿6 urllib3.contrib

contrib, fullname=urllib3.contrib, file=urllib3\contrib_init_.py

🌿7 urllib3.util

util, fullname=urllib3.util, file=urllib3\util_init_.py

🌿8 urllib3._collections

_collections, fullname=urllib3._collections, file=urllib3_collections.py

🌿9 urllib3.connection

connection, fullname=urllib3.connection, file=urllib3\connection.py

🌿10 urllib3.fields

fields, fullname=urllib3.fields, file=urllib3\fields.py

🌿11 urllib3.filepost

filepost, fullname=urllib3.filepost, file=urllib3\filepost.py

🌿12 urllib3.request

request, fullname=urllib3.request, file=urllib3\request.py

🌿13 urllib3.response

response, fullname=urllib3.response, file=urllib3\response.py

🌿14 urllib3.connectionpool

connectionpool, fullname=urllib3.connectionpool, file=urllib3\connectionpool.py

🌿15 urllib3.poolmanager

poolmanager, fullname=urllib3.poolmanager, file=urllib3\poolmanager.py

🔵函数

🌿16 connection_from_url(url, **kw)

connection_from_url(url, **kw), module=urllib3.connectionpool, line:1067 at site-packages\urllib3\connectionpool.py

给定一个url,返回一个:class:`.ConnectionPool`的实例。
    这是一个快捷方式,在创建:class:`.ConnectionPool`的实例之前不必解析url的模式、主机和端口。
    :param url:     绝对url字符串,必须包含方案。端口可选。
    :param \**kw:   将额外的参数传递给相应的:class:`.connectionpool`的构造函数。用于指定诸如timeout,maxsize, header等。
    例子:
        >>> conn = connection_from_url('http://google.com/')
        >>> r = conn.request('GET', '/')

🌿17 encode_multipart_formdata(fields, boundary=None)

encode_multipart_formdata(fields, boundary=None), module=urllib3.filepost, line:63 at site-packages\urllib3\filepost.py

使用multipart/form-data MIME格式编码一个 `fields` 的字典。
    :param fields:      字段的字典或列表 (key, :class:`~urllib3.fields.RequestField`).
    :param boundary:    如果未指定,则使用 :func:`urllib3.filepost.choose_boundary`.

🌿18 proxy_from_url(url, **kw)

proxy_from_url(url, **kw), module=urllib3.poolmanager, line:536 at site-packages\urllib3\poolmanager.py

🌿19 make_headers(keep_alive=None, accept_encoding=None, user_agent=None, basic_auth=None, proxy_basic_auth=None, disable_cache=None)

make_headers(keep_alive=None, accept_encoding=None, user_agent=None, basic_auth=None, proxy_basic_auth=None, disable_cache=None), module=urllib3.util.request, line:29 at site-packages\urllib3\util\request.py

生成请求标头的快捷方式。
    :param keep_alive:        如果 ``True``, 则添加 'connection: keep-alive' 头。
    :param accept_encoding:   可以是布尔值、列表或字符串。``True``翻译成'gzip,deflate'。列表将由逗号连接。字符串将按提供的方式使用。
    :param user_agent:        表示你想要的user-agent的字符串,例如 "python-urllib3/0.6"
    :param basic_auth:        冒号分隔的 username:password 字符串,用于 'authorization: basic ...'头。
    :param proxy_basic_auth:  以冒号分隔的 username:password 字符串,用于 'proxy-authorization: basic ...' 头。
    :param disable_cache:     如果 ``True``, 则添加 'cache-control: no-cache' 头。
    例子:
        >>> make_headers(keep_alive=True, user_agent="Batman/1.0")
        {'connection':`keep-alive', 'user-agent':`Batman/1.0'}
        >>> make_headers(accept_encoding=True)
        {'accept-encoding':`gzip,deflate'}

🌿20 get_host(url)

get_host(url), module=urllib3.util.url, line:430 at site-packages\urllib3\util\url.py

弃用。使用:func:`parse_url`代替。

🌿21 add_stderr_logger(level=10)

add_stderr_logger(level=10), module=urllib3, line:63 at site-packages\urllib3_init_.py

用于快速向日志记录器添加StreamHandler的Helper。用于调试。
在添加处理程序后返回处理程序。

🌿22 disable_warnings(category=<class ‘urllib3.exceptions.HTTPWarning’>)

disable_warnings(category=<class ‘urllib3.exceptions.HTTPWarning’>), module=urllib3, line:98 at site-packages\urllib3_init_.py

帮助快速禁用所有urllib3警告。

🔵类

🌿23 urllib3.connectionpool.HTTPConnectionPool

HTTPConnectionPool, urllib3.connectionpool.HTTPConnectionPool, module=urllib3.connectionpool, line:105 at site-packages\urllib3\connectionpool.py

一个主机的线程安全连接池。
    :param host:    用于此HTTP连接的主机(例如:"localhost"),传递给:class:`http.client.HTTPConnection`。
    :param port:    此HTTP连接使用的端口(None相当于80),传递给:class:`HTTP.client.httpconnection'。
    :param strict:  如果状态行不能被解析为有效的HTTP/1.0或1.1状态行,导致BadStatusLine被引发,传入:class:`HTTP.client.httpconnection'。
                    注意:仅适用于Python 2。该参数在Python 3中被忽略。
    :param timeout:     超时的对象。每个单独连接的套接字超时(以秒为单位)。它可以是一个浮点数或整数,用于设置HTTP请求的超时时间,
                        也可以是:class:`urllib3.util的实例。它为您提供了对请求超时的更细粒度的控制。
                        解析构造函数之后,它总是一个`urllib3.util`。
    :param maxsize:     要保存的可重用的连接数。大于1在多线程情况下很有用。如果block设置为False,则会创建更多的连接,但一旦使用就不会保存。
    :param block:   如果设置为True,则每次使用的连接数不超过``maxsize``。当没有可用的空闲连接时,调用将阻塞,直到一个连接被释放。
                    这对于特定的多线程情况是一个有用的副作用,在这种情况下,人们不想在每个主机上使用超过maxsize的连接来防止泛滥。
    :param headers:     所有请求都包含的头,除非显式给出了其他头。
    :param retries:     重试配置以默认情况下使用此池中的请求。
    :param _proxy:      解析代理URL,不应该直接使用,而是参见:class:`urllib3.ProxyManager`
    :param _proxy_headers:      一个带有代理头的字典,不应该直接使用,相反,请参阅:class:`urllib3.ProxyManager`
    :param \**conn_kw:          附加参数用于创建fresh:class:`urllib3.connection.HTTPConnection`,
                                :class:`urllib3.connection.HTTPSConnection`的实例。
data

1 ConnectionCls=<class ‘urllib3.connection.HTTPConnection’> kind:data type:type class:<class ‘urllib3.connectionpool.HTTPConnectionPool’>
2 ResponseCls=<class ‘urllib3.response.HTTPResponse’> kind:data type:ABCMeta class:<class ‘urllib3.connectionpool.HTTPConnectionPool’>
3 scheme=http kind:data type:str class:<class ‘urllib3.connectionpool.HTTPConnectionPool’>

method
4 close(self)

kind=method class=HTTPConnectionPool objtype=function line:483 at …\lib\site-packages\urllib3\connectionpool.py

关闭所有池连接并禁用池。
5 is_same_host(self, url)

kind=method class=HTTPConnectionPool objtype=function line:501 at …\lib\site-packages\urllib3\connectionpool.py

检查给定的``url``是否与此连接池属于同一主机。
6 urlopen(

kind=method class=HTTPConnectionPool objtype=function line:522 at …\lib\site-packages\urllib3\connectionpool.py

从池中获取连接并执行HTTP请求。这是发出请求的最低级别调用,因此您需要指定所有原始细节。
    注意:更常见的是,使用:class:`.RequestMethods`提供的方便方法是合适的。例如:meth:`request`
    注意:`release_conn`只会在 `preload_content=False`  时表现得像预期的那样,因为我们想让 `preload_content=False`
            在不破坏向后兼容性的情况下很快成为默认行为。
    :param method:  HTTP请求方法(如GET、POST、PUT等)
    :param url:     执行请求的url。
    :param body:    在请求体中发送的数据,可以是:class:`str`,:class:`bytes`,一个:class:`str`/:class:`bytes`的可迭代对象,或者一个类似文件的对象。
    :param headers: 要发送的自定义头的字典,例如User-Agent, If-None-Match等。
                    如果为None,则使用池头。如果提供,这些头文件将完全替换任何特定于池的头文件。
    :param retries: 在引发 :class:`~urllib3.exceptions.MaxRetryError` 之前,配置允许的重试次数。
                    在收到响应之前,传递“None”进行重试。传递一个 :class:`~urllib3.util.retry.Retry` 对象,以便对不同类型的重试进行细粒度控制。
                    传递一个整数来重试该次数的连接错误,但没有其他类型的错误。传递0表示不再重试。
                    如果 `False` ,则禁用重试,并立即引发任何异常。此外,将返回重定向响应,而不是在重定向时引发MaxRetryError。
    :type retries:  :class:`~urllib3.util.retry.Retry`,False或int。
    :param redirect:    如果为True,自动处理重定向(状态码301、302、303、307、308)。
                        每次重定向都算作一次重试。禁用重试也将禁用重定向。
    :param assert_same_host:    如果 ``True`` ,将确保请求池的主机是一致的,否则将引发HostChangedError。
                                当``False``时,您可以在HTTP代理上使用该池并请求外部主机。
    :param timeout:             如果指定,覆盖此请求的默认超时。它可以是浮点数(以秒为单位)或:class:`urllib3.util.Timeout`的实例。
    :param pool_timeout:        如果设置并将池设置为block=True,则此方法将阻塞 ``pool_timeout`` 秒,并在时间段内没有可用连接时引发EmptyPoolError。
    :param release_conn:        如果为False,则一旦收到响应,urlopen调用将不会将连接释放回池中(但如果读取响应的整个内容,例如当`preload_content=True`,则会释放)。
                                如果您没有立即预加载响应的内容,这是有用的。您需要调用``r`` 在响应 ``r.release_conn()`` 以将连接返回到池中。
                                如果None,则取 ``response_kw.get('preload_content', True)``。
    :param chunked:             如果为True, urllib3将使用分块传输编码发送正文。否则,urllib3将使用标准的内容长度形式发送正文。默认为False。
    :param int body_pos:        重试或重定向时要在类文件体中查找到的位置。通常不需要设置这个值,因为urllib3会在需要时自动填充这个值。
    :param \**response_kw:      额外的参数被传递给:meth:`urllib3.response.HTTPResponse.from_httplib`。

🌿24 urllib3.connectionpool.HTTPSConnectionPool

HTTPSConnectionPool, urllib3.connectionpool.HTTPSConnectionPool, module=urllib3.connectionpool, line:897 at site-packages\urllib3\connectionpool.py

与:class:`.HTTPConnectionPool`,但HTTPS除外。
    类:class:`.HTTPSConnection` 使用``assert_fingerprint``,``assert_hostname`` 和 ``host`` 中的一个按此顺序来验证连接。
    如果 ``assert_hostname`` 为False,则不进行验证。
    ``key_file``, ``cert_file``, ``cert_reqs``, ``ca_certs``, ``ca_cert_dir``, ``ssl_version``, ``key_password``
    仅在:mod:`ssl`可用时使用,并被馈送到 :meth:`urllib3.util.ssl_wrap_socket` 将连接套接字升级为ssl套接字。
data

1 ConnectionCls=<class ‘urllib3.connection.HTTPSConnection’> kind:data type:type class:<class ‘urllib3.connectionpool.HTTPSConnectionPool’>
2 scheme=https kind:data type:str class:<class ‘urllib3.connectionpool.HTTPSConnectionPool’>

🌿25 urllib3.poolmanager.PoolManager

PoolManager, urllib3.poolmanager.PoolManager, module=urllib3.poolmanager, line:140 at site-packages\urllib3\poolmanager.py

允许任意请求,同时透明地为您跟踪必要的连接池。
    :param num pools:   在丢弃最近最少使用的连接池之前要缓存的连接池数量。
    :param headers:     所有请求都包含的头,除非显式给出了其他头。
    :param \**connection_pool_kw:   附加参数用于创建 :class:`urllib3.connectionpool.ConnectionPool` 实例。
    例子:
        >>> manager = PoolManager(num_pools=2)
        >>> r = manager.request('GET', 'http://google.com/')
        >>> r = manager.request('GET', 'http://google.com/mail')
        >>> r = manager.request('GET', 'http://yahoo.com/')
        >>> len(manager.pools)
        2
data

1 proxy=None kind:data type:NoneType class:<class ‘urllib3.poolmanager.PoolManager’>
2 proxy_config=None kind:data type:NoneType class:<class ‘urllib3.poolmanager.PoolManager’>

method
3 clear(self)

kind=method class=PoolManager objtype=function line:216 at …\lib\site-packages\urllib3\poolmanager.py

清空我们储存的水池,命令它们全部关闭。
    这不会影响飞行中的连接,但它们在完成后不会被重用。
4 connection_from_context(self, request_context)

kind=method class=PoolManager objtype=function line:248 at …\lib\site-packages\urllib3\poolmanager.py

获取:class:`urllib3.connectionpool.ConnectionPool`基于请求上下文。
``request_context`` 必须至少包含 ``scheme`` 键,并且它的值必须是 ``key_fn_by_scheme`` 实例变量中的一个键。
5 connection_from_host(self, host, port=None, scheme=“http”, pool_kwargs=None)

kind=method class=PoolManager objtype=function line:225 at …\lib\site-packages\urllib3\poolmanager.py

获取:class:`urllib3.connectionpool.ConnectionPool`,根据主机、端口和方案选择。
    如果没有给出`port`,它将使用 ``urllib3.connectionpool.port_by_scheme``。
    如果提供了``pool_kwargs``,它将与实例的 ``connection_pool_kw`` 变量合并,并用于创建新的连接池(如果需要的话)。
6 connection_from_pool_key(self, pool_key, request_context=None)

kind=method class=PoolManager objtype=function line:263 at …\lib\site-packages\urllib3\poolmanager.py

获取:class:`urllib3.connectionpool.ConnectionPool`,基于提供的池密钥。
``pool_key`` 应该是一个只包含不可变对象的命名元组。至少它必须有“scheme”、“host”和“port”字段。
7 connection_from_url(self, url, pool_kwargs=None)

kind=method class=PoolManager objtype=function line:287 at …\lib\site-packages\urllib3\poolmanager.py

类似于 :func:`urllib3.connectionpool.connection_from_url`。
如果没有提供 ``pool_kwargs``,并且需要构建一个新的池, ``self.connection_pool_kw`` 用于初始化:类:`urllib3.connectionpool.ConnectionPool`。
如果提供了``pool_kwargs``,则使用它代替。
请注意,如果不需要为请求创建新池,则不会使用提供的``pool_kwargs``。
8 urlopen(self, method, url, redirect=True, **kw)

kind=method class=PoolManager objtype=function line:353 at …\lib\site-packages\urllib3\poolmanager.py

与:meth:`urllib3.HTTPConnectionPool.urlopen`,使用自定义跨主机重定向逻辑,只发送 `url` 的请求uri部分。
给定的 `url` 参数必须是绝对的,这样一个合适的:class:`urllib3.connectionpool.`可以为它选择ConnectionPool。

🌿26 urllib3.poolmanager.ProxyManager

ProxyManager, urllib3.poolmanager.ProxyManager, module=urllib3.poolmanager, line:421 at site-packages\urllib3\poolmanager.py

行为就像:class:`PoolManager`,但通过定义的代理发送所有请求,使用HTTPS URL 的 CONNECT 方法。
    :param proxy_url:       要使用的代理的url。
    :param proxy_headers:   包含将发送给代理的头的字典。在HTTP的情况下,它们与每个请求一起发送,
                            而在HTTPS/CONNECT的情况下,它们只发送一次。可用于代理身份验证。
    :param proxy_ssl_context:   代理SSL上下文用于在使用HTTPS代理时建立到代理的TLS连接。
    :param use_forwarding_for_https:    (默认为False)如果设置为True,将转发请求到代表客户端的https代理,而不是通过CONNECT方法创建TLS隧道。
                            **启用此标志意味着请求和响应头和内容将从HTTPS代理中可见**
                            而隧道则使请求和响应的报头和内容保持私有。
                            IP地址、目标主机名、SNI和端口对于HTTPS代理始终是可见的,即使禁用了此标志。
    示例:
        >>> proxy = urllib3.ProxyManager('http://localhost:3128/')
        >>> r1 = proxy.request('GET', 'http://google.com/')
        >>> r2 = proxy.request('GET', 'http://httpbin.org/')
        >>> len(proxy.pools)
        1
        >>> r3 = proxy.request('GET', 'https://httpbin.org/')
        >>> r4 = proxy.request('GET', 'https://twitter.com/')
        >>> len(proxy.pools)
        3
method
1 connection_from_host(self, host, port=None, scheme=“http”, pool_kwargs=None)

kind=method class=ProxyManager objtype=function line:498 at …\lib\site-packages\urllib3\poolmanager.py

2 urlopen(self, method, url, redirect=True, **kw)

kind=method class=ProxyManager objtype=function line:523 at …\lib\site-packages\urllib3\poolmanager.py

同HTTP(S)ConnectionPool.urlopen,``url`` 必须是绝对的。

🌿27 urllib3.response.HTTPResponse

HTTPResponse, urllib3.response.HTTPResponse, module=urllib3.response, line:163 at site-packages\urllib3\response.py

HTTP响应容器。
    向后兼容:class:`http.client.HTTPResponse`, 但是当`data`属性被访问时,响应 `body` 被加载并按需解码。
    这个类也与Python标准库的:mod:`io`模块兼容,因此可以在该框架的上下文中被视为可读对象。
    在 :class:`http.client.HTTPResponse` 中不存在的行为.
    :param preload_content: 如果为True,则响应体将在构造期间预加载。
    :param decode_content:  如果为True,将尝试基于'content-encoding'报头解码正文。
    :param original_response:   当这个包装器是从:class:`http.client.HTTPResponse`生成的对象,为了调试的目的,包含原始的是很方便的。除此之外,它是闲置的。
    :param retries:         重试包含最后一个:class:`~urllib3.util.retry.Retry`。请求期间使用的“重试”。
    :param enforce_content_length:  强制内容长度检查。服务器返回的正文必须匹配内容长度报头的值(如果存在)。否则,抛出错误。
data

1 CONTENT_DECODERS=[‘gzip’, ‘deflate’] kind:data type:list class:<class ‘urllib3.response.HTTPResponse’>
2 DECODER_ERROR_CLASSES=(<class ‘OSError’>, <class ‘zlib.error’>) kind:data type:tuple class:<class ‘urllib3.response.HTTPResponse’>
3 REDIRECT_STATUSES=[301, 302, 303, 307, 308] kind:data type:list class:<class ‘urllib3.response.HTTPResponse’>

property

4 closed=<property object at 0x00000252E8494048> kind:property type:property class:<class ‘urllib3.response.HTTPResponse’>
5 connection=<property object at 0x00000252E8492E08> kind:property type:property class:<class ‘urllib3.response.HTTPResponse’>
6 data=<property object at 0x00000252E8492DB8> kind:property type:property class:<class ‘urllib3.response.HTTPResponse’>

method
7 close(self)

kind=method class=HTTPResponse objtype=function line:689 at …\lib\site-packages\urllib3\response.py

8 drain_conn(self)

kind=method class=HTTPResponse objtype=function line:288 at …\lib\site-packages\urllib3\response.py

读取并丢弃响应连接中任何剩余的HTTP响应数据。
HTTPResponse连接中的未读数据阻止连接被释放回池。
9 fileno(self)

kind=method class=HTTPResponse objtype=function line:712 at …\lib\site-packages\urllib3\response.py

10 flush(self)

kind=method class=HTTPResponse objtype=function line:723 at …\lib\site-packages\urllib3\response.py

11 get_redirect_location(self)

kind=method class=HTTPResponse objtype=function line:268 at …\lib\site-packages\urllib3\response.py

我们应该重定向吗?
    返回:如果我们有一个重定向状态码和有效的位置,真实的重定向位置字符串。
 如果重定向状态没有位置,则返回`None`。如果不是重定向状态码,则为``False``。
12 getheader(self, name, default=None)

kind=method class=HTTPResponse objtype=function line:675 at …\lib\site-packages\urllib3\response.py

13 getheaders(self)

kind=method class=HTTPResponse objtype=function line:666 at …\lib\site-packages\urllib3\response.py

14 geturl(self)

kind=method class=HTTPResponse objtype=function line:859 at …\lib\site-packages\urllib3\response.py

返回作为此响应源的URL。
    如果生成此响应的请求被重定向,则此方法将返回最终重定向位置。
15 info(self)

kind=method class=HTTPResponse objtype=function line:685 at …\lib\site-packages\urllib3\response.py

16 isclosed(self)

kind=method class=HTTPResponse objtype=function line:312 at …\lib\site-packages\urllib3\response.py

17 read(self, amt=None, decode_content=None, cache_content=False)

kind=method class=HTTPResponse objtype=function line:535 at …\lib\site-packages\urllib3\response.py

类似于 :meth:`http.client.HTTPResponse.read`,但有两个额外的参数:``decode_content``和 ``cache_content``。
    :param amt: 要读取多少内容。如果指定,则跳过缓存,因为将部分内容缓存为完整响应是没有意义的。
    :param decode_content:  如果为True,将尝试基于'content-encoding'报头解码正文。
    :param cache_content:   如果为True,将保存返回的数据,以便无论底层文件对象的状态如何,都返回相同的结果。
                            如果您想要``.data``属性在拥有 ``.read()``文件对象后继续工作。(如果设置了``amt``将被重写。)
18 read_chunked(self, amt=None, decode_content=None)

kind=method class=HTTPResponse objtype=function line:789 at …\lib\site-packages\urllib3\response.py

类似于 :meth:`HTTPResponse.read`,但带有一个附加参数``decode_content``。
    :param amt:             要读取多少内容。如果指定,则跳过缓存,因为将部分内容缓存为完整响应是没有意义的。
    :param decode content:  如果为True,将尝试基于'content-encoding'报头解码正文。
19 readable(self)

kind=method class=HTTPResponse objtype=function line:731 at …\lib\site-packages\urllib3\response.py

20 readinto(self, b)

kind=method class=HTTPResponse objtype=function line:735 at …\lib\site-packages\urllib3\response.py

21 release_conn(self)

kind=method class=HTTPResponse objtype=function line:281 at …\lib\site-packages\urllib3\response.py

22 stream(self, amt=2 ** 16, decode_content=None)

kind=method class=HTTPResponse objtype=function line:607 at …\lib\site-packages\urllib3\response.py

read()方法的生成器包装器。调用将阻塞,直到从连接中读取“amt”字节或直到连接关闭。
    :param amt:             要读取多少内容。生成器每次迭代将返回最多的数据,但可能返回的更少。
                            这在使用压缩数据时尤其可能。然而,空字符串将永远不会返回。
    :param decode_content:  如果为True,将尝试基于'content-encoding'报头解码正文。
23 supports_chunked_reads(self)

kind=method class=HTTPResponse objtype=function line:744 at …\lib\site-packages\urllib3\response.py

检查底层类文件对象是否看起来像 :class:`http.client.HTTPResponse` 对象。
我们通过测试fp属性来做到这一点。如果它存在,我们假设它返回经过read_chunked()处理的原始块。
24 tell(self)

kind=method class=HTTPResponse objtype=function line:315 at …\lib\site-packages\urllib3\response.py

获得到目前为止通过线路传输的字节数。
可能与 :meth:``urllib3.response.HTTPResponse.read`` 返回的内容量不同, 如果字节是在线编码(例如,压缩)。
class method
25 from_httplib(ResponseCls, r, **response_kw)

kind=class method class=HTTPResponse objtype=classmethod line:634 at …\lib\site-packages\urllib3\response.py

将函数转换为类方法。

🌿28 urllib3.util.retry.Retry

Retry, urllib3.util.retry.Retry, module=urllib3.util.retry, line:92 at site-packages\urllib3\util\retry.py

重试配置。每次重试尝试都会创建一个具有更新值的新retry对象,因此可以安全地重用它们。
重试可以定义为池的默认值:
        retries = Retry(connect=5, read=2, redirect=5)
        http = PoolManager(retries=retries)
        response = http.request('GET', 'http://example.com/')
    或每个请求(覆盖池的默认值):
        response = http.request('GET', 'http://example.com/', retries=Retry(10))
    可以通过传递 `False` 来禁用重试:
        response = http.request('GET', 'http://example.com/', retries=False)
    错误将被包装在 :class:`~urllib3.exceptions.MaxRetryError`,除非重试被禁用,在这种情况下将引发异常。
    :param int total:   允许的重试总数。优先于其他计数。
                        设置为“None”以删除此约束并返回到其他计数。
                        设置为“0”表示第一次重试失败。
                        设置为 ``False`` 来禁用并暗示``raise_on_redirect=False``。
    :param int connect: 要重试的连接相关错误的个数。
                        这些错误是在请求发送到远程服务器之前引发的,我们假设远程服务器没有触发服务器处理请求。
                        设置为“0”表示此类型的第一次重试失败。
    :param int read:    读取错误时重试的次数。这些错误是在请求发送到服务器之后引发的,因此请求可能有副作用。
                        设置为“0”表示此类型的第一次重试失败。
    :param int:         执行多少重定向。限制它以避免无限重定向循环。重定向是一个HTTP响应,状态码为301、302、303、307或308。
                        设置为``0``表示此类型的第一次重试失败。设置为 `False` 以禁用并暗示``raise_on_redirect=False``。
    :param int status:  错误状态码的重试次数。这些是对响应进行的重试,其中状态代码匹配“状态预测器”。设置为“0”表示此类型的第一次重试失败。
    :param int other:   对其他错误重试多少次。其他错误是非连接、读取、重定向或状态错误。这些错误可能在请求被发送到服务器之后被引发,因此请求可能有副作用。
                        设置为“0”表示此类型的第一次重试失败。如果未设置“total”,则最好将其设置为0,以考虑意外的边缘情况并避免无限重试循环。
    :param iterable allowed_methods:    我们应该重试的一组大写HTTP方法动词。默认情况下,我们只重试那些被认为是幂等的方法(具有相同参数的多个请求以相同的状态结束)。
                        参见 :attr:`Retry.DEFAULT_ALLOWED_METHODS`。
                        设置为“False”值以重试任何动词.
                        警告:     先前此参数被命名为``method_whitelist``,该用法在v1.26.0中已弃用,将在v2.0中删除。
    :param iterable status_forcelist:   我们应该强制重试的一组整数HTTP状态码。如果请求方法在``allowed_methods`` 中,
                                        并且响应状态码在``status_forcelist``中,则启动重试。默认情况下,使用`None` 禁用此功能。
    :param float backoff_factor:        在第二次尝试之后的两次尝试之间应用的一个 backoff factor (大多数错误在第二次尝试后立即解决,没有延迟)。Urllib3将休眠:
            {backoff factor} * (2 ** ({number of total retries} - 1))
                                        秒。如果回退因子为0.1,则 :func:`.sleep` 会持续0秒、0.2秒、0.4秒……重试之间。
                                        它永远不会超过 :attr:`Retry.DEFAULT_BACKOFF_MAX`。
                                        默认情况下,backoff是禁用的(设置为0)
    :param bool raise_on_redirect:  如果重定向的数量已经用尽,是否引发MaxRetryError,或者返回一个响应代码在3xx范围内的响应。
    :param bool raise_on_status:    类似于``raise_on_redirect``, 如果状态落在``status_forcelist`` 范围内并且重试次数已用尽,我们是否应该引发异常或返回响应。
    :param tuple history:           每次调用:meth:`~Retry.increment`时遇到的请求历史。该列表按照请求发生的顺序排列。每个列表项都属于类:class:`RequestHistory`。
    :param bool respect_retry_after_header:     是否尊重定义为:attr:`Retry`的状态码的 Retry-After 报头。是否在状态码后重试。
    :param iterable remove_headers_on_redirect: 在触发重定向请求之前,当指示重定向的响应返回时,从请求中删除的头序列。
data

1 DEFAULT=Retry(total=3, connect=None, read=None, redirect=None, status=None) kind:data type:Retry class:<class ‘urllib3.util.retry.Retry’>
2 DEFAULT_ALLOWED_METHODS=frozenset({‘HEAD’, ‘DELETE’, ‘OPTIONS’, ‘TRACE’, ‘GET’, ‘PUT’}) kind:data type:frozenset class:<class ‘urllib3.util.retry.Retry’>
3 DEFAULT_BACKOFF_MAX=120 kind:data type:int class:<class ‘urllib3.util.retry.Retry’>
4 DEFAULT_REMOVE_HEADERS_ON_REDIRECT=frozenset({‘Authorization’}) kind:data type:frozenset class:<class ‘urllib3.util.retry.Retry’>
5 RETRY_AFTER_STATUS_CODES=frozenset({503, 413, 429}) kind:data type:frozenset class:<class ‘urllib3.util.retry.Retry’>

method
6 get_backoff_time(self)

kind=method class=Retry objtype=function line:354 at …\lib\site-packages\urllib3\util\retry.py

计算当前backoff的公式:
    :rtype: float
7 get_retry_after(self, response)

kind=method class=Retry objtype=function line:394 at …\lib\site-packages\urllib3\util\retry.py

以秒为单位获取Retry-After的值。
8 increment(

kind=method class=Retry objtype=function line:504 at …\lib\site-packages\urllib3\util\retry.py

返回一个具有递增重试计数器的新重试对象。
    :param response:    响应对象,如果服务器没有返回响应,则为None。
    :type response:     :class:`~urllib3.response.HTTPResponse`
    :param Exception error:     请求过程中遇到的错误,如果成功接收到响应则为None。
    :return:            一个新的``Retry`` 对象。
9 is_exhausted(self)

kind=method class=Retry objtype=function line:488 at …\lib\site-packages\urllib3\util\retry.py

我们没有重试了吗?
10 is_retry(self, method, status_code, has_retry_after=False)

kind=method class=Retry objtype=function line:468 at …\lib\site-packages\urllib3\util\retry.py

此方法/状态码是否可重试?
(基于允许列表和控制变量,如允许的重试总数,是否尊重Retry-After报头,是否存在此报头,以及返回的状态码是否在状态码列表中,以便在出现上述报头时重试)
11 new(self, **kw)

kind=method class=Retry objtype=function line:304 at …\lib\site-packages\urllib3\util\retry.py

12 parse_retry_after(self, retry_after)

kind=method class=Retry objtype=function line:371 at …\lib\site-packages\urllib3\util\retry.py

13 sleep(self, response=None)

kind=method class=Retry objtype=function line:418 at …\lib\site-packages\urllib3\util\retry.py

在重试尝试之间休眠。
此方法将尊重服务器的``Retry-After``响应头,并在请求的时间内休眠。
如果不存在,它将使用指数回退。
默认情况下,回退因子为0,此方法将立即返回。
14 sleep_for_retry(self, response=None)

kind=method class=Retry objtype=function line:404 at …\lib\site-packages\urllib3\util\retry.py

class method
15 from_int(cls, retries, redirect=True, default=None)

kind=class method class=Retry objtype=classmethod line:341 at …\lib\site-packages\urllib3\util\retry.py

将函数转换为类方法。

🌿29 urllib3.util.timeout.Timeout

Timeout, urllib3.util.timeout.Timeout, module=urllib3.util.timeout, line:19 at site-packages\urllib3\util\timeout.py

超时配置。超时可以定义为池的默认值:
    代码块: python
       timeout = Timeout(connect=2.0, read=7.0)
       http = PoolManager(timeout=timeout)
       response = http.request('GET', 'http://example.com/')
    或每个请求(覆盖池的默认值):
       response = http.request('GET', 'http://example.com/', timeout=Timeout(10))
    可以通过设置所有参数为`None`来禁用超时:
       no_timeout = Timeout(connect=None, read=None)
       response = http.request('GET', 'http://example.com/, timeout=no_timeout)
    :param total:   将连接超时和读取超时合并为一个;读取超时将设置为连接尝试的剩余时间。
                    如果同时指定了连接超时和总超时,或者指定了读超时和总超时,则应用较短的超时。默认为None。
    :type total:    int, float, 或 None
    :param connect: 连接到服务器成功等待的最大时间(以秒为单位)。省略该参数将使连接超时默认为系统默认值,可能是'[socket.py](<http://hg.python.org/cpython/file/603b4d593758/Lib/socket.py#l535)中的全局默认超时'。
                    None将为连接尝试设置无限超时。
    :type connect:  int, float或None
    :param read:    在连续读取操作之间等待服务器响应的最大时间(以秒为单位)。
                    省略该参数将使读取超时默认为系统默认值,可能是'[socket.py](http://hg.python.org/cpython/file/603b4d593758/Lib/socket.py#l535)中的全局默认超时'。
                    None将设置无限超时。
    :type read:     int、float或None
    注意:            许多因素会影响urllib3返回HTTP响应的总时间。
                    例如,Python的DNS解析器不遵守套接字上指定的超时。其他可能影响总请求时间的因素包括高CPU负载、高交换、以低优先级运行的程序或其他行为。
                    此外,读取超时和总超时仅衡量连接客户端和服务器的套接字上的读取操作之间的时间,而不是请求返回完整响应的总时间。
                    对于大多数请求,会引发超时,因为服务器没有在指定的时间内发送第一个字节。
                    情况并非总是如此;如果服务器每15秒流式传输一个字节,那么即使请求需要几分钟才能完成,也不会触发20秒的超时。
                    如果您的目标是在固定的挂钟时间后切断任何请求,请考虑使用第二个 "watcher" 线程来切断缓慢的请求。
data

1 DEFAULT_TIMEOUT=<object object at 0x00000252E6007FD0> kind:data type:object class:<class ‘urllib3.util.timeout.Timeout’>

property

2 connect_timeout=<property object at 0x00000252E8313BD8> kind:property type:property class:<class ‘urllib3.util.timeout.Timeout’>
3 read_timeout=<property object at 0x00000252E8313B38> kind:property type:property class:<class ‘urllib3.util.timeout.Timeout’>

method
4 clone(self)

kind=method class=Timeout objtype=function line:184 at …\lib\site-packages\urllib3\util\timeout.py

超时属性存储在每个池中,但每个请求都需要一个新的timeout对象,以确保每个请求都配置了自己的开始/停止。
    :return: timeout对象的拷贝。
    :rtype: :class:`Timeout`
5 get_connect_duration(self)

kind=method class=Timeout objtype=function line:209 at …\lib\site-packages\urllib3\util\timeout.py

获取调用:meth:`start_connect`后经过的时间。
    :return: 以秒为单位的运行时间。
    :rtype: float
    :raises urllib3.exceptions.TimeoutStateError:   如果您试图获取尚未启动的计时器的持续时间。
6 start_connect(self)

kind=method class=Timeout objtype=function line:198 at …\lib\site-packages\urllib3\util\timeout.py

启动超时时钟,在connect()尝试期间使用。
    :raises urllib3.exceptions.TimeoutStateError:   如果你试图启动一个已经启动的计时器。
class method
7 from_float(cls, timeout)

kind=class method class=Timeout objtype=classmethod line:169 at …\lib\site-packages\urllib3\util\timeout.py

将函数转换为类方法。
8 resolve_default_timeout(cls, timeout)

kind=class method class=Timeout objtype=classmethod line:119 at …\lib\site-packages\urllib3\util\timeout.py

将函数转换为类方法。

🔵私有或局部

30 _version <module ‘urllib3._versionfrom…\lib\site-packages\urllib3_version.py’>
31 _collections <module ‘urllib3._collectionsfrom…\lib\site-packages\urllib3_collections.py’>

🔵剩余

32 loader <_frozen_importlib_external.SourceFileLoader object at 0x00000252E6A7FD48>
33 spec ModuleSpec(name=‘urllib3’, loader=<frozen_importlib_external.SourceFileLoader object at 0x00000252E6A7FD48>, origin='…\lib\site-packages\urllib3_init.py’, submodule_search_locations=[‘…\lib\site-packages\urllib3’])
34 absolute_import _Feature((2, 5, 0, ‘alpha’, 1), (3, 0, 0, ‘alpha’, 0), 16384)

☘️【urllib3.contrib._appengine_environ】

_appengine_environ, fullname=urllib3.contrib._appengine_environ, file=urllib3\contrib_appengine_environ.py

这个模块提供了检测应用引擎环境的方法。

🔵统计

序号类别数量
4str5
8dict1
9module1
11function5
13residual2
14system8
16all14

🔵模块

🌿1 os

os, fullname=os, file=os.py

🔵函数

🌿2 is_appengine()

is_appengine(), module=urllib3.contrib._appengine_environ, line:8 at site-packages\urllib3\contrib_appengine_environ.py

🌿3 is_appengine_sandbox()

is_appengine_sandbox(), module=urllib3.contrib._appengine_environ, line:12 at site-packages\urllib3\contrib_appengine_environ.py

报告应用程序是否在第一代沙盒中运行。
从技术上讲,第二代运行时仍然在沙盒中,但它的限制要少得多,因此通常不需要检查它。[参见](https://cloud.google.com/appengine/docs/standard/runtimes)

🌿4 is_local_appengine()

is_local_appengine(), module=urllib3.contrib._appengine_environ, line:22 at site-packages\urllib3\contrib_appengine_environ.py

🌿5 is_prod_appengine()

is_prod_appengine(), module=urllib3.contrib._appengine_environ, line:28 at site-packages\urllib3\contrib_appengine_environ.py

🌿6 is_prod_appengine_mvms()

is_prod_appengine_mvms(), module=urllib3.contrib._appengine_environ, line:34 at site-packages\urllib3\contrib_appengine_environ.py

弃用

☘️【urllib3.util.wait】

wait, fullname=urllib3.util.wait, file=urllib3\util\wait.py

🔵统计

序号类别数量
4str4
6list1
8dict1
9module3
10class2
11function8
12builtin_function_or_method1
13residual3
14system9
15private2
16all23

🔵模块

🌿1 errno

errno, fullname=errno

🌿2 select

select, fullname=select, file=select.pyd

🌿3 sys

sys, fullname=sys

🔵函数

🌿4 _retry_on_intr(fn, timeout)

_retry_on_intr(fn, timeout), module=urllib3.util.wait, line:42 at site-packages\urllib3\util\wait.py

🌿5 select_wait_for_socket(sock, read=False, write=False, timeout=None)

select_wait_for_socket(sock, read=False, write=False, timeout=None), module=urllib3.util.wait, line:70 at site-packages\urllib3\util\wait.py

🌿6 poll_wait_for_socket(sock, read=False, write=False, timeout=None)

poll_wait_for_socket(sock, read=False, write=False, timeout=None), module=urllib3.util.wait, line:89 at site-packages\urllib3\util\wait.py

🌿7 null_wait_for_socket(*args, **kwargs)

null_wait_for_socket(*args, **kwargs), module=urllib3.util.wait, line:109 at site-packages\urllib3\util\wait.py

🌿8 _have_working_poll()

_have_working_poll(), module=urllib3.util.wait, line:113 at site-packages\urllib3\util\wait.py

🌿9 select_wait_for_socket(sock, read=False, write=False, timeout=None)

select_wait_for_socket(sock, read=False, write=False, timeout=None), module=urllib3.util.wait, line:70 at site-packages\urllib3\util\wait.py

🌿10 wait_for_read(sock, timeout=None)

wait_for_read(sock, timeout=None), module=urllib3.util.wait, line:141 at site-packages\urllib3\util\wait.py

等待给定套接字上可用的读取。如果套接字可读则返回True,如果超时则返回False。

🌿11 wait_for_write(sock, timeout=None)

wait_for_write(sock, timeout=None), module=urllib3.util.wait, line:148 at site-packages\urllib3\util\wait.py

等待给定套接字上可用的写入。如果套接字可读则返回True,如果超时则返回False。

🔵类

🌿12 functools.partial

partial, functools.partial, module=functools, line:234 at functools.py

partia (func, *args, **keywords) -部分应用给定参数和关键字的新函数。
data

1 args=<member ‘argsoffunctools.partial’ objects> kind:data type:member_descriptor class:<class ‘functools.partial’>
2 func=<member ‘funcoffunctools.partial’ objects> kind:data type:member_descriptor class:<class ‘functools.partial’>
3 keywords=<member ‘keywordsoffunctools.partial’ objects> kind:data type:member_descriptor class:<class ‘functools.partial’>

🌿13 urllib3.util.wait.NoWayToWaitForSocketError

NoWayToWaitForSocketError, urllib3.util.wait.NoWayToWaitForSocketError, module=urllib3.util.wait, line:14 at site-packages\urllib3\util\wait.py

🔵内嵌函数或方法

14 monotonic

🔵私有或局部

15 _retry_on_intr <function _retry_on_intr at 0x00000252E83F9F78>
16 _have_working_poll <function _have_working_poll at 0x00000252E8400B88>

☘️【urllib3.util.retry】

retry, fullname=urllib3.util.retry, file=urllib3\util\retry.py

🔵统计

序号类别数量
4str4
8dict1
9module6
10class11
11function1
13residual6
14system8
15private2
16all29

🔵模块

🌿1 email

email, fullname=email, file=email_init_.py

🌿2 logging

logging, fullname=logging, file=logging_init_.py

🌿3 re

re, fullname=re, file=re.py

🌿4 time

time, fullname=time

🌿5 warnings

warnings, fullname=warnings, file=warnings.py

🌿6 urllib3.packages.six

six, fullname=urllib3.packages.six, file=urllib3\packages\six.py

🔵函数

🌿7 namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)

namedtuple(typename, field_names, *, rename=False, defaults=None, module=None), module=collections, line:316 at collections_init_.py

返回具有命名字段的元组的新子类。
    >>> Point = namedtuple('Point', ['x', 'y'])
    >>> Point.__doc__                   # docstring for the new class
    'Point(x, y)'
    >>> p = Point(11, y=22)             # instantiate with positional args or keywords
    >>> p[0] + p[1]                     # indexable like a plain tuple
    33
    >>> x, y = p                        # unpack like a regular tuple
    >>> x, y
    (11, 22)
    >>> p.x + p.y                       # fields also accessible by name
    33
    >>> d = p._asdict()                 # convert to a dictionary
    >>> d['x']
    11
    >>> Point(**d)                      # convert from a dictionary
    Point(x=11, y=22)
    >>> p._replace(x=100)               # _replace() is like str.replace() but targets named fields
    Point(x=100, y=22)

🔵类

🌿8 itertools.takewhile

takewhile, itertools.takewhile, module=itertools, line:0 at

takewhile(predicate, iterable) -> takewhile object
返回可迭代对象的连续条目,只要谓词对每个条目的计算结果为true。

🌿9 urllib3.exceptions.ConnectTimeoutError

ConnectTimeoutError, urllib3.exceptions.ConnectTimeoutError, module=urllib3.exceptions, line:128 at site-packages\urllib3\exceptions.py

当连接到服务器时出现套接字超时时引发

🌿10 urllib3.exceptions.InvalidHeader

InvalidHeader, urllib3.exceptions.InvalidHeader, module=urllib3.exceptions, line:280 at site-packages\urllib3\exceptions.py

所提供的标头不知何故无效。

🌿11 urllib3.exceptions.MaxRetryError

MaxRetryError, urllib3.exceptions.MaxRetryError, module=urllib3.exceptions, line:77 at site-packages\urllib3\exceptions.py

当超过重试的最大次数时引发。
    :param pool: 连接池
    :type pool: :class:`~urllib3.connectionpool.HTTPConnectionPool`
    :param string url: 请求 Url
    :param exceptions.Exception reason: 底层错误

🌿12 urllib3.exceptions.ProtocolError

ProtocolError, urllib3.exceptions.ProtocolError, module=urllib3.exceptions, line:64 at site-packages\urllib3\exceptions.py

在请求/响应过程中发生意外时引发。

🌿13 urllib3.exceptions.ProxyError

ProxyError, urllib3.exceptions.ProxyError, module=urllib3.exceptions, line:50 at site-packages\urllib3\exceptions.py

当与代理的连接失败时引发。

🌿14 urllib3.exceptions.ReadTimeoutError

ReadTimeoutError, urllib3.exceptions.ReadTimeoutError, module=urllib3.exceptions, line:120 at site-packages\urllib3\exceptions.py

当从服务器接收数据时发生套接字超时时引发

🌿15 urllib3.exceptions.ResponseError

ResponseError, urllib3.exceptions.ResponseError, module=urllib3.exceptions, line:178 at site-packages\urllib3\exceptions.py

用作MaxRetryError中提供的错误原因的容器。
data

1 GENERIC_ERROR=too many error responses kind:data type:str class:<class ‘urllib3.exceptions.ResponseError’>
2 SPECIFIC_ERROR=too many {status_code} error responses kind:data type:str class:<class ‘urllib3.exceptions.ResponseError’>

🌿16 urllib3.util.retry.RequestHistory

RequestHistory, urllib3.util.retry.RequestHistory, module=urllib3.util.retry, line:-1 at site-packages\urllib3\util\retry.py

RequestHistory(method, url, error, status, redirect_location)
property

1 error=<property object at 0x00000252E8409C78> kind:property type:property class:<class ‘urllib3.util.retry.RequestHistory’>
2 method=<property object at 0x00000252E8409BD8> kind:property type:property class:<class ‘urllib3.util.retry.RequestHistory’>
3 redirect_location=<property object at 0x00000252E8409D18> kind:property type:property class:<class ‘urllib3.util.retry.RequestHistory’>
4 status=<property object at 0x00000252E8409CC8> kind:property type:property class:<class ‘urllib3.util.retry.RequestHistory’>
5 url=<property object at 0x00000252E8409C28> kind:property type:property class:<class ‘urllib3.util.retry.RequestHistory’>

🌿17 urllib3.util.retry._RetryMeta

_RetryMeta, urllib3.util.retry._RetryMeta, module=urllib3.util.retry, line:35 at site-packages\urllib3\util\retry.py

property

1 BACKOFF_MAX=<property object at 0x00000252E8409EF8> kind:property type:property class:<class ‘urllib3.util.retry._RetryMeta’>
2 DEFAULT_METHOD_WHITELIST=<property object at 0x00000252E8409E58> kind:property type:property class:<class ‘urllib3.util.retry._RetryMeta’>
3 DEFAULT_REDIRECT_HEADERS_BLACKLIST=<property object at 0x00000252E8409EA8> kind:property type:property class:<class ‘urllib3.util.retry._RetryMeta’>

🌿18 urllib3.util.retry.Retry

Retry, urllib3.util.retry.Retry, module=urllib3.util.retry, line:92 at site-packages\urllib3\util\retry.py

🔵私有或局部

18 _Default <object object at 0x00000252E83533C0>
19 _RetryMeta <class ‘urllib3.util.retry._RetryMeta’>

🔵剩余

20 doc
21 loader <_frozen_importlib_external.SourceFileLoader object at 0x00000252E8401508>
22 spec ModuleSpec(name=‘urllib3.util.retry’, loader=<_frozen_importlib_external.SourceFileLoader object at 0x00000252E8401508>, origin=‘…\lib\site-packages\urllib3\util\retry.py’)
23 absolute_import _Feature((2, 5, 0, ‘alpha’, 1), (3, 0, 0, ‘alpha’, 0), 16384)
24 log <Logger urllib3.util.retry (WARNING)>
25 _Default <object object at 0x00000252E83533C0>

☘️【urllib3.util.url】

url, fullname=urllib3.util.url, file=urllib3\util\url.py

🔵统计

序号类别数量
4str13
5tuple1
6list2
7set6
8dict2
9module2
10class2
11function9
13residual14
14system8
15private9
16all51

🔵常量

🌿str

1 IPV4_PAT (?:[0-9]{1,3}.){3}[0-9]{1,3}
2 HEX_PAT [0-9A-Fa-f]{1,4}
3 LS32_PAT (?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}.){3}[0-9]{1,3})
4 UNRESERVED_PAT ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.-~
5 IPV6_PAT (?😦?:[0-9A-Fa-f]{1,4}😃{6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}.){3}[0-9]{1,3})|:😦?:[0-9A-Fa-f]{1,4}😃{5…
6 ZONE_ID_PAT (?:%25|%)(?:[ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789.
-~]|%[a-fA-F0-9]{2})+
7 IPV6_ADDRZ_PAT [(?😦?:[0-9A-Fa-f]{1,4}😃{6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}.){3}[0-9]{1,3})|:😦?:[0-9A-Fa-f]{1,4}😃…
8 REG_NAME_PAT (?:[^[]%😕?#]|%[a-fA-F0-9]{2})*
9 _HOST_PORT_PAT ((?:[[]%😕?#]|%[a-fA-F0-9]{2})*|(?:[0-9]{1,3}.){3}[0-9]{1,3}|[(?😦?:[0-9A-Fa-f]{1,4}😃{6}(?:[0-9A-Fa-f]{1,4}:[0-9A…

🌿tuple

10 NORMALIZABLE_SCHEMES (‘http’, ‘https’, None)

🌿list

11 url_attrs [‘scheme’, ‘auth’, ‘host’, ‘port’, ‘path’, ‘query’, ‘fragment’]
12 _variations [‘(?:%(hex)s:){6}%(ls32)s’, ‘:😦?:%(hex)s:){5}%(ls32)s’, ‘(?:%(hex)s)?:😦?:%(hex)s:){4}%(ls32)s’, '(?😦?:%(hex)s:)?%(hex…

🌿set

13 UNRESERVED_CHARS {‘a’, ‘I’, ‘w’, ‘A’, ‘S’, ‘G’, ‘Z’, ‘n’, ‘t’, ‘O’, ‘o’, ‘U’, ‘h’, ‘m’, ‘K’, ‘s’, ‘v’, ‘4’, ‘9’, ‘F’, ‘u’, ‘3’, ‘c’, ‘H’,…
14 SUB_DELIM_CHARS {‘$’, ‘&’, ‘;’, ‘!’, ‘(’, ‘*’, ‘+’, “'”, ‘,’, ‘=’, ‘)’}
15 USERINFO_CHARS {‘a’, ‘I’, ‘w’, ‘A’, ‘S’, ‘G’, ‘Z’, ‘N’, ‘t’, ‘,’, ‘o’, ‘U’, ‘h’, ‘4’, ‘F’, ‘3’, ‘7’, ‘H’, ‘f’, ‘e’, ‘Y’, ‘W’, ‘-’, ‘)’,…
16 PATH_CHARS {‘a’, ‘I’, ‘w’, ‘A’, ‘S’, ‘G’, ‘Z’, ‘N’, ‘t’, ‘,’, ‘o’, ‘U’, ‘h’, ‘4’, ‘F’, ‘3’, ‘7’, ‘H’, ‘f’, ‘e’, ‘Y’, ‘W’, ‘-’, ‘)’,…
17 QUERY_CHARS {‘a’, ‘I’, ‘w’, ‘A’, ‘S’, ‘G’, ‘Z’, ‘N’, ‘t’, ‘,’, ‘o’, ‘U’, ‘h’, ‘4’, ‘F’, ‘3’, ‘7’, ‘H’, ‘f’, ‘e’, ‘Y’, ‘W’, ‘-’, ‘)’,…
18 FRAGMENT_CHARS {‘a’, ‘I’, ‘w’, ‘A’, ‘S’, ‘G’, ‘Z’, ‘N’, ‘t’, ‘,’, ‘o’, ‘U’, ‘h’, ‘4’, ‘F’, ‘3’, ‘7’, ‘H’, ‘f’, ‘e’, ‘Y’, ‘W’, ‘-’, ‘)’,…

🌿dict

19 _subs {‘hex’: ‘[0-9A-Fa-f]{1,4}’, ‘ls32’: ‘(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}.){3}[0-9]{1,3})’}

🔵模块

🌿20 re

re, fullname=re, file=re.py

🌿21 urllib3.packages.six

six, fullname=urllib3.packages.six, file=urllib3\packages\six.py

🔵函数

🌿22 namedtuple(typename, field_names, *, rename=False, defaults=None, module=None)

namedtuple(typename, field_names, *, rename=False, defaults=None, module=None), module=collections, line:316 at collections_init_.py

返回具有命名字段的元组的新子类。
    >>> Point = namedtuple('Point', ['x', 'y'])
    >>> Point.__doc__                   # docstring for the new class
    'Point(x, y)'
    >>> p = Point(11, y=22)             # instantiate with positional args or keywords
    >>> p[0] + p[1]                     # indexable like a plain tuple
    33
    >>> x, y = p                        # unpack like a regular tuple
    >>> x, y
    (11, 22)
    >>> p.x + p.y                       # fields also accessible by name
    33
    >>> d = p._asdict()                 # convert to a dictionary
    >>> d['x']
    11
    >>> Point(**d)                      # convert from a dictionary
    Point(x=11, y=22)
    >>> p._replace(x=100)               # _replace() is like str.replace() but targets named fields
    Point(x=100, y=22)

🌿23 split_first(s, delims)

split_first(s, delims), module=urllib3.util.url, line:175 at site-packages\urllib3\util\url.py

    弃用: 1.25
    给定一个字符串和一个可迭代的分隔符,在第一个找到的分隔符上分割。返回两个分割的部分和匹配的分隔符。
    如果没有找到,那么第一部分就是完整的输入字符串。
    例子:
        >>> split_first('foo/bar?baz', '?/=')
        ('foo', 'bar?baz', '/')
        >>> split_first('foo/bar?baz', '123')
        ('foo/bar?baz', '', None)
    与递进数成线性比例。对于大量delims来说不理想。

🌿24 _encode_invalid_chars(component, allowed_chars, encoding=‘utf-8’)

_encode_invalid_chars(component, allowed_chars, encoding=‘utf-8’), module=urllib3.util.url, line:210 at site-packages\urllib3\util\url.py

对URI组件进行百分比编码,而无需重新应用于已经进行百分比编码的组件。

🌿25 _remove_path_dot_segments(path)

_remove_path_dot_segments(path), module=urllib3.util.url, line:244 at site-packages\urllib3\util\url.py

🌿26 _normalize_host(host, scheme)

_normalize_host(host, scheme), module=urllib3.util.url, line:274 at site-packages\urllib3\util\url.py

🌿27 _idna_encode(name)

_idna_encode(name), module=urllib3.util.url, line:305 at site-packages\urllib3\util\url.py

🌿28 _encode_target(target)

_encode_target(target), module=urllib3.util.url, line:323 at site-packages\urllib3\util\url.py

对请求目标进行百分比编码,以便没有无效字符

🌿29 parse_url(url)

parse_url(url), module=urllib3.util.url, line:333 at site-packages\urllib3\util\url.py

给定一个url,返回一个解析过的:class:`.Url`命名元组。
    尽最大努力解析不完整的url。未提供的字段将为None。
    该解析器兼容RFC 3986和RFC 6874。
    解析器逻辑和辅助函数在很大程度上基于 ``rfc3986`` 模块中完成的工作。
    :param str url: URL解析为:class:`.Url` 命名元组。
    部分向后兼容:mod:`urlparse`。
    例子:
        >>> parse_url('http://google.com/mail/')
        Url(scheme='http', host='google.com', port=None, path='/mail/', ...)
        >>> parse_url('google.com:80')
        Url(scheme=None, host='google.com', port=80, path=None, ...)
        >>> parse_url('/foo?bar')
        Url(scheme=None, host=None, port=None, path='/foo', query='bar', ...)

🌿30 get_host(url)

get_host(url), module=urllib3.util.url, line:430 at site-packages\urllib3\util\url.py

弃用。使用:func:`parse_url`代替。

🔵类

🌿31 urllib3.exceptions.LocationParseError

LocationParseError, urllib3.exceptions.LocationParseError, module=urllib3.exceptions, line:158 at site-packages\urllib3\exceptions.py

当get_host或类似程序解析URL输入失败时引发。

🌿32 urllib3.util.url.Url

Url, urllib3.util.url.Url, module=urllib3.util.url, line:82 at site-packages\urllib3\util\url.py

表示HTTP URL的数据结构。用作:func:`parse_url`的返回值。
根据RFC 3986,模式和主机都是标准化的,因为它们都不区分大小写。
property

1 hostname=<property object at 0x00000252E8420B88> kind:property type:property class:<class ‘urllib3.util.url.Url’>
2 netloc=<property object at 0x00000252E8420CC8> kind:property type:property class:<class ‘urllib3.util.url.Url’>
3 request_uri=<property object at 0x00000252E8420C28> kind:property type:property class:<class ‘urllib3.util.url.Url’>
4 url=<property object at 0x00000252E8420278> kind:property type:property class:<class ‘urllib3.util.url.Url’>

🔵私有或局部

33 _subs {‘hex’: ‘[0-9A-Fa-f]{1,4}’, ‘ls32’: ‘(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}.){3}[0-9]{1,3})’}
34 _variations [‘(?:%(hex)s:){6}%(ls32)s’, ‘:😦?:%(hex)s:){5}%(ls32)s’, ‘(?:%(hex)s)?:😦?:%(hex)s:){4}%(ls32)s’, '(?😦?:%(hex)s:)?%(hex…
35 _HOST_PORT_PAT ((?:[[]%😕?#]|%[a-fA-F0-9]{2})|(?:[0-9]{1,3}.){3}[0-9]{1,3}|[(?😦?:[0-9A-Fa-f]{1,4}😃{6}(?:[0-9A-Fa-f]{1,4}:[0-9A…
36 _HOST_PORT_RE re.compile('((?:[[]%😕?#]|%[a-fA-F0-9]{2})
|(?:[0-9]{1,3}.){3}[0-9]{1,3}|[(?😦?:[0-9A-Fa-f]{1,4}😃{6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}.){3}[0-9]{1,3})|:😦?:[0-9A-Fa-f]{1,4}😃{5}(?:[0, re.DOTALL)
37 _encode_invalid_chars <function _encode_invalid_chars at 0x00000252E8317678>
38 _remove_path_dot_segments <function _remove_path_dot_segments at 0x00000252E83175E8>
39 _normalize_host <function _normalize_host at 0x00000252E8317558>
40 _idna_encode <function _idna_encode at 0x00000252E83174C8>
41 _encode_target <function _encode_target at 0x00000252E8317438>

🔵剩余

42 doc
43 loader <_frozen_importlib_external.SourceFileLoader object at 0x00000252E8417788>
44 spec ModuleSpec(name=‘urllib3.util.url’, loader=<_frozen_importlib_external.SourceFileLoader object at 0x00000252E8417788>, origin=‘…\lib\site-packages\urllib3\util\url.py’)
45 absolute_import _Feature((2, 5, 0, ‘alpha’, 1), (3, 0, 0, ‘alpha’, 0), 16384)
46 PERCENT_RE re.compile(‘%[a-fA-F0-9]{2}’)
47 SCHEME_RE re.compile(‘^(?:[a-zA-Z][a-zA-Z0-9±]😐/)‘)
48 URI_RE re.compile(’(?😦[a-zA-Z][a-zA-Z0-9+.-]*)😃?(?😕/([\/?#]
))?([?#]*)(?:?([#]))?(?:#(.))?KaTeX parse error: Expected 'EOF', got '#' at position 46: …compile('^(/[^?#̲]*)(?:\?([^#]*)…’)
50 IPV4_RE re.compile(‘^(?:[0-9]{1,3}.){3}[0-9]{1,3}KaTeX parse error: Undefined control sequence: \[ at position 256: …E re.compile('^\̲[̲(?:(?:[0-9A-Fa-…’)
55 _HOST_PORT_RE re.compile('((?:[[]%😕?#]|%[a-fA-F0-9]{2})*|(?:[0-9]{1,3}.){3}[0-9]{1,3}|[(?😦?:[0-9A-Fa-f]{1,4}😃{6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}.){3}[0-9]{1,3})|:😦?:[0-9A-Fa-f]{1,4}😃{5}(?:[0, re.DOTALL)

☘️【urllib3.util.ssltransport】

ssltransport, fullname=urllib3.util.ssltransport, file=urllib3\util\ssltransport.py

🔵统计

序号类别数量
1int1
4str4
8dict1
9module4
10class2
13residual3
14system8
16all15

🔵常量

🌿int

1 SSL_BLOCKSIZE 16384

🔵模块

🌿2 io

io, fullname=io, file=io.py

🌿3 socket

socket, fullname=socket, file=socket.py

🌿4 ssl

ssl, fullname=ssl, file=ssl.py

🌿5 urllib3.packages.six

six, fullname=urllib3.packages.six, file=urllib3\packages\six.py

🔵类

🌿6 urllib3.exceptions.ProxySchemeUnsupported

ProxySchemeUnsupported, urllib3.exceptions.ProxySchemeUnsupported, module=urllib3.exceptions, line:306 at site-packages\urllib3\exceptions.py

不支持通过HTTPS代理获取HTTPS资源

🌿7 urllib3.util.ssltransport.SSLTransport

SSLTransport, urllib3.util.ssltransport.SSLTransport, module=urllib3.util.ssltransport, line:11 at site-packages\urllib3\util\ssltransport.py

SSLTransport封装现有套接字并建立SSL连接。
    与Python的SSLSocket实现相反,它允许您将多个TLS连接链接在一起。
    如果您需要在TLS中实现TLS,那么它特别有用。该类支持大多数套接字API操作。
method
1 cipher(self)

kind=method class=SSLTransport objtype=function line:162 at …\lib\site-packages\urllib3\util\ssltransport.py

2 close(self)

kind=method class=SSLTransport objtype=function line:153 at …\lib\site-packages\urllib3\util\ssltransport.py

3 compression(self)

kind=method class=SSLTransport objtype=function line:174 at …\lib\site-packages\urllib3\util\ssltransport.py

4 fileno(self)

kind=method class=SSLTransport objtype=function line:69 at …\lib\site-packages\urllib3\util\ssltransport.py

5 getpeercert(self, binary_form=False)

kind=method class=SSLTransport objtype=function line:156 at …\lib\site-packages\urllib3\util\ssltransport.py

6 gettimeout(self)

kind=method class=SSLTransport objtype=function line:180 at …\lib\site-packages\urllib3\util\ssltransport.py

7 makefile(

kind=method class=SSLTransport objtype=function line:105 at …\lib\site-packages\urllib3\util\ssltransport.py

Python的httpclient在读取HTTP消息时使用makefile和buffered io,我们需要支持它。
不幸的是,这是对socket.py makefile的复制和粘贴,只做了一些小的修改,直接指向套接字。
8 read(self, len=1024, buffer=None)

kind=method class=SSLTransport objtype=function line:72 at …\lib\site-packages\urllib3\util\ssltransport.py

9 recv(self, len=1024, flags=0)

kind=method class=SSLTransport objtype=function line:75 at …\lib\site-packages\urllib3\util\ssltransport.py

10 recv_into(self, buffer, nbytes=None, flags=0)

kind=method class=SSLTransport objtype=function line:80 at …\lib\site-packages\urllib3\util\ssltransport.py

11 selected_alpn_protocol(self)

kind=method class=SSLTransport objtype=function line:165 at …\lib\site-packages\urllib3\util\ssltransport.py

12 selected_npn_protocol(self)

kind=method class=SSLTransport objtype=function line:168 at …\lib\site-packages\urllib3\util\ssltransport.py

13 send(self, data, flags=0)

kind=method class=SSLTransport objtype=function line:99 at …\lib\site-packages\urllib3\util\ssltransport.py

14 sendall(self, data, flags=0)

kind=method class=SSLTransport objtype=function line:89 at …\lib\site-packages\urllib3\util\ssltransport.py

15 settimeout(self, value)

kind=method class=SSLTransport objtype=function line:177 at …\lib\site-packages\urllib3\util\ssltransport.py

16 shared_ciphers(self)

kind=method class=SSLTransport objtype=function line:171 at …\lib\site-packages\urllib3\util\ssltransport.py

17 unwrap(self)

kind=method class=SSLTransport objtype=function line:150 at …\lib\site-packages\urllib3\util\ssltransport.py

18 version(self)

kind=method class=SSLTransport objtype=function line:159 at …\lib\site-packages\urllib3\util\ssltransport.py

☘️【urllib3.util.ssl_】

ssl_, fullname=urllib3.util.ssl_, file=urllib3\util\ssl_.py

🔵统计

序号类别数量
2bool3
4str5
6list1
8dict2
9module6
10class6
11function10
12builtin_function_or_method6
13residual14
14system8
15private4
16all53

🔵常量

🌿bool

1 HAS_SNI True
2 IS_PYOPENSSL False
3 IS_SECURETRANSPORT False

🌿str

4 DEFAULT_CIPHERS ECDHE+AESGCM:ECDHE+CHACHA20:DHE+AESGCM:DHE+CHACHA20:ECDH+AESGCM:DH+AESGCM:ECDH+AES:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!eNU…

🌿list

5 ALPN_PROTOCOLS [‘http/1.1’]

🌿dict

6 HASHFUNC_MAP {32: , 40: , 64: }

🔵模块

🌿7 hmac

hmac, fullname=hmac, file=hmac.py

🌿8 os

os, fullname=os, file=os.py

🌿9 sys

sys, fullname=sys

🌿10 warnings

warnings, fullname=warnings, file=warnings.py

🌿11 urllib3.packages.six

six, fullname=urllib3.packages.six, file=urllib3\packages\six.py

🌿12 ssl

ssl, fullname=ssl, file=ssl.py

🔵函数

🌿13 _const_compare_digest_backport(a, b)

const_compare_digest_backport(a, b), module=urllib3.util.ssl, line:30 at site-packages\urllib3\util\ssl_.py

比较常数时间内长度相等的两个摘要。
    摘要类型必须为str/bytes。
    如果摘要匹配返回True,否则返回False。

🌿14 wrap_socket(sock, keyfile=None, certfile=None, server_side=False, cert_reqs=<VerifyMode.CERT_NONE: 0>, ssl_version=<_SSLMethod.PROTOCOL_TLS: 2>, ca_certs=None, do_handshake_on_connect=True, suppress_ragged_eofs=True, ciphers=None)

wrap_socket(sock, keyfile=None, certfile=None, server_side=False, cert_reqs=<VerifyMode.CERT_NONE: 0>, ssl_version=<_SSLMethod.PROTOCOL_TLS: 2>, ca_certs=None, do_handshake_on_connect=True, suppress_ragged_eofs=True, ciphers=None), module=ssl, line:1215 at ssl.py

🌿15 assert_fingerprint(cert, fingerprint)

assert_fingerprint(cert, fingerprint), module=urllib3.util.ssl_, line:182 at site-packages\urllib3\util\ssl_.py

检查给定的指纹是否与提供的证书匹配。
    :param cert:        证书为字节对象。
    :param fingerprint: 指纹为十六进制字符串,可以用冒号隔开。

🌿16 resolve_cert_reqs(candidate)

resolve_cert_reqs(candidate), module=urllib3.util.ssl_, line:211 at site-packages\urllib3\util\ssl_.py

将参数解析为一个数字常量,该常量可以从ssl模块传递给wrap套接字函数/方法。
默认为 :data:`ssl.CERT_REQUIRED`。
如果给定一个字符串,则假定它是:mod:`ssl`模块中常量的名称或其缩写。
(因此您可以指定“REQUIRED”而不是“CERT_REQUIRED”。
如果它既不是`None`也不是字符串,我们假设它已经是可以直接传递给wrap套接字的数字常量。

🌿17 resolve_ssl_version(candidate)

resolve_ssl_version(candidate), module=urllib3.util.ssl_, line:234 at site-packages\urllib3\util\ssl_.py

比如解析证书请求

🌿18 create_urllib3_context(ssl_version=None, cert_reqs=None, options=None, ciphers=None)

create_urllib3_context(ssl_version=None, cert_reqs=None, options=None, ciphers=None), module=urllib3.util.ssl_, line:250 at site-packages\urllib3\util\ssl_.py

所有参数的含义都与 ``ssl_wrap_socket``相同。
    默认情况下,这个函数做了很多与在Python 3.4+上r ``ssl.create_default_context`` 相同的工作。它:
        —禁用SSLv2、SSLv3和压缩
        —设置一组受限制的服务器密码
    如果您希望启用SSLv3,您可以:
        from urllib3.util import ssl_
        context = ssl_.create_urllib3_context()
        context.options &= ~ssl_.OP_NO_SSLv3
    你可以做同样的事情来启用压缩(替换 ``COMPRESSION`` 对于上面最后一行中的 `SSLv3` )。
    :param ssl_version:     需要使用的协议版本。这将默认为PROTOCOL_SSLv23,它将协商服务器和您的OpenSSL安装支持的最高协议。
    :param cert_reqs:       是否需要证书验证。默认为“``ssl.CERT_REQUIRED``。
    :param options:         指定的OpenSSL选项。这些默认为``ssl.OP_NO_SSLv2``, ``ssl.OP_NO_SSLv3``, ``ssl.OP_NO_COMPRESSION`` 和 ``ssl.OP_NO_TICKET``。
    :param ciphers:         允许服务器选择的密码套件。
    :返回:                   构造的带有指定选项的SSLContext对象
    :rtype:                 SSLContext

🌿19 ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None, ca_certs=None, server_hostname=None, ssl_version=None, ciphers=None, ssl_context=None, ca_cert_dir=None, key_password=None, ca_cert_data=None, tls_in_tls=False)

ssl_wrap_socket(sock, keyfile=None, certfile=None, cert_reqs=None, ca_certs=None, server_hostname=None, ssl_version=None, ciphers=None, ssl_context=None, ca_cert_dir=None, key_password=None, ca_cert_data=None, tls_in_tls=False), module=urllib3.util.ssl_, line:355 at site-packages\urllib3\util\ssl_.py

除了 server_hostname, ssl_context, 和 ca_cert_dir 之外,所有参数的含义都与使用 :func:`ssl.wrap_socket`。
    :param server_hostname:     当支持SNI时,证书的预期主机名
    :param ssl_context:         一个预制的:class:`SSLContext`对象。如果没有提供,将使用:func:`create_urllib3_context '创建一个。
    :param ciphers:             我们希望客户端支持的一串密码。
    :param ca_cert_dir:         一个包含多个独立文件中的CA证书的目录,由OpenSSL的-CApath标志或 SSLContext.load_verify_locations(). 的capath参数支持。
    :param key password:        加密时可选密码。
    :param ca_cert_data:        可选字符串,包含PEM格式的ca证书,适合作为数据参数传递给SSLContext.load_verify_locations()。
    :param tls_in_tls:          使用SSLTransport封装现有套接字。

🌿20 is_ipaddress(hostname)

is_ipaddress(hostname), module=urllib3.util.ssl_, line:457 at site-packages\urllib3\util\ssl_.py

检测给定的主机名是IPv4还是IPv6地址。
    也检测带有安全区域id的IPv6地址。
    :param str hostname: 要检查的主机名。
    :return: 如果主机名是IP地址,则为True,否则为False。

🌿21 _is_key_file_encrypted(key_file)

is_key_file_encrypted(key_file), module=urllib3.util.ssl, line:470 at site-packages\urllib3\util\ssl_.py

检测密钥文件是否加密。

🌿22 _ssl_wrap_socket_impl(sock, ssl_context, tls_in_tls, server_hostname=None)

ssl_wrap_socket_impl(sock, ssl_context, tls_in_tls, server_hostname=None), module=urllib3.util.ssl, line:481 at site-packages\urllib3\util\ssl_.py

🔵类

🌿23 urllib3.exceptions.InsecurePlatformWarning

InsecurePlatformWarning, urllib3.exceptions.InsecurePlatformWarning, module=urllib3.exceptions, line:209 at site-packages\urllib3\exceptions.py

当某些TLS/SSL配置在平台上不可用时发出警告。

🌿24 urllib3.exceptions.ProxySchemeUnsupported

ProxySchemeUnsupported, urllib3.exceptions.ProxySchemeUnsupported, module=urllib3.exceptions, line:306 at site-packages\urllib3\exceptions.py

🌿24 urllib3.exceptions.SNIMissingWarning

SNIMissingWarning, urllib3.exceptions.SNIMissingWarning, module=urllib3.exceptions, line:215 at site-packages\urllib3\exceptions.py

发出没有SNI可用的HTTPS请求时发出警告。

🌿25 urllib3.exceptions.SSLError

SSLError, urllib3.exceptions.SSLError, module=urllib3.exceptions, line:44 at site-packages\urllib3\exceptions.py

当SSL证书在HTTPS连接中失败时引发。

🌿26 ssl.SSLContext

SSLContext, ssl.SSLContext, module=ssl, line:0 at

SSLContext保存各种与ssl相关的配置选项和数据,例如证书和可能的私钥。
data

1 sslobject_class=<class ‘ssl.SSLObject’> kind:data type:type class:<class ‘ssl.SSLContext’>
2 sslsocket_class=<class ‘ssl.SSLSocket’> kind:data type:type class:<class ‘ssl.SSLContext’>

property

3 hostname_checks_common_name=<property object at 0x00000252E83CF6D8> kind:property type:property class:<class ‘ssl.SSLContext’>
4 maximum_version=<property object at 0x00000252E83CF638> kind:property type:property class:<class ‘ssl.SSLContext’>
5 minimum_version=<property object at 0x00000252E83CF5E8> kind:property type:property class:<class ‘ssl.SSLContext’>
6 options=<property object at 0x00000252E83CF688> kind:property type:property class:<class ‘ssl.SSLContext’>
7 protocol=<property object at 0x00000252E83CF598> kind:property type:property class:<class ‘ssl.SSLContext’>
8 verify_flags=<property object at 0x00000252E83CF778> kind:property type:property class:<class ‘ssl.SSLContext’>
9 verify_mode=<property object at 0x00000252E83CF7C8> kind:property type:property class:<class ‘ssl.SSLContext’>

method
10 load_default_certs(self, purpose=Purpose.SERVER_AUTH)

kind=method class=SSLContext objtype=function line:485 at …\ssl.py

11 set_alpn_protocols(self, alpn_protocols)

kind=method class=SSLContext objtype=function line:460 at …\ssl.py

12 set_npn_protocols(self, npn_protocols)

kind=method class=SSLContext objtype=function line:436 at …\ssl.py

13 set_servername_callback(self, server_name_callback)

kind=method class=SSLContext objtype=function line:447 at …\ssl.py

14 wrap_bio(self, incoming, outgoing, server_side=False,

kind=method class=SSLContext objtype=function line:426 at …\ssl.py

15 wrap_socket(self, sock, server_side=False,

kind=method class=SSLContext objtype=function line:410 at …\ssl.py

🌿27 urllib3.util.ssltransport.SSLTransport

SSLTransport, urllib3.util.ssltransport.SSLTransport, module=urllib3.util.ssltransport, line:11 at site-packages\urllib3\util\ssltransport.py

🔵内嵌函数或方法

27 hexlify
28 unhexlify
29 md5
30 sha1
31 sha256
32 _const_compare_digest

🔵私有或局部

33 _const_compare_digest_backport <function _const_compare_digest_backport at 0x00000252E8403E58>
34 _const_compare_digest
35 _is_key_file_encrypted <function _is_key_file_encrypted at 0x00000252E841FA68>
36 _ssl_wrap_socket_impl <function _ssl_wrap_socket_impl at 0x00000252E841FAF8>

🔵剩余

37 doc
38 loader <frozen_importlib_external.SourceFileLoader object at 0x00000252E840A308>
39 spec ModuleSpec(name='urllib3.util.ssl
’, loader=<frozen_importlib_external.SourceFileLoader object at 0x00000252E840A308>, origin='…\lib\site-packages\urllib3\util\ssl.py’)
40 absolute_import _Feature((2, 5, 0, ‘alpha’, 1), (3, 0, 0, ‘alpha’, 0), 16384)
41 BRACELESS_IPV6_ADDRZ_RE re.compile(‘^(?😦?:[0-9A-Fa-f]{1,4}😃{6}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}.){3}[0-9]{1,3})|:😦?:[0-9A-Fa-f]{1,4}😃{5}(?:[0-9A-Fa-f]{1,4}:[0-9A-Fa-f]{1,4}|(?:[0-9]{1,3}.){3}[0-9]{1,3})|(?:[0-9)
42 IPV4_RE re.compile(’^(?:[0-9]{1,3}.){3}[0-9]{1,3}$')
43 CERT_REQUIRED 2
44 PROTOCOL_TLS 2
45 PROTOCOL_SSLv23 2
46 PROTOCOL_TLS_CLIENT 16
47 OP_NO_COMPRESSION 131072
48 OP_NO_SSLv2 0
49 OP_NO_SSLv3 33554432
50 OP_NO_TICKET 16384

☘️【urllib3.util.timeout】

timeout, fullname=urllib3.util.timeout, file=urllib3\util\timeout.py

🔵统计

序号类别数量
4str4
8dict1
9module1
10class2
12builtin_function_or_method2
13residual6
14system8
15private2
16all16

🔵模块

🌿1 time

time, fullname=time

🔵类

🌿2 urllib3.exceptions.TimeoutStateError

TimeoutStateError, urllib3.exceptions.TimeoutStateError, module=urllib3.exceptions, line:104 at site-packages\urllib3\exceptions.py

将无效状态传递给超时时引发

🌿3 urllib3.util.timeout.Timeout

Timeout, urllib3.util.timeout.Timeout, module=urllib3.util.timeout, line:19 at site-packages\urllib3\util\timeout.py

🔵内嵌函数或方法

3 getdefaulttimeout
4 current_time

🔵私有或局部

5 _GLOBAL_DEFAULT_TIMEOUT <object object at 0x00000252E6007FD0>
6 _Default <object object at 0x00000252E83534D0>

🔵剩余

7 doc
8 loader <_frozen_importlib_external.SourceFileLoader object at 0x00000252E840A508>
9 spec ModuleSpec(name=‘urllib3.util.timeout’, loader=<_frozen_importlib_external.SourceFileLoader object at 0x00000252E840A508>, origin=‘…\lib\site-packages\urllib3\util\timeout.py’)
10 absolute_import _Feature((2, 5, 0, ‘alpha’, 1), (3, 0, 0, ‘alpha’, 0), 16384)
11 _GLOBAL_DEFAULT_TIMEOUT <object object at 0x00000252E6007FD0>
12 _Default <object object at 0x00000252E83534D0>

☘️【urllib3.util.proxy】

proxy, fullname=urllib3.util.proxy, file=urllib3\util\proxy.py

🔵统计

序号类别数量
4str4
8dict1
11function5
13residual3
14system8
16all13

🔵函数

🌿1 create_urllib3_context(ssl_version=None, cert_reqs=None, options=None, ciphers=None)

create_urllib3_context(ssl_version=None, cert_reqs=None, options=None, ciphers=None), module=urllib3.util.ssl_, line:250 at site-packages\urllib3\util\ssl_.py

所有参数的含义都与 ``ssl_wrap_socket``相同。
    默认情况下,这个函数做了很多与在Python 3.4+上r ``ssl.create_default_context`` 相同的工作。它:
        —禁用SSLv2、SSLv3和压缩
        —设置一组受限制的服务器密码
    如果您希望启用SSLv3,您可以:
        from urllib3.util import ssl_
        context = ssl_.create_urllib3_context()
        context.options &= ~ssl_.OP_NO_SSLv3
    你可以做同样的事情来启用压缩(替换 ``COMPRESSION`` 对于上面最后一行中的 `SSLv3` )。
    :param ssl_version:     需要使用的协议版本。这将默认为PROTOCOL_SSLv23,它将协商服务器和您的OpenSSL安装支持的最高协议。
    :param cert_reqs:       是否需要证书验证。默认为“``ssl.CERT_REQUIRED``。
    :param options:         指定的OpenSSL选项。这些默认为``ssl.OP_NO_SSLv2``, ``ssl.OP_NO_SSLv3``, ``ssl.OP_NO_COMPRESSION`` 和 ``ssl.OP_NO_TICKET``。
    :param ciphers:         允许服务器选择的密码套件。
    :返回:                   构造的带有指定选项的SSLContext对象
    :rtype:                 SSLContext

🌿2 resolve_cert_reqs(candidate)

resolve_cert_reqs(candidate), module=urllib3.util.ssl_, line:211 at site-packages\urllib3\util\ssl_.py

将参数解析为一个数字常量,该常量可以从ssl模块传递给wrap套接字函数/方法。
    默认为 :data:`ssl.CERT_REQUIRED`。
    如果给定一个字符串,则假定它是:mod:`ssl`模块中常量的名称或其缩写。
    (因此您可以指定“REQUIRED”而不是“CERT_REQUIRED”。
    如果它既不是`None`也不是字符串,我们假设它已经是可以直接传递给wrap套接字的数字常量。

🌿3 resolve_ssl_version(candidate)

resolve_ssl_version(candidate), module=urllib3.util.ssl_, line:234 at site-packages\urllib3\util\ssl_.py

比如解析证书请求 resolve_cert_reqs

🌿4 connection_requires_http_tunnel(proxy_url=None, proxy_config=None, destination_scheme=None)

connection_requires_http_tunnel(proxy_url=None, proxy_config=None, destination_scheme=None), module=urllib3.util.proxy, line:4 at site-packages\urllib3\util\proxy.py

如果连接需要通过代理进行HTTP CONNECT,则返回True。
    :param URL proxy_url:               代理的URL。
    :param ProxyConfig proxy_config:    来自poolmanager.py的代理配置
    :param str destination_scheme:      目的地的方案。(即https, http等)

🌿5 create_proxy_ssl_context(ssl_version, cert_reqs, ca_certs=None, ca_cert_dir=None, ca_cert_data=None)

create_proxy_ssl_context(ssl_version, cert_reqs, ca_certs=None, ca_cert_dir=None, ca_cert_data=None), module=urllib3.util.proxy, line:37 at site-packages\urllib3\util\proxy.py

如果用户没有提供代理ssl上下文,则生成默认代理ssl上下文。

☘️【urllib3.util.ssl_match_hostname】

ssl_match_hostname, fullname=urllib3.util.ssl_match_hostname, file=urllib3\util\ssl_match_hostname.py

Python 3.3.3中的match_hostname()函数,在使用SSL时必不可少。

🔵统计

序号类别数量
4str6
8dict1
9module3
10class1
11function4
13residual2
14system9
15private3
16all17

🔵常量

🔵模块

🌿1 re

re, fullname=re, file=re.py

🌿2 sys

sys, fullname=sys

🌿3 ipaddress

ipaddress, fullname=ipaddress, file=ipaddress.py

🔵函数

🌿4 _dnsname_match(dn, hostname, max_wildcards=1)

_dnsname_match(dn, hostname, max_wildcards=1), module=urllib3.util.ssl_match_hostname, line:25 at site-packages\urllib3\util\ssl_match_hostname.py

根据 RFC 6125, 6.4.3节来匹配。[参见:](http://tools.ietf.org/html/rfc6125#section-6.4.3)

🌿5 _to_unicode(obj)

_to_unicode(obj), module=urllib3.util.ssl_match_hostname, line:79 at site-packages\urllib3\util\ssl_match_hostname.py

🌿6 _ipaddress_match(ipname, host_ip)

_ipaddress_match(ipname, host_ip), module=urllib3.util.ssl_match_hostname, line:86 at site-packages\urllib3\util\ssl_match_hostname.py

精确匹配IP地址。RFC 6125明确地没有为此定义一个算法(章节1.7.2 -“超出范围”)。

🌿7 match_hostname(cert, hostname)

match_hostname(cert, hostname), module=urllib3.util.ssl_match_hostname, line:98 at site-packages\urllib3\util\ssl_match_hostname.py

验证*cert*(由SSLSocket.getpeercert()返回的解码格式)是否与 *hostname* 匹配。
遵循 RFC 2818 和 RFC 6125 规则,但是IP地址不接受*hostname*。
失败时引发CertificateError。
如果成功,该函数将不返回任何内容。

🔵类

🌿8 urllib3.util.ssl_match_hostname.CertificateError

CertificateError, urllib3.util.ssl_match_hostname.CertificateError, module=urllib3.util.ssl_match_hostname, line:21 at site-packages\urllib3\util\ssl_match_hostname.py

🔵私有或局部

9 _dnsname_match <function _dnsname_match at 0x00000252E8434708>
10 _to_unicode <function _to_unicode at 0x00000252E843A048>
11 _ipaddress_match <function _ipaddress_match at 0x00000252E843A0D8>

☘️【urllib3.util.queue】

queue, fullname=urllib3.util.queue, file=urllib3\util\queue.py

☘️【urllib3.packages】

packages, fullname=urllib3.packages, file=urllib3\packages_init_.py

☘️【urllib3.exceptions】

exceptions, fullname=urllib3.exceptions, file=urllib3\exceptions.py

☘️【urllib3._version】

_version, fullname=urllib3._version, file=urllib3_version.py

☘️【urllib3.contrib】

contrib, fullname=urllib3.contrib, file=urllib3\contrib_init_.py

☘️【urllib3.util】

util, fullname=urllib3.util, file=urllib3\util_init_.py

☘️【urllib3._collections】

_collections, fullname=urllib3._collections, file=urllib3_collections.py

☘️【urllib3.connection】

connection, fullname=urllib3.connection, file=urllib3\connection.py

☘️【urllib3.fields】

fields, fullname=urllib3.fields, file=urllib3\fields.py

☘️【urllib3.filepost】

filepost, fullname=urllib3.filepost, file=urllib3\filepost.py

☘️【urllib3.request】

request, fullname=urllib3.request, file=urllib3\request.py

☘️【urllib3.response】

response, fullname=urllib3.response, file=urllib3\response.py

☘️【urllib3.connectionpool】

connectionpool, fullname=urllib3.connectionpool, file=urllib3\connectionpool.py

☘️【urllib3.poolmanager】

poolmanager, fullname=urllib3.poolmanager, file=urllib3\poolmanager.py

☘️【urllib3.packages.six】

six, fullname=urllib3.packages.six, file=urllib3\packages\six.py

☘️【urllib3.contrib.socks】

socks, fullname=urllib3.contrib.socks, file=urllib3\contrib\socks.py

☘️【urllib3.util.connection】

connection, fullname=urllib3.util.connection, file=urllib3\util\connection.py

☘️【urllib3.util.request】

request, fullname=urllib3.util.request, file=urllib3\util\request.py

☘️【urllib3.util.response】

response, fullname=urllib3.util.response, file=urllib3\util\response.py

☘️【datetime】

datetime, fullname=datetime, file=datetime.py

☘️【os】

os, fullname=os, file=os.py

☘️【re】

re, fullname=re, file=re.py

☘️【socket】

socket, fullname=socket, file=socket.py

☘️【ssl】

ssl, fullname=ssl, file=ssl.py

☘️【email】

email, fullname=email, file=email_init_.py

☘️【mimetypes】

mimetypes, fullname=mimetypes, file=mimetypes.py

☘️【binascii】

binascii, fullname=binascii

☘️【codecs】

codecs, fullname=codecs, file=codecs.py

☘️【io】

io, fullname=io, file=io.py

☘️【sys】

sys, fullname=sys

☘️【zlib】

zlib, fullname=zlib

☘️【errno】

errno, fullname=errno

☘️【queue】

queue, fullname=queue, file=queue.py

☘️【collections】

collections, fullname=collections, file=collections_init_.py

☘️【functools】

functools, fullname=functools, file=functools.py

☘️【itertools】

itertools, fullname=itertools

☘️【operator】

operator, fullname=operator, file=operator.py

☘️【types】

types, fullname=types, file=types.py

☘️【socks】

socks, fullname=socks, file=socks.py

☘️【select】

select, fullname=select, file=select.pyd

☘️【http.client】

client, fullname=http.client, file=http\client.py

HTTP/1.1客户端库

☘️【logging】

logging, fullname=logging, file=logging_init_.py

☘️【warnings】

warnings, fullname=warnings, file=warnings.py

☘️【time】

time, fullname=time

☘️【hmac】

hmac, fullname=hmac, file=hmac.py

☘️【ipaddress】

ipaddress, fullname=ipaddress, file=ipaddress.py

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AhcaoZhu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值