在支持MITM防火墙的OS下工作的HTTP库
项目描述
企业网络的HTTP辅助库
概述
sema4ai_http
-库提供在企业网络中使用MITM防火墙/代理进行出站流量时的HTTPS请求处理。
问题
- 现代防火墙需要跟踪出站流量以检测恶意软件
- 为了跟踪流量,SSL/TLS需要在防火墙/代理上终止
- 这意味着内部网络HTTPS需要单独的证书才能正常工作
- 这些证书通常使用操作系统特定的证书存储进行分发
- 像
requests
、urllib3
、aiohttp
等库尚未原生支持证书存储
👉 在企业网络中,未设置正确SSL上下文的HTTPS请求将失败,而且很难设置正确。
解决方案
每个出站HTTPS请求都需要正确的SSL上下文,但95%的HTTPS代码只是下载文件和简单的GET / POST调用,所以我们提供了一个辅助库。
我们使用truststore -库来访问证书存储,并使用urllib3
以避免额外的依赖。
该库的关键特性包括
- 使用操作系统证书存储创建SSL上下文,并提供可选的SSL遗产重协商支持。 - 要使用SSL上下文与其他库,请参阅truststore用户指南
- 使用
urllib3
的HTTPS请求方法(GET
、POST
、PUT
、PATCH
、DELETE
) - 支持断点续传的文件下载,带有重试逻辑和错误处理。
- 支持将下载的文件设置为可执行。
使用示例
from pathlib import Path
from sema4ai_http import download_with_resume
url = "https://example.com/file.zip"
target = Path("/path/to/save/file.zip")
result = download_with_resume(url, target)
print(f"Download status: {result.status}")
print(f"File saved to: {result.path}")
文档
函数
1. HTTPS 请求函数
这些函数处理不同的 HTTPS 请求方法,并从 urllib3
返回响应
get(url, **kwargs)
:发送 GET 请求。post(url, **kwargs)
:发送 POST 请求。put(url, **kwargs)
:发送 PUT 请求。patch(url, **kwargs)
:发送 PATCH 请求。delete(url, **kwargs)
:发送 DELETE 请求。
2. 构建 SSL 上下文
build_ssl_context(protocol: int = None, *, enable_legacy_server_connect: bool = False) -> ssl.SSLContext
**
此函数创建用于与 urllib3
请求一起使用的 SSL 上下文,该请求使用 truststore
库。它还支持启用 SSL 旧版协商连接。
参数
protocol
:要使用的 SSL 协议。enable_legacy_server_connect
:启用对旧版服务器的支持。
返回:具有适当配置的 SSL 上下文。
3. 带有断点续传支持的文件下载
download_with_resume(url: str, target: str | Path, **kwargs) -> DownloadResult
**
从 URL 下载文件,支持断点续传中断的下载。此函数在失败的情况下也可以多次重试下载,并在标记为完成之前确保文件被完整下载。
参数
url
:要下载的文件的 URL。target
:文件应保存的目标路径。headers
:请求的可选标头。make_executable
:是否使文件可执行。chunk_size
:要下载的数据块的大小。poll_manager
:要使用的urllib3.PoolManager
实例。max_retries
:下载的最大重试次数。timeout
:请求的超时时间。wait_interval
:重试之间的等待时间。overwrite_existing
:是否覆盖现有文件。resume_from_existing_part_file
:是否从现有部分文件继续下载。默认为 True。
返回:包含下载状态和文件路径的 DownloadResult
对象。
4. 部分文件存在
partial_file_exists(target: str | Path) -> bool
**
一个辅助函数,用于检查给定目标路径是否存在部分下载的文件。
参数
target
:要检查现有部分文件的文件路径。
返回:一个布尔值,指示是否存在部分文件。
类
文件下载结果类
DownloadResult
一个 NamedTuple
,用于存储下载操作的结果。它包含
status
:下载的最终状态(来自DownloadStatus
枚举)。path
:下载文件的路径。
依赖项
此存储库使用以下外部库
urllib3
:用于发送 HTTPS 请求。- truststore:用于创建和管理 SSL 上下文。
项目详情
下载文件
下载适用于您平台的项目文件。如果您不确定选择哪一个,请了解有关 安装包 的更多信息。
源分发
构建分发
sema4ai_http_helper-1.0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d40f1e324116799635c1f28960af2ee0538dbfe8e907440d034b5b401ecbed5d |
|
MD5 | 90fafcea3c78d771e4266ec10e1d0cbd |
|
BLAKE2b-256 | 0d301d2cd9250f0090215326e0471142194ca7312321d5a1eb8744a55a88552e |
sema4ai_http_helper-1.0.2-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dfe9f218281bb0d15ed1af39c2107a0399312a55c77cbed39c4eb37c867f9dea |
|
MD5 | 400cec5c7c4b963508a7901b6d72a056 |
|
BLAKE2b-256 | 341d2364f1d0884515330a9318b75a96e79583eefb2f051fa4fc5ccb9d7d5954 |