Вчера работал над проектом, всё было нормально. Сегодня при попытке скачать строку со страницы вылетает исключение
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-адресу. Но это уже не вопрос данной темы.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Можно ли посмотреть с помощью Telegram API время когда пользователь telegram был в сети последний раз? А то есть такие у которых включена last seen privacy...
При добавлении новых классов-таблиц в DbContext выдает ошибку и приходиться удалять базу и заново запускать проект
Имеется массив arr, в него можно добавить элементы (буквы), результат записывается в новый массив newArrНеобходимо реализовать массив/класс, который...