我想知道是否存在仅使用给定标头发送HTTP请求的工具。
我需要这个来测试一些应用程序,并希望在缺少某些HTTP头时观察应用程序的行为。
研究了urllib2,httplib和pycurl,但他们在内部添加了自己的标头(在最好的情况下,我们可以指定这些标头的值或将这些值设为空)。
我需要的是一个实用程序,我可以完全/透明地控制我要在请求中发送的HTTP标头(这样我就可以发送缺少content-length
/ content-type
的请求等等并且应用程序仅与这些标头形成请求,而不在内部添加任何其他内容。
我可以使用浏览器插件执行此操作。
答案 0 :(得分: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:".
答案 1 :(得分: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