#c# #.net #https #httpclient #webclient
#c# #.net #https #httpclient #webclient
Вопрос:
Я пытаюсь загрузить различные сайты, чтобы получить некоторую информацию на C #, но есть довольно много сайтов (не все), где первый запрос занимает 30-60 секунд.
В качестве примера;
var url = "https://www.coolermaster.com/catalog/cases/mid-tower/masterbox-k501l";
using var wc = new WebClient();
Console.WriteLine(wc.DownloadString(url));
Это будет последовательно занимать 30-60 секунд каждый раз, когда я впервые запускаю приложение, fiddler говорит, что соединение остается в состоянии «ПОДКЛЮЧИТЬСЯ», но затем в конечном итоге возвращает содержимое страницы.
Я пытался использовать HttpClient
(и отключать прокси через HttpClientHandler
), используя HttpClientFactory
, используя WebRequest.Create
, но безуспешно.
Если я использую какие-либо инструменты командной строки (cURL, wget), он возвращается мгновенно, также мгновенно выполняет запросы с других языков (JS / Ruby / PHP / Python), но в .NET не повезло, даже если я отправляю те же заголовки, что и другие инструменты. Пробовал на разных компьютерах, разных подключениях к Интернету, vps и т. Д.
Ни один из этих сайтов не блокирует ботов, это явно разрешено robots.txt
.
Я столкнулся с какой-то ошибкой или есть какой-то вариант, который мне не хватает? Похоже, это связано с медленным рукопожатием SSL, но я не уверен?
Комментарии:
1. @Heagon спасибо, но эта ссылка не отвечает на мой вопрос. Это не просто медленный WebClient, это все методы, которые я пробовал в .NET (WebClient / HttpClient / WebRequest), и это только на некоторых сайтах.
2. Я подозреваю, что проблема заключается в разрешении dns. Я бы предположил, что на вашем компьютере установлено несколько DNS-серверов, первый из которых не работает.
3. Также может быть связано с истечением времени ожидания запроса IPv6.