判断一个网站是由哪种语言开发的方法
现在网页开发语言有很多种,有时出于某种需要,或者一时好奇,很想查看一个网站是由哪种语言所写,那么有没有什么方法和技巧呢?
一般而言,对于许多没有使用静态和伪静态技术的网站,我们可以直接查看网站页面的后缀名,例如:
Server Side Includes 技术,拓展名为.shtml或.html或.htm
PHP技术,拓展名为.php
JSP技术,拓展名为.jsp或.jsf(JSF技术是JSP技术的拓展)
ASP.NET技术,拓展名为.aspx (x 代表extension)
ASP技术,拓展名为.asp
ColdFusion技术,拓展名为.cfc
而大型一点的网站,一般用资源转向功能(就像JSP中web.xml定义的名字,把HOME转向到home.jsp,这样就隐藏了拓展名)。或者用Apache有一个URL Rewriting的Module,PHP网站的拓展名改变,就常用这个URL Rewriting,可以把.php拓展名改成任意名字。此时我们仍有5种方法进行判断:
方法(1): 查看该网站的开发开放平台。 比如:GOOGLE有个Google Code,里面提供GOOGLE各种Search Engine API,还有Google AJAX。那么GOOGLE提供的API全是JAVA的(全无PHP,ASP等),由此可以判断GOOGLE必定就是JSP。
再比如:去维基百科,当你点到某些提交信息的按钮时候,IE的状态栏(下方)会马上呈现.php的拓展名。正常在地址栏上看不到.php的原因是,Wikipedia会把你提交信息后,转到另一个.html页面,而不会直接显示那个.php页面。
方法(2): 学习JSP,PHP等相关技术,就能了解用这些技术开发的网站的特点,根据结构就可以判断。 比如:人人网,他们在招聘开发者只要求回JSP,Struts(JSP MVC的结构之一)。而且人人网大部分开放平台开发的游戏都是JSP写的,由此断定,人人网就是用JSP的(其实校内拓展名.do是典型的JSP Struts)。 再比如:百度,从它贴吧,知道上提交模式,以及百度大部分拓展名都被隐藏(PHP网站经常用apache里的功能来隐藏拓展名)来看,百度是用的PHP。
方法(3): 可以尝试查找该网站的招聘信息,从招聘要求中,看看应聘网站后台程序员,需要会什么语言。 人人网自己的招聘网页,就是个好例子。
方法(4): 查看网站COOKIE特征。打开网站后在地址栏里输入 javascript:alert(document.cookie); 然后回车,可以看到JSESSIONID=**** 可以知道,这是JSP写的 //PHP的是SESSIONID=...,而.net网站就不会是这两种情况。
方法(5): 域名后面加上/index.php或者/index.asp/或者index.jsp或者/index.aspx哪个能打开就说明是那种语言.比如百度的http://www.baidu.com/index.php就能打开,百度是用的php,人人网是jsp,淘宝也是php。
最后要说的是,尽管方法有很多种,也不能排除有些网站使用以上所有方法都不能判断出开发语言。有的网站同时用到了好几种语言,而有的扩展名则是可以修改的:
比如.php的可以伪装成.html,使用rewrite和反向代理后,实际的资源文件名也可能被隐藏,对于python、ruby这些语言开发网站,并没有约定的扩展名,可以用firebug或者chrome的开发者工具来查看网页的Response Headers:
Response Headers
HTTP/1.1 200 OK
Date: Thu, 29 Nov 2012 01:08:16 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.2.17
Connection: close
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8