有没有办法来检查哪个服务器的操作系统一个特定的网站正在运行。 例如从linux命令行。 也许通过telnet? 但是我所能从“telnet www.google.com http”得到的是:
Trying 209.85.173.104... Connected to www.l.google.com. Escape character is '^]'.
如果有可能的话,有人可以详谈这个问题吗?
您可以查找内置在NMap中的操作系统指纹识别function。
但是,如果您正在寻找“Google运行的是什么? 你不会得到太多,因为你不知道负载平衡器背后是什么,或者防火墙会阻止它,而指纹只能是非常准确的,所以你可以得到错误的报告,并且当连接以某种方式“编。
许多网站会在HTTP标头中告诉你:
$ curl -s -I hotmail.com | grep Server Server: Microsoft-IIS/7.5 $ curl -s -I pinterest.com | grep Server Server: nginx/0.8.54
有些包括操作系统和有时版本:
$ curl -s -I linuxquestions.com | grep Server Server: Apache/2.2.9 (Unix) $ curl -s -I red.com | grep Server Server: Apache/2.2.3 (Red Hat) $ curl -s -I slashdot.org | grep Server Server: Apache/2.2.3 (CentOS) $ curl -s -I bar.com | grep Server Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/0.9.8r DAV/2 PHP/5.3.8
有的编写自己的networking服务软件:
$ curl -s -I google.com | grep Server Server: gws $ curl -s -I yahoo.com | grep Server Server: YTS/1.20.10
但有些不发送Server头:
$ curl -s -I serverfault.com HTTP/1.1 200 OK Cache-Control: public, max-age=41 Content-Length: 129706 Content-Type: text/html; charset=utf-8 Expires: Tue, 27 Mar 2012 13:01:46 GMT Last-Modified: Tue, 27 Mar 2012 13:00:46 GMT Vary: * Date: Tue, 27 Mar 2012 13:01:04 GMT $ curl -s -I www.facebook.com HTTP/1.1 302 Found Location: http://www.facebook.com/common/browser.php P3P: CP="Facebook does not have a P3P policy. Learn why here: http://fb.me/p3p" Set-Cookie: datr=sbpxT_PpXR9FO5mMTy8pCTjD; expires=Thu, 27-Mar-2014 13:03:45 GMT; path=/; domain=.facebook.com; httponly Content-Type: text/html; charset=utf-8 X-FB-Debug: VJycxKwQ9bAV0Z/n6jfN1WSFx4pqj2337c1jc+pPlE0= X-Cnection: close Content-Length: 0 Date: Tue, 27 Mar 2012 13:03:45 GMT
任何或所有这些可能是撒谎。 Bart对nmap的build议更可能是准确的,但由于他提到的原因,不能产生100%准确的结果。 有时甚至是没有意义的,例如,在Google实现一个HTTP请求所涉及的服务器数量,他们的Web服务器,search服务器,数据库服务器,caching服务器以及他们运行的任何其他服务器都可能正在使用不同的操作系统,你将无法知道。
问Netcraft: 那个网站在运行什么?
http://uptime.netcraft.com/up/graph?site=google.com返回“server:gws”(即Google Web Server)。