Как получить прокси

Я пытаюсь получить прокси для веб-запроса (HttpWebRequest или веб-клиент). В панели управления -> Свойства обозревателя -> Подключения-> Настройки локальной сети вы увидите 3 варианта:

  1. Автоматически определять настройки
  2. Использовать скрипт автоматической настройки
  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 ответ

Ваш подход в порядке.

Причиной разницы в скорости может быть то, что браузер, возможно, либо кэшировал запрашиваемую вами страницу, либо кэшировал учетные данные прокси / прокси-сервера, и ему не нужно выполнять какие-либо новые операции извлечения данных, как вы выполняете в своем коде.

Пробовали ли вы последующие запросы в вашем приложении после получения прокси / учетных данных?

Другие вопросы по тегам