Вчера работал над проектом, всё было нормально. Сегодня при попытке скачать строку со страницы вылетает исключение
System.Net.WebException: "Удаленный сервер возвратил ошибку: (403) Запрещено."
Код
_webClient = new WebClient { Encoding = Encoding.UTF8 };
var devices = _webClient.DownloadString("http://h92761ae.beget.tech/json_devices.php");
В чём может быть проблема?
Иногда веб-серверы фильтруют клиентов (браузеры, программные веб-клиенты, 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-адресу. Но это уже не вопрос данной темы.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости