3

我想知道是否存在仅发送带有给定标头的 HTTP 请求的工具。

我需要这个来测试一些应用程序,并希望在缺少一些 HTTP 标头时观察应用程序的行为。

研究了 urllib2、httplib 和 pycurl,但它们在内部添加了自己的标头(在最好的情况下,我们可以指定这些标头的值或将这些值设为空)。

我需要的是一个实用程序,在该实用程序中,我可以完全/透明地控制要在请求中发送的 HTTP 标头(以便我可以发送缺少content-length/content-type等的请求),并且应用程序仅使用这些标头形成请求,无需在内部添加任何其他内容。

我可以使用浏览器插件来做到这一点。

4

2 回答 2

3

正如 abartnert 指出的那样,如果您愿意,您可以只使用套接字,但我认为值得注意的是 CURL 也可以满足您的要求。从http://curl.haxx.se/docs/manpage.html的手册页:

Remove an internal header by giving a replacement without
content on the right side of the colon, as in: -H "Host:".
于 2012-11-02T22:08:40.113 回答
1

有很多方法可以做到这一点,但如果您试图在字节级别完全控制请求,则使用套接字可能更容易:

s = socket.socket()
s.connect((host, 80))
s.sendall(myrequest)

您实际上可以在发送后将套接字连接到一些 HTTP 解析器库,但这可能很复杂。如果您在分析整个结果之后,最好直接从套接字读取整个结果:

s.shutdown(socket.SHUT_WR)
result = ''
while True:
    buf = s.read(4096)
    if not buf: break
    result += buf
于 2012-11-02T22:06:18.093 回答