2015-01-04 1 views
1

У меня нет проблем с доступом к веб-сайту с помощью браузера, но когда я программно пытаюсь получить доступ к веб-сайту для выскабливания, я получаю следующую ошибку.Ошибка 500 Веб-запрос не может очистить веб-сайт

The remote server returned an error: (500) Internal Server Error. 

Вот код, который я использую.

using System.Net; 

string strURL1 = "http://www.covers.com/index.aspx"; 
WebRequest req = WebRequest.Create(strURL1); 

// Get the stream from the returned web response 
StreamReader stream = new StreamReader(req.GetResponse().GetResponseStream()); 
System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
string strLine; 
// Read the stream a line at a time and place each one 
while ((strLine = stream.ReadLine()) != null) 
{ 
    if (strLine.Length > 0) 
    sb.Append(strLine + Environment.NewLine); 
} 

stream.Close(); 

Этот человек меня озадачивает. TIA

ответ

4

Сво агента пользователя.

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

Настройка строки User-Agent будет работать. Измените код на:

HttpWebRequest req = (HttpWebRequest)WebRequest.Create(strURL1); 
req.UserAgent = "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"; // Chrome user agent string 

..и это будет нормально.

+0

Это фиксированный его. Они не смогли остановить этого «младшего программиста». У меня есть доступ к StackOverflow. –

0

Если вы пытаетесь получить Html с URL-адреса.

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

Здесь вы можете найти решение вопроса очень похоже:

get HTML code through HttpWebRequest

2

Похоже, что он выполняет проверку пользовательского агента. Я смог повторить вашу проблему в PowerShell, но я заметил, что командлет PowerShell Invoke-WebRequest работает нормально.

Итак, я подключил Скрипач, заново его забрал и украл строку пользовательского агента из Fiddler.

Попробуйте установить UserAgent свойство: User-Agent: Mozilla/5.0 (Windows NT; Windows NT 6.2; en-US) WindowsPowerShell/4.0