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

239
15 марта 2018, 07:21

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

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

Код

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

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

Answer 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-адресу. Но это уже не вопрос данной темы.

READ ALSO
API Telegram. Как посмотреть время /дату последнего посещения пользователя telegram

API Telegram. Как посмотреть время /дату последнего посещения пользователя telegram

Можно ли посмотреть с помощью Telegram API время когда пользователь telegram был в сети последний раз? А то есть такие у которых включена last seen privacy...

2470
Как обновлять проекты в FirstCode

Как обновлять проекты в FirstCode

При добавлении новых классов-таблиц в DbContext выдает ошибку и приходиться удалять базу и заново запускать проект

245
Перечислить enum циклом for

Перечислить enum циклом for

Как сделать так же только через цикл for

160
как создать словарь слов из заданного алфавита (JS)?

как создать словарь слов из заданного алфавита (JS)?

Имеется массив arr, в него можно добавить элементы (буквы), результат записывается в новый массив newArrНеобходимо реализовать массив/класс, который...

660