如何使用Python发送无'Host Header'的请求?
我已经尝试了很多天,现在终于决定问这个问题,可能对大多数专家来说是个傻问题。
我正在使用PyUnit来测试我应用程序的API。
这个应用程序(需要测试的)部署在我们这里的一台本地服务器上。这个应用程序可以防止黑客进行恶意活动。所以我通过这个应用程序访问任何被保护的网站。例如:http://my-security-app/stackoverflow/login
,http://my-security-app/website-to-be-protected
等等。
几乎整个框架都是围绕Urllib和Urllib2运行的。
场景:- 我需要用Python发送一个没有'Host'头的请求,或者用'Host123'作为头名称的请求,而不是原来的名称。
我尝试了下面提到的代码,但对我来说不起作用。
"测试失败,因为出现了一个异常:[Errno 9] 错误的文件描述符"
host = "12.1.3.16"
with closing(socket.create_connection((host, 80))) as s:
# send request without Host header
s.sendall(b"GET /mywebsite/administrator/ HTTP/1.1\r\n" +
#"Host12:{}\r\n".format(host).encode('ascii', 'strict') +
b"Connection: close\r\n\r\n")
任何帮助都将不胜感激。
提前谢谢你们!
1 个回答
1
可以使用httpbin这个测试服务器来进行测试。顺便说一下,它是用Python写的。
描述:
测试一个HTTP库有时候会变得很麻烦。PostBin.org非常适合测试POST请求,但其他方面就不太好用了。这个服务器的存在就是为了覆盖各种HTTP场景。还在考虑增加更多的接口(比如说 /deflate)。
所有接口的响应都是用JSON格式编码的。
作者还提供了一个基于这个服务器的公共服务,地址是http://httpbin.org