如何知道服务器是否正在运行Node.js?

6
我想知道w3techs如何确定一个给定的服务器是否使用Node.js。http://w3techs.com/technologies/details/ws-nodejs/all/all 我猜他们会查看一些特定的HTTP头。
例如:X-Powered-By:Express 但并非所有的node模块都生成这样的头文件。
您知道其他方式或流行的node模块生成的类似指纹吗?

6
指纹识别服务器的特征非常多,从它们响应的数据到分块发送数据包的方式都有所不同。但是,你说得对,没有绝对可靠的方法,尤其是在 Node.js 服务器上,因为它不一定运行 HTTP,并且非常灵活。 - Brad
2
那么就没有解决方案了吗? - Unitech
2
并不是这样。他们还可以在前面运行像Nginx这样的东西,这样你就更难知道后端是用什么编写的了。 - Jessie A. Morris
1
@JessieA.Morris 我们可以假设它只是一个没有nginx或其他任何东西的nodejs服务器。 - Sleep Deprived Bulbasaur
2
即便如此,指纹识别方法是不错的,但你永远无法百分之百确定。你可以更改节点HTTP模块的行为,使其像Apache或Java或其他服务器一样。通过HTTP,你无法百分之百确定服务器正在运行什么。 - Jessie A. Morris
2
在使用node.js的前端服务器中,有90%的情况下会使用Nginx。而且Nginx只会向Node.js服务器上行数据,对吧? 系统是否能够看到缓冲区是如何被分块的? - Unitech
1个回答

6

正如@brad、@jessie-a-morris、@tknew的评论所指出的那样,目前没有易于使用的方法可供您在自己的分析器中轻松重用。

引用w3techs的信息:

http://w3techs.com/faq 特别是“您的网站分析器究竟如何工作?”一章解释了

我们在网页中搜索特定的模式,以识别使用技术的方式,类似于病毒扫描器搜索文件中的模式以识别病毒。我们使用正则表达式和DOM遍历来进行搜索。我们已经确定了几千个技术使用指标。这些指标具有不同的优先级,并根据特定上下文中指标特定组合的存在或缺失来得出结论。
以下是指标所使用的信息示例:
- 网页的HTML元素 - 特定的HTML标记,例如生成器meta标记 - JavaScript代码 - CSS代码 - 网站的URL结构 - 离线链接 - HTTP头,例如cookies - 对特定请求的HTTP响应,例如压缩
建立分析器需要大量研究,并且我们一直在不断改进它。我们希望它成为最好的可能的网站分析器... http://w3techs.com/disclaimer 指出这一点。

为了从网站上获取任何信息,我们依靠网站本身、其所有者或网络管理员提供此类信息。有些网站更愿意分享这种信息,而有些则不是。一些技术可能提供更多的手段来揭示有关其使用的信息,而其他技术则不然...

接下来还有更多的“我们可能不会”、“在某些情况下”、“某些技术”、“不准确的结果”等内容。


2
虽然这确实回答了问题,但我想OP可能正在寻找方法的深入分析,不过做得很好! - Sleep Deprived Bulbasaur
2
@SleepDeprivedBulbasaur 我完全同意我的回答没有“解释”任何东西。起初,我只是想在原始OP的问题下发表评论“你已经尝试过什么了吗?你是否询问过w3techs他们是如何做到的?”但它会被隐藏在“显示更多评论”按钮下面。发布w3techs的几千个优先概率指标将是对这个奇怪的(在有用性方面)问题唯一可接受的答案。 - xmojmr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接