mirror of
https://github.com/Grasscutters/mitmproxy.git
synced 2025-02-01 15:55:28 +00:00
update raw export to not remove headers (#4181)
This commit is contained in:
parent
f1287012b4
commit
2aacf94a63
@ -11,6 +11,7 @@ Unreleased: mitmproxy next
|
|||||||
* Display HTTP trailers in mitmweb (@sanlengjingvv)
|
* Display HTTP trailers in mitmweb (@sanlengjingvv)
|
||||||
* Revamp onboarding app (@mhils)
|
* Revamp onboarding app (@mhils)
|
||||||
* Add ASGI support for embedded apps (@mhils)
|
* Add ASGI support for embedded apps (@mhils)
|
||||||
|
* Updated raw exports to not remove headers (@wchasekelley)
|
||||||
|
|
||||||
* --- TODO: add new PRs above this line ---
|
* --- TODO: add new PRs above this line ---
|
||||||
|
|
||||||
|
@ -18,7 +18,11 @@ def cleanup_request(f: flow.Flow) -> http.HTTPRequest:
|
|||||||
assert isinstance(f, http.HTTPFlow)
|
assert isinstance(f, http.HTTPFlow)
|
||||||
request = f.request.copy()
|
request = f.request.copy()
|
||||||
request.decode(strict=False)
|
request.decode(strict=False)
|
||||||
# a bit of clean-up - these headers should be automatically set by curl/httpie
|
return request
|
||||||
|
|
||||||
|
|
||||||
|
def pop_headers(request: http.HTTPRequest) -> http.HTTPRequest:
|
||||||
|
# Remove some headers that are redundant for curl/httpie export
|
||||||
request.headers.pop('content-length')
|
request.headers.pop('content-length')
|
||||||
if request.headers.get("host", "") == request.host:
|
if request.headers.get("host", "") == request.host:
|
||||||
request.headers.pop("host")
|
request.headers.pop("host")
|
||||||
@ -53,6 +57,7 @@ def request_content_for_console(request: http.HTTPRequest) -> str:
|
|||||||
|
|
||||||
def curl_command(f: flow.Flow) -> str:
|
def curl_command(f: flow.Flow) -> str:
|
||||||
request = cleanup_request(f)
|
request = cleanup_request(f)
|
||||||
|
request = pop_headers(request)
|
||||||
args = ["curl"]
|
args = ["curl"]
|
||||||
for k, v in request.headers.items(multi=True):
|
for k, v in request.headers.items(multi=True):
|
||||||
if k.lower() == "accept-encoding":
|
if k.lower() == "accept-encoding":
|
||||||
@ -70,6 +75,7 @@ def curl_command(f: flow.Flow) -> str:
|
|||||||
|
|
||||||
def httpie_command(f: flow.Flow) -> str:
|
def httpie_command(f: flow.Flow) -> str:
|
||||||
request = cleanup_request(f)
|
request = cleanup_request(f)
|
||||||
|
request = pop_headers(request)
|
||||||
args = ["http", request.method, request.url]
|
args = ["http", request.method, request.url]
|
||||||
for k, v in request.headers.items(multi=True):
|
for k, v in request.headers.items(multi=True):
|
||||||
args.append(f"{k}: {v}")
|
args.append(f"{k}: {v}")
|
||||||
|
@ -144,6 +144,7 @@ class TestRaw:
|
|||||||
|
|
||||||
def test_get_request_present(self, get_request):
|
def test_get_request_present(self, get_request):
|
||||||
assert b"header: qvalue" in export.raw(get_request)
|
assert b"header: qvalue" in export.raw(get_request)
|
||||||
|
assert b"content-length: 0" in export.raw_request(get_request)
|
||||||
|
|
||||||
def test_get_response_present(self, get_response):
|
def test_get_response_present(self, get_response):
|
||||||
delattr(get_response, 'request')
|
delattr(get_response, 'request')
|
||||||
@ -163,6 +164,7 @@ class TestRaw:
|
|||||||
class TestRawRequest:
|
class TestRawRequest:
|
||||||
def test_get(self, get_request):
|
def test_get(self, get_request):
|
||||||
assert b"header: qvalue" in export.raw_request(get_request)
|
assert b"header: qvalue" in export.raw_request(get_request)
|
||||||
|
assert b"content-length: 0" in export.raw_request(get_request)
|
||||||
|
|
||||||
def test_no_request(self, get_response):
|
def test_no_request(self, get_response):
|
||||||
delattr(get_response, 'request')
|
delattr(get_response, 'request')
|
||||||
|
Loading…
Reference in New Issue
Block a user