如何在Python中转储HTTP请求

4 投票
1 回答
3028 浏览
提问于 2025-04-17 22:31

我在我的应用程序中使用了http。

request = urllib2.Request(url, postdata) 

在这行代码之后,能不能在客户端获取这个请求的详细信息呢?

我需要确切知道发送给服务器的内容(是TCP抓包吗?),所以

POST url HTTP/version\r\nHeaderKey: HeaderValue\r\n....

1 个回答

2

能不能在客户端获取这个请求的详细信息(在这一行之后)?我需要确切知道发送给服务器的内容(TCP 数据包?)

你想要的是在 TCP 层面的日志,但实际上你并没有通过 TCP 发送任何东西,对吧?

你所做的只是创建了一个请求对象。

如果你要发送你创建的请求,可以在处理程序中开启调试,这样就能查看发送和接收的头信息和数据:

import httplib
import urllib
import urllib2

url = 'http://example.com'
headers = {'HeaderKey': 'HeaderValue'}
data = urllib.urlencode({})
request = urllib2.Request(url, headers=headers, data=data)
handler = urllib2.HTTPHandler()
handler.set_http_debuglevel(1)
opener = urllib2.build_opener(handler)
response = opener.open(request)
response.read()
response.close()

输出:

send: 'POST / HTTP/1.1\r\nAccept-Encoding: identity\r\nContent-Length: 0\r\nHost: example.com\r\nUser-Agent: Python-urllib/2.7\r\nConnection: close\r\nContent-Type: application/x-www-form-urlencoded\r\nHeaderkey: HeaderValue\r\n\r\n'
reply: 'HTTP/1.1 200 OK\r\n'
[snip]

撰写回答