2009-08-28 4 views
1

Клиент дал мне таблицу сотен доменных имен.Напишите скрипт C# для проверки сотен доменных имен

Моя задача состоит в том, чтобы определить следующее о каждом:

  • Какие домены связаны с веб-сервера/сайта.
  • Из тех, которые перенаправляются на другой сайт.
  • Что такое серверное программное обеспечение работает (ASP, ASP.NET, Apache и т.д.)

... и выводить результаты в организованном порядке.

Есть ли сценарий, желательно C#, который может помочь с этим?

+1

ли мы получить срез для ответа? –

ответ

2

Для этого я использовал следующие:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri); 
req.AllowAutoRedirect = false; // allows tracking of redirects 
HttpWebResponse resp = (HttpWebResponse)req.GetResponse(); 
string server = resp.Headers["Server"]; // to track server software 
string poweredby = resp.Headers["X-Powered-By"]; //denotes ASP.NET, PHP, etc 
string aspnetVersion = resp.Headers["X-AspNet-Version"]; //only applies to IIS servers 

Некоторые дополнительные заголовки ответов, которые могут быть захвата для получения дополнительной информации:

http://en.wikipedia.org/wiki/List_of_HTTP_headers

1

Большинство ваших требований можно обрабатывать с помощью класса System.Net.WebClient. Одной липкой точкой является то, что серверное программное обеспечение использует сайт. Даже если вы запускаете что-то, что напрямую запрашивает сервер, вы не можете достоверно определить, какое именно серверное программное обеспечение оно использует, потому что это программное обеспечение обычно может быть настроено на то, чтобы лгать вам, а также рассказывать вам и подражать ответам другого общего бренда сервера. И хотя ложь не распространена, это тоже не неслыханно (некоторые считают, что это лучшая практика, как способ сбросить сухарики).

2

Вы можете использовать класс HttpWebRequest для проверки доменных имен. Основываясь на свойстве HttpStatus HttpWebResponse, вы можете решить, есть ли перенаправление.

В некоторых случаях вы можете найти серверное программное обеспечение, просмотрев заголовки, отправленные с ответом, но, возможно, не все (или только несколько) серверов отправляют эти заголовки.

+0

Apache/php, IIS/ASP и IIS/ASP.Net включают заголовок по умолчанию. Вероятно, это покрывает> 95% того, что есть. –

+0

Да, но не лучше ли удалять эти заголовки? Возможно, я ошибаюсь. – M4N

+0

На самом деле это: удаление их экономит пропускную способность и делает это гораздо труднее для крекеров. Но это одна из тех вещей, которые так много людей просто не могут обойти ... –

1

Что касается вашего 2-го пункта

• Из тех, которые, что перенаправление на другой сайт.

HttpWebRequest/Response и WebClient поймают большинство переадресаций, но не все из них, поскольку есть страницы, которые перенаправляют через JavaScript. Поскольку ни один из них не выполняет JavaScript, вы не сможете обнаружить эти случаи, если не используете элемент управления WebBrowser или что-то еще, способное запускать JavaScript.