首頁  >  文章  >  後端開發  >  如何使用 Python 請求列印原始 HTTP 請求?

如何使用 Python 請求列印原始 HTTP 請求?

Patricia Arquette
Patricia Arquette原創
2024-10-23 12:09:30570瀏覽

How to Print Raw HTTP Requests Using Python Requests?

使用Python 請求列印原始HTTP 請求

Python Requests 函式庫簡化了HTTP 請求,但了解原始HTTP 請求對於除錯分析。本文探討如何存取和列印完整的 HTTP 請求,包括請求行、標頭和內容。

以前,提取原始請求需要存取請求屬性,該屬性僅提供標頭。但是,在版本 1.2.3 中,Requests 引入了PreparedRequest 對象,該物件封裝了將傳送到伺服器的確切位元組。

要使用PreparedRequest,請建立一個請求物件並使用prepare() 方法。為了清晰起見,可以對輸出進行美化:

<code class="python">import requests

# Create a request
req = requests.Request('POST', 'http://stackoverflow.com', headers={'X-Custom': 'Test'}, data='a=1&b=2')

# Prepare the request (encodes it to bytes)
prepared = req.prepare()

# Define a function to prettify the POST request
def pretty_print_POST(req):
    """Prints the request in a human-readable format."""
    print('{}\n{}\r\n{}\r\n\r\n{}'.format(
        '-----------START-----------',
        req.method + ' ' + req.url,
        '\r\n'.join('{}: {}'.format(k, v) for k, v in req.headers.items()),
        req.body,
    ))

# Prettify the prepared request
pretty_print_POST(prepared)

# Send the actual request using a Session object
s = requests.Session()
s.send(prepared)</code>

此程式碼將完整的HTTP 請求列印為:

-----------START-----------
POST http://stackoverflow.com/
Content-Length: 7
X-Custom: Test

a=1&b=2

此方法允許檢查發送到伺服器的請求,從而方便調試和理解請求-響應生命週期。

以上是如何使用 Python 請求列印原始 HTTP 請求?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn