发布网友
共1个回答
热心网友
以下内容来自腾讯工程师 ten
在进行网关、CDN类型产品的转发测试过程中,我们常需处理HTTP|HTTPS请求、协议及TLS层面测试。面对不同工具,管理复杂且增加同事学习成本。本文介绍Python的httpx库与curl支持主要HTTP请求场景,旨在简化工具管理,提升测试效率。欢迎交流讨论,共同完善。
使用httpx库,仅支持Python3,通过pip安装,支持HTTP2与命令行工具。
在Python中使用httpx示例,命令行操作亦如是。httpx库提供便捷的get、post等方法,简化请求发起。
推荐使用httpx.Client或httpx.AsyncClient,调用request方法替代直接调用,使代码更具灵活性。
httpx与curl支持HTTP2请求,分别通过在实例化时指定http2=True与参数--http2实现。
多路复用请求可通过httpx.AsyncClient构造,允许并发请求,非阻塞。
SSL/TLS测试中,验证系统功能与Cipher suite、SSL/TLS版本结合情况。Python中ssl库能满足大部分需求,curl通过--ciphers、--tls-max、--tlsv1.x参数满足测试。
处理Cipher suite与SSL/TLS版本指定,httpx+ssl与curl分别通过相关参数实现。
SNI(Server Name Indication)解决服务器多域名与证书问题。Python通过重写socket底层getaddrinfo方法动态篡改域名与IP映射,curl使用--resolve参数实现请求时的动态解析。
本文提供Python与curl的HTTP请求场景支持方案,欢迎讨论,共同完善工具。