2011-04-12 2 views
0

Я протестировал несколько плагинов для Firefox и Chrome, которые могут идентифицировать номер IP данного сайта. Но некоторые из них также могут показать, на какой серверной технологии работает веб-сайт.Как плагины определяют, на каком сервере работает веб-сайт?

Как они это делают? Я знаю о клиент-пользовательском агенте, есть ли что-то подобное в HTTP-протоколе, где сервер отправляет строку «server-host-agent» типа?

И если да, то как бы код для этого взгляда. Думаю, что-то с WebClient?

Кто-нибудь?

+0

возможно дубликат [Как определить тип веб-сервера] (http://stackoverflow.com/questions/1097472/how- to-detect-web-server-type) – Shoban

+0

ohh! Я не нашел этого, хотя я и пытался до публикации. Извините и спасибо за ссылку. Будет проверять это тоже. – BerggreenDK

ответ

1

Используя 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] 
    ); 
} 

EDIT:

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;      
    } 
} 
+0

спасибо, что я узнал что-то подобное во время ожидания, но я использовал GET и создал всю HTML-страницу в ответе GET, что может быть довольно переполненным для больших веб-страниц. Еще раз спасибо! – BerggreenDK

+0

Я тоже пытался использовать HTTPS-адреса, они, похоже, сбой или что-то еще? – BerggreenDK

+0

Crash? Получаете ли вы какие-либо детали в исключении? Используйте Fiddler для изучения деталей запросов, которые вы делаете в своем браузере, и ответов, которые вы получаете. Это позволит вам определить, что происходит. –