2015-06-30 4 views
0

Я пытаюсь получить доступ к веб-сайтам через IP-адрес, а не http-адрес. Я пытаюсь найти множество хорошо известных сайтов, таких как microsoft и google, и получить их IP-адрес, проверив их. Например, 184.87.106.199 - это microsoft, а 216.58.221.68 - google.Доступ к сайту по ipaddress

async Task<HttpStatusCode> RequestPage(string url, HttpClient client) { 
     var request = new HttpRequestMessage(); 

     try { 
      var response = await client.GetAsync("http://" + url); 

      Console.WriteLine(string.Format("{0} - {1}", url, response.StatusCode.ToString())); 

      return response.StatusCode; 
     } catch (TaskCanceledException) { 
      Console.WriteLine(string.Format("{0} - Timeout", url)); 

      return HttpStatusCode.GatewayTimeout; 
     } 
    } 

Однако он не работает для каждого сайта. google работает нормально, если я запрашиваю http://216.58.221.68, но microsoft возвращает статус плохого запроса.

что мне не хватает?

+0

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

ответ

6

Вы не можете надежно посетить веб-сайт на основе IP-адреса. Часто сервер настроен на размещение нескольких веб-сайтов на одном IP-адресе, и на основе URL-адреса он будет обслуживать правильный веб-сайт.

2

Когда вы делаете HTTP-запрос на веб-сайт с вашим браузером, сам браузер будет искать IP-адрес и затем подключиться. Тем не менее, ваш браузер отправит что-то вроде этого:

GET http://stackoverflow.com/ HTTP/1.1 
Host: stackoverflow.com 

Это означает, что удаленный конец знает, какой веб-сайт, чтобы отправить вас в качестве сервера может быть хостингом много сайтов, в частности, в общей среде хостинга.

Кроме того, чтобы осложнить ситуацию, некоторые веб-сайты будут иметь несколько IP-адресов.

Смежные вопросы