Страницы

Поиск по вопросам

пятница, 14 февраля 2020 г.

Удаленный сервер возвратил ошибку 403

#c_sharp #webclient


Вчера работал над проектом, всё было нормально. Сегодня при попытке скачать строку
со страницы вылетает исключение


  System.Net.WebException: "Удаленный сервер возвратил ошибку: (403) Запрещено."


Код

_webClient = new WebClient { Encoding = Encoding.UTF8 };
var devices = _webClient.DownloadString("http://h92761ae.beget.tech/json_devices.php");


В чём может быть проблема?
    


Ответы

Ответ 1



Иногда веб-серверы фильтруют клиентов (браузеры, программные веб-клиенты, etc) по HTTP-заголовку User-Agent. И в зависимости от значения этого заголовка веб-сервер может принят решение о вполне определенном ответе клиенту. В конкретно этом случае веб-сервер (h92761ae.beget.tech) "не любит" обращения от "не реальных" браузеров, например: curl http://h92761ae.beget.tech/json_devices.php вернет код 403 Forbidden. Так как User-Agent в этом случае был curl/7.29.0 Поэтому нам можно попробовать притвориться реальным браузером с User-Agent-ом, например, Mozilla/5.0. И это решит данную проблему. WebClient _webClient = new WebClient { Encoding = Encoding.UTF8 }; _webClient.Headers["User-Agent"] = "Mozilla/5.0"; var devices = _webClient.DownloadString("http://h92761ae.beget.tech/json_devices.php"); Console.WriteLine(devices); Естественно, такой подход не решит проблемы, если вам будет запрещено ходить на этот сервер, например, по ip-адресу. Но это уже не вопрос данной темы.

Комментариев нет:

Отправить комментарий