2011-12-15 5 views
4

Я пытаюсь получить прокси-сервер для веб-запроса (HttpWebRequest или WebClient) В управляющем Panel-> Интернет Options-> Connecitons-> Настройки LAN вы увидите 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; 
    } 
+0

Проведите HTTP-пакеты с помощью WireShark (или Fiddler) в обоих случаях и сравните трассировки. – kol

ответ

2

Ваш подход прекрасен.

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^