Напишите скрипт на C # для проверки сотен доменных имен. - PullRequest
1 голос
/ 29 августа 2009

Клиент дал мне электронную таблицу с сотнями доменных имен.

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

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

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

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

Ответы [ 4 ]

2 голосов
/ 02 сентября 2009

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

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

2 голосов
/ 29 августа 2009

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

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

1 голос
/ 29 августа 2009

Относительно вашего второго предмета

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

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

1 голос
/ 29 августа 2009

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

...