Я пытаюсь загрузить html-код веб-сайта (yellowpages) в строку в моем приложении winforms C#.WebClient не будет работать на одном сайте
Я продолжаю получать ту же ошибку с одного веб-сайта. Все остальные сайты работают, я попытался общие из них, как: http://www.google.co.za и он работает, но когда я пытаюсь использовать http://www.yellowpages.co.za он выбрасывает:
An unhandled exception of type 'System.Net.WebException' occurred in System.dll Additional information: The remote server returned an error: (500) Internal Server Error.
Я понятия не имею, почему только этот один сайт выкидывает это ошибка.
Пожалуйста, найти свой код ниже
private string getPage()
{
using (WebClient client = new WebClient())
{
return client.DownloadString("http://www.yellowpages.co.za/");
}
}
По грубым предположениям, они делают некоторую проверку, чтобы люди не использовали данные, выходящие за пределы их условий использования. Вероятно, вы сами это видите, если используете HTTP-отладчик, такой как [Fiddler] (http://www.fiddlertool.com/) –
Разве нет способа обойти это? Если я могу просмотреть и загрузить источник страницы в Chrome, почему я не могу это сделать на C#? – msbarnard
@ user3815511: Chrome отправляет намного больше метаданных, таких как тип браузера, поддерживаемые механизмы сжатия, исходный IP-адрес запроса. Это несколько дает веб-серверам больше уверенности в том, что запрос поступает из браузера, а не скребка. Вышеприведенный код - это просто получить эту страницу с сообщением об инициирующем клиенте; например вы не загружаете CSS или изображения - вы можете очищать материал от сайта. Некоторые веб-сайты используют брандмауэры для блокировки таких запросов; это обычный способ внедрения DoS-атаки. –