什么是Niquests
Niquests 是一个简单而优雅的 HTTP 客户端, 简单说它是 Requests 的直接替代品。 因为多年来Requests 功能一直处于停滞不前的状态,由于不前进的状态并且没有发展,这阻止了数百万开发人员使用更高级的功能,所以就有了Niquests, Niquests 是唯一能够自动提供 HTTP/1.1、HTTP/2 和 HTTP/3 的 HTTP 客户端, 该项目深入研究了协议(早期响应、尾部标头等)和所有相关的网络基本要素(如 DNS-over-HTTPS、高级性能计量等,而且Niquests是最安全,最快,最简单和最先进的Python HTTP 客户端。
安装
Niquests 在 PyPI 上可用, Niquests 官方支持 Python 或 PyPy 3.7+。
$ python -m pip install niquests
基本使用
>>> import niquests
>>> s = niquests.Session(resolver="doh+google://", multiplexed=True)
>>> r = s.get('https://one.one.one.one')
>>> r
<ResponsePromise HTTP/3>
>>> r.status_code
200
>>> r.headers['content-type']
'application/json; charset=utf8'
>>> r.oheaders.content_type.charset
'utf8'
>>> r.encoding
'utf-8'
>>> r.text
'{"authenticated": true, ...'
>>> r.json()
{'authenticated': True, ...}
>>> r
<Response HTTP/3 [200]>
>>> r.ocsp_verified
True
>>> r.conn_info.established_latency
datetime.timedelta(microseconds=38)
也可以使用async/await
import niquests
import asyncio
async def main() -> None:
async with niquests.AsyncSession(resolver="doh+google://") as s:
r = await s.get('https://one.one.one.one', stream=True)
print(r) # Output: <Response HTTP/3 [200]>
payload = await r.json()
print(payload) # Output: {'authenticated': True, ...}
asyncio.run(main())
Niquests 允许我们非常轻松地发送 HTTP 请求,无需手动向你的URL添加查询字符串,也不需要对你的数据进行形式编码 - 只需使用该方法即可!
另外该项目不需要任何编译工具链,如果我们平台可以原生支持 HTTP/3 支持,则不会强制执行和安装 HTTP/3 支持。
最后再罗列下Niquests的全面的功能。
支持的功能和最佳实践
Niquests 已准备好满足构建可扩展、强大且可靠的 HTTP 应用程序的需求。
• 基于 HTTPS 的 DNS、基于 QUIC 的 DNS、基于 TLS 的 DNS 和基于 UDP 的 DNS
• 自动内容解压缩和解码
• OS truststore 默认,不再有 certifi!
• OCSP 证书吊销验证
• 高级连接时序检查
• 内存证书(CA 和 mTLS)
• 浏览器风格的 TLS/SSL 验证
• 具有 Cookie 持久性的会话
• Keep-Alive & 连接池
• 国际域和 URL
• 自动遵守.netrc
• 基本和摘要认证
• 熟悉的 Cookiedict
• 网络设置微调
• 具有先验知识的 HTTP/2
• 面向对象的标头
• 多部分文件上传
• 后量子安全性
• 分块 HTTP 请求
• 完全类型注释
• SOCKS 代理支持
• 连接超时
• 流式下载
• 默认为 HTTP/2
• 基于 QUIC 的 HTTP/3
• 早期响应
• 快乐的眼球
• 复 用!
• 线程安全!
• WebSocket的!
• Trailers
• DNSSEC!
• 异步!
• SSE!
看完上面的内容感觉功能真是全,可以完美替换requests了,还不去赶快试试。
https://niquests.readthedocs.io/en/stable/
标签:HTTP,Python,Niquests,DNS,True,niquests,客户端 From: https://www.cnblogs.com/o-O-oO/p/18673748原创 python运维技术