我正在尝试检测特定网站使用的网络服务器。比如是否是 nginX、Apache、Tomcat 等等。
我通常使用Live HTTP Headers
Firefox 插件。问题是网站有时会隐藏它们的后端。当 Web 服务器不存在于 HEADER 中时,是否有办法检测它们?
编辑 1:来自与任何答案
都不匹配的网站的示例输出:@Question Overflow
HTTP/1.1 200 OK
Date: Mon, 29 Sep 2014 10:43:29 GMT
Content-Type: text/html
Transfer-Encoding: chunked
X-Powered-By: VideoHosting Framework/1.0.1
Cache-Control: no-cache, must-revalidate, no-cache="Set-Cookie", private
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Videohost/1.0.1
我什至尝试httprint
在 linux 上使用,但它ICMP request timeout
在我测试的每个网站上都有。
编辑 2:
上面的 HEADER 与我确信它使用 nginX 的网站非常相似。如果我们删除上面 HEADER 中不存在的那些部分(Connection
等等Pragma
),它会变得非常类似于 nginX。我想Server
是在最后,response
因为他们自己定制了它。由于那个 nginX 将它附加到Response
数据包的末尾。
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 29 Sep 2014 12:51:37 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
OWASP 应该用这个更新它的列表,对于 nginX 也是如此。;-)