Как получить прокси
Я пытаюсь получить прокси для веб-запроса (HttpWebRequest или веб-клиент). В панели управления -> Свойства обозревателя -> Подключения-> Настройки локальной сети вы увидите 3 варианта:
- Автоматически определять настройки
- Использовать скрипт автоматической настройки
- Используйте прокси-сервер для вашей локальной сети
Я хочу убедиться, что независимо от настроек мой веб-запрос использует тот же прокси, что и браузер.
Я использую код ниже, чтобы достичь этого; однако, когда установлен флажок 1. Я пытаюсь использовать один и тот же URL в браузере и в моем коде, похоже, мой код работает намного медленнее Я думаю, способ, которым я получаю прокси в коде, может быть неэффективным или неподходящим.
Что я могу изменить в своем коде, чтобы отразить скорость браузера?
var client = (HttpWebRequest)WebRequest.Create(uriStr);
client.Headers["something"] = something;
client.Timeout = ConnectionTimeOut; //1 min
var proxyURI = WebRequest.GetSystemWebProxy().GetProxy(uri);
var proxy = new WebProxy(proxyURI, true)
{
Credentials = CredentialCache.DefaultNetworkCredentials
};
//if there is no proxy, proxy will return the same uri
//do we need check if client.Proxy is null or not,
if (proxyURI != null && !string.IsNullOrEmpty(proxyURI.AbsoluteUri) && !proxy.Address.Equals(uri))
{
client.Proxy = proxy;
}
1 ответ
Ваш подход в порядке.
Причиной разницы в скорости может быть то, что браузер, возможно, либо кэшировал запрашиваемую вами страницу, либо кэшировал учетные данные прокси / прокси-сервера, и ему не нужно выполнять какие-либо новые операции извлечения данных, как вы выполняете в своем коде.
Пробовали ли вы последующие запросы в вашем приложении после получения прокси / учетных данных?