ホームページ  >  記事  >  バックエンド開発  >  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 リクエスト ライブラリは HTTP リクエストを簡素化しますが、生の HTTP リクエストを理解することはデバッグに役立ちます。そして分析。この記事では、リクエスト行、ヘッダー、コンテンツを含む完全な HTTP リクエストにアクセスして印刷する方法について説明します。

以前は、生のリクエストを抽出するには、ヘッダーのみを提供していたリクエスト属性にアクセスする必要がありました。ただし、バージョン 1.2.3 のリクエストでは、サーバーに送信される正確なバイトをカプセル化する 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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。