C# - ошибка 500 при запросе к сайту
Пытаюсь сделать запрос к сайту https://1clancer.ru через C#.
Библиотека HtmlAgilityPack:
var htmlWeb = new HtmlWeb();
var doc = htmlWeb.Load("https://1clancer.ru");
Console.WriteLine(doc.DocumentNode.InnerHtml);
Стандартная библиотека HttpClient:
var client = new HttpClient();
var html = client.GetAsync("https://1clancer.ru");
Console.WriteLine(html.Result);
Оба варианта приводят к ответу 500 от сервера.

При этом, при запросе через код на Питоне всё работает.
import requests
response = requests.get('https://1clancer.ru')
print(response.text)
Ответы (1 шт):
Серверу просто нужен HTTP заголовок Accept, просто скопировал его из логов Firefox. User-Agent необязателен здесь, но пусть будет. Это особенность конкретного текущего сервера, и решение не относится ко всем сайтам интернета в целом.
Еще сервер возвращает ответ в древней кодировке Content-Type: text/html; charset=windows-1251, поэтому я подключил кодировки Windows через RegisterProvider. Это нужно сделать 1 раз при запуске приложения до начала всех запросов на сервер. (Если вы используйете древний Framework 4.x, то кодировка 1251 там подключена по умолчанию, ничего дополнительно подключать не требуется).
private static readonly HttpClient client = new HttpClient(new HttpClientHandler { AutomaticDecompression = DecompressionMethods.All });
static async Task Main(string[] args)
{
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
client.DefaultRequestHeaders.UserAgent.ParseAdd("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0");
client.DefaultRequestHeaders.Accept.ParseAdd("text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8");
string html = await client.GetStringAsync("https://1clancer.ru");
HtmlDocument doc = new HtmlDocument(); // HtmlAgilityPack
doc.LoadHtml(html);
string title = doc.DocumentNode.SelectSingleNode("//title").InnerText;
Console.WriteLine(title);
}
HttpClient и DefaultRequestHeaders к нему тоже достаточно создать один раз на все время работы приложения. Далее пользоваться одним и тем же клиентом в разных запросах.
Ответ от сервера 200 OK, вывод в консоль
Сервис удаленной работы для 1С программистов (1С фриланс, 1C freelance). обслуживание 1С, 1С настройка, программирование 1С :: 1Clancer.ru