首页 > 编程语言 >【Niquests】最简单和先进的Python HTTP 客户端,完美替换Requests

【Niquests】最简单和先进的Python HTTP 客户端,完美替换Requests

时间:2025-01-15 21:33:31浏览次数:1  
标签:HTTP Python Niquests DNS True niquests 客户端

什么是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/

原创 python运维技术

标签:HTTP,Python,Niquests,DNS,True,niquests,客户端
From: https://www.cnblogs.com/o-O-oO/p/18673748

相关文章

  • Windows python venv 虚拟开发环境
    前言全局说明Windowspythonvenv虚拟开发环境一、说明1.1环境:Windows11家庭版23H222631.3737Python3.8.10(tags/v3.8.10:3d8993a,May32021,11:48:03)[MSCv.192864bit(AMD64)]onwin32二、venv2.1创建项目目录mkdirxhs-monitorcdxhs-monito......
  • Windows pyenv管理多python 版本环境安装
    前言全局说明Windowspython多版本安装,因为开发功能和客户要求,py脚本会被要求不同版本,但是命令行输入时同一个名字只能对应一个版本,如果多个版本,那只能改名字。比如:python3.8python3.9有什么方法用一个python使用不同版本呢?一、说明1.1环境:Windows11家庭版23H2......
  • Python----Python高级(面向对象:对象,类,属性,方法)
    一、面向对象简介Python完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承、多态、封装等。Python中,一切皆对象。python数据类型、函数等,都是对象。面向对象(ObjectorientedProgramming,OOP)编程的思想主要是针对大型软件设计而来的......
  • springboot 项目配置https
    当你的前端网页添加了https后,那么由于…前端调用后端的接口,同样的也需要配置https。下面以宝塔为例,如何实现,请看下面讲解:1.准备好SSL证书application.yml源文件:spring:redis:host:60.204.232.18port:6379database:3cloud:nacos:......
  • Python中LLM的模型动态深度调整:早退机制
    文章目录引言早退机制的基本原理1.1早退机制的工作流程1.2退出分数的计算1.3早退机制的优点早退机制的实现2.1模型结构设计2.2早退模块的设计2.3早退决策的实现2.4训练与推理早退机制的应用场景3.1实时推理3.2边缘计算3.3自适应模型早退机制的优化与挑战4.1......
  • 13.Python3 类型注解
    Python3类型注解Python类型注解(TypeHints)是自Python3.5引入的一种特性,它允许开发者在定义函数、变量时指定数据类型。类型注解并非强制执行的,它们主要用于提高代码的可读性和可维护性,并支持静态分析工具进行类型检查。类型注解不会影响Python的动态特性,也不会在运行时被......
  • python批量
    python第一步def一个txt,按时间戳拆分内容以查找单独的部分,时间戳的格式为YYYY-MM-DDHH:MM:SS,因此我们将使用正则表达式根据此模式进行拆分,拆分后处理32×32列的数组,删除前2列和后9列。第二步dif处理指定目录中的所有.txt文件,并按第一步的方法处理所有txtx文件。将所得的多个txt......
  • Python Playwright学习笔记(一)
    一、简介1.1Playwright是什么?它是微软在2020年初开源的新一代自动化测试工具,其功能和selenium类似,都可以驱动浏览器进行各种自动化操作。1.2、特点是什么支持当前所有的主流浏览器,包括chrome、edge、firefox、safari;支持跨平台多语言:支持Windows、Linux、macOS;安装和......
  • TCP 与 HTTP keepalive 关系
    1.概念介绍   TCPkeepalive     TCPkeepalive是一种TCP协议层面的机制。它的主要作用是在TCP连接处于空闲状态时,定期发送探测包来检测连接的对端是否还存活。例如,在一个长时间没有数据传输的TCP连接中,服务器端可能会按照配置好的时间间隔(如每隔7200秒)发送一个TCP......
  • python 按时间戳删除32×32数组的前2列和后9列
    还是雨滴谱文件,这次尝试批量处理首先处理1个单独的txt文件#!usr/bin/envpython#-*-coding:utf-8_*-"""@author:Suyue@file:raindrop.py@time:2025/01/15{DAY}@desc:"""importnumpyasnpimportredefprocess_file(input_file,output_file):......