在Python中解析原始HTTP

13 投票
3 回答
14922 浏览
提问于 2025-04-16 01:03

我在找一个Python的库或者函数,可以让我输入一段原始的文本数据,这段数据代表一个HTTP请求或响应,然后它能把这些信息整理成一些有意义的形式,比如字典或者列表。我不想使用一些内置的类,也不想创建很多新的对象,因为在我的程序中,我接收到的就是这些原始数据,这就是我能用的。请问有没有现成的解决方案,还是我得自己写一个HTTP解析器?

补充一下,我想要的功能是这样的:我希望能输入一个像这样的字符串:

GET /index.html HTTP/1.1 \r\n
Host:www.stackoverflow.com \r\n
User-Agent:Firefox \r\n
etc.

然后它能返回给我一个包含请求方法、HTTP版本、头信息以及其他所有内容的结果。

3 个回答

1

我建议你先看看WebOb这个库。我觉得标准库里的cgi模块也有一个HTTP解析器。

4

这里有一个纯Python写的HTTP解析器,它是为了在C/Cython优化的版本无法使用时作为备用方案提供的,这个解析器属于http-parser项目。

这是纯Python版本的链接:

下面是C语言版本和Cython包装器的源代码:

1

我觉得你要找的就是这个库。虽然在Python 3中名字稍微改了一下,但其他方面都可以正常使用。

撰写回答