我测试了一些Firefox和Chrome的插件,可以识别给定网站的IP地址。但其中一些还可以显示网站运行的服务器端技术。插件如何识别网站正在运行的服务器类型?
他们如何做到这一点?我知道客户端用户代理,HTTP协议中服务器发送“服务器 - 主机代理”是否有类似的字符串?
如果是这样,那么这个代码将如何回溯这个外观。我猜它与WebClient有什么关系?
有人吗?
我测试了一些Firefox和Chrome的插件,可以识别给定网站的IP地址。但其中一些还可以显示网站运行的服务器端技术。插件如何识别网站正在运行的服务器类型?
他们如何做到这一点?我知道客户端用户代理,HTTP协议中服务器发送“服务器 - 主机代理”是否有类似的字符串?
如果是这样,那么这个代码将如何回溯这个外观。我猜它与WebClient有什么关系?
有人吗?
使用HttpWebRequest
并将Method
属性设置为HEAD
,可以执行非常轻量级的HTTP HEAD请求。它将返回HTTP头(可能会或可能不正确)。他们的HTTP头也可能因服务器不同而不同,因为服务器应该公开什么头文件没有标准。
的代码:
HttpWebRequest myReq = (HttpWebRequest)WebRequest.Create("http://www.contoso.com/");
myReq.Method = "HEAD";
WebResponse myRes = myReq.GetResponse();
for(int i=0; i < myHttpWebResponse.Headers.Count; ++i) {
Console.WriteLine(
"\nHeader Name:{0}, Value :{1}",
myHttpWebResponse.Headers.Keys[i], myHttpWebResponse.Headers[i]
);
}
编辑:
var request = (HttpWebRequest)WebRequest.Create("http://www.http500.com");
try
{
var response = request.GetResponse();
}
catch (WebException wex)
{
// Safe cast to HttpWebResponse using 'as', will return null if unsuccessful
var httpWebResponse = wex.Response as HttpWebResponse;
if(httpWebResponse != null)
{
var httpStatusCode = httpWebResponse.StatusCode;
// HttpStatusCode is an enum, cast it to int for its actual value
var httpStatusCodeInt = (int)httpWebResponse.StatusCode;
}
}
谢谢我在等待时发现了类似的东西,但是我使用了GET,并在GET响应中生成了整个HTML页面,这对于大型网页来说可能是一种矫枉过正。再次感谢! – BerggreenDK 2011-04-12 12:57:10
我试过使用HTTPS地址,他们似乎崩溃或什么? – BerggreenDK 2011-04-12 12:59:15
崩溃?你有例外的细节吗?使用Fiddler来研究您使用浏览器提出的请求的细节以及您得到的回复。这将使你能够确定发生了什么。 – 2011-04-12 13:01:46
的可能重复的[如何检测web服务器类型](http://stackoverflow.com/questions/1097472/how- to-detect-web-server-type) – Shoban 2011-04-12 11:33:13
ohh!尽管我在发帖之前尝试过,但我没有找到那一个。对不起,谢谢你的链接。也会检查那一个。 – BerggreenDK 2011-04-12 12:58:01