回复内容: 如何判断一个网站用的apache还是ngx?通过哪些配置文件可以判断?
response header里有一个server字段可以判断
你们答案简单粗暴,但是遇到某些情况是没什么用的,例如:
lighttpd修改
setenv.add-response-header = ( server => sshttpd,
x-powered-by => ssppp)
你们找到header的也不过是
accept-ranges:bytes
content-length:325
content-type:image/gif
date:wed, 03 sep 2014 04:03:17 gmt
etag:692905520
last-modified:mon, 28 oct 2013 05:17:31 gmt
server:sshttpd
x-powered-by:ssppp
完全没什么用。
所以,我说一种方案:
xxx@a-pc:~$ nmap -sv xxx.xxx.xxx
starting nmap 6.40 ( http://nmap.org ) at 2014-09-06 05:59 cst
nmap scan report for ip和域名隐藏了。。
host is up (0.0049s latency).
not shown: 999 filtered ports
port state service version
80/tcp open http lighttpd
这个就很准确了。(用的也是修改过header的lighttpd)
当然如果他们铁下心要去修改源码来修改header,
那你们就从了吧。
打开浏览器-f12-打开url
装个wappalyzer,是个chrome的扩展,如果网站做了负载均衡的话,那就知道不了了
這個問題可以推廣到更普適的版本,那就是如何分辨任意網站背後的服務器程序。答案是沒有辦法。因爲服務器程序對用戶而言,做的是等價的工作,必然無法分辨。那麼狹隘一些,對於已知服務器程序類型,如何分辨?答案是,根據特性。
常見的特性有哪些?自然就是非標準的行爲,比如自定義的 http 頭,server 的返回值等等。但這些都可以僞造,因爲服務器程序的本質行爲都一樣,特性改成什麼樣,不影響。
所以,即便是對 apache 和 ngx,普遍適用的判斷方法依舊不存在。
怎麼辦?根據具體問題具體分析,先收集二者的細微差異,提出假設,設計實驗驗證或推翻,逐步推倒出可能性更大的一種選擇。相信只要內部實現不同,在外部總能找到差異。
人肉打听一下这个网站是谁运维的,然后想办法去问他
chrome f12,点network,找到那个网页的记录,看返回头中的server。
我要是故意修改后,你能知道吗?
如果配置没改的话
$ curl -i http://segmentfault.com/q/1010000000659515http/1.1 200 okserver: aserver/1.2.9-3date: sat, 06 sep 2014 14:02:13 gmtcontent-type: text/html; charset=utf-8connection: keep-alivex-powered-by: php/5.5.9-1ubuntu4.3set-cookie: sfsess=dyochb.f0350a50e8f6a4f3fe211ae191c835e6.a; expires=sun, 07-sep-2014 14:02:12 gmt; max-age=86400; path=/; domain=segmentfault.comx-powered-by-anquanbao: miss from dxt-bj-sj-s91
不同的server的不同版本,http header 字段的排序有可能是不同的。
通过 http server 头是最简单的方法,不过这个头可以通过配置去掉。所以实际上没有精确的方法知道 web server 的类型。不过可以通过经验也就是统计方法。
参见:http://www.zhihu.com/question/21621809
chrome的话可以安装插件wappalyzer,网站使用的技术都可以显示出来
同意@大舒的看法
另: 如果nginx作为代理服务器分发到apache, 应该算什么?
传送门:chromesnifferplus
想要得到最靠谱的答案: 去问人家。
从response里看的都是可以伪装的。
