首页  >  文章  >  后端开发  >  如何使用 Python 请求打印原始 HTTP 请求?

如何使用 Python 请求打印原始 HTTP 请求?

Barbara Streisand
Barbara Streisand原创
2024-10-23 12:19:01248浏览

How to Print Raw HTTP Requests with Python Requests?

使用 Python 请求打印原始 HTTP 请求

使用 requests 模块时,可能需要查看原始的、详细的信息不仅仅是标头的 HTTP 请求。本文探讨如何打印出完整的 HTTP 请求,包括请求行、标头和内容。

解决方案:使用PreparedRequest 对象

自版本 1.2.3 ,requests模块引入了PreparedRequest对象。该对象表示将发送到服务器的确切字节。通过使用此对象,可以按如下方式漂亮地打印请求:

<code class="python">import requests

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

def pretty_print_POST(req):
    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,
    ))

pretty_print_POST(prepared)</code>

此代码以人类可读的格式打印完整的 HTTP 请求:

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

a=1&b=2

PreparedRequest 对象提供了对构造的 HTTP 请求的详细查看,这对于调试或分析流量非常有用。

要实际发送请求,您可以使用以下代码:

<code class="python">s = requests.Session()
s.send(prepared)</code>

以上是如何使用 Python 请求打印原始 HTTP 请求?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn