分别对 HTTPRequest 和 HTTPResponse 的原始请求和响应
Raw request and response to HTTPRequest and HTTPResponse, respectively
过去几周我一直在探索 codebase,但我还没有找到如何将原始 bytes
转换为 HTTPRequest
或 HTTPResponse
.
长话短说,我想按照以下方式做一些事情(为了提问而简化):
from mitmproxy.http import HTTPRequest
req = b"GET / HTTP/1.1\r\nHost: example.com\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n"
http_request = HTTPRequest.create(req)
print(http_request.method)
# >>> GET
我 99% 确定代码库中的某处 必须 执行此类操作,但我尚未找到它。任何帮助都会很棒。
解析在 https://github.com/mitmproxy/mitmproxy/blob/master/mitmproxy/net/http/http1/read.py and https://github.com/mitmproxy/mitmproxy/blob/master/mitmproxy/net/http/http1/read_sansio.py 中完成。请注意,后者将在几天内合并到前者中(我们正在进行重大重组),目前 read.py 中的一些方法将消失。
过去几周我一直在探索 codebase,但我还没有找到如何将原始 bytes
转换为 HTTPRequest
或 HTTPResponse
.
长话短说,我想按照以下方式做一些事情(为了提问而简化):
from mitmproxy.http import HTTPRequest
req = b"GET / HTTP/1.1\r\nHost: example.com\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n"
http_request = HTTPRequest.create(req)
print(http_request.method)
# >>> GET
我 99% 确定代码库中的某处 必须 执行此类操作,但我尚未找到它。任何帮助都会很棒。
解析在 https://github.com/mitmproxy/mitmproxy/blob/master/mitmproxy/net/http/http1/read.py and https://github.com/mitmproxy/mitmproxy/blob/master/mitmproxy/net/http/http1/read_sansio.py 中完成。请注意,后者将在几天内合并到前者中(我们正在进行重大重组),目前 read.py 中的一些方法将消失。