Могу ли я заставить Windows 7 изменить настройки прокси-сервера в зависимости от сетевого подключения?


26

Перемещая свой ноутбук между работой и домом, мне нужно изменить настройки интернет-прокси. Есть ли способ для Windows 7 изменить эти настройки в зависимости от текущей активной сети?


1
О, я бы так хотел, чтобы мой ноутбук делал то же самое, просто лень искать ответ :-(
Ivo Flipse

Ответы:


20

Вы можете настроить это с помощью PAC (Proxy Auto Configuration script). Это небольшие сценарии, написанные на Javascript, которые позволяют указывать различные правила подключения. Большинство современных настольных веб-браузеров могут читать их без проблем, у меня есть тот же самый, настроенный как в Internet Explorer, так и в Firefox.

Минимальный PAC-файл, который всегда отправляет вас на прокси-сервер proxy.companyname через порт 81:

function FindProxyForURL(url, host)
{
     return "PROXY proxy.companyname:8080";
}

И немного более сложный пример файла PAC, который проверяет, в какой сети вы находитесь, проверяя, какой диапазон IP-адресов вы выбрали. В этом примере всем клиентским компьютерам в вашей компании предоставляется IP-адрес в диапазоне 10.10. * По DHCP и доступ в Интернет через прокси-сервер proxy.companyname через порт 81.

//Turn debug mode on by setting debug variable to any non-empty string
//Note that "" is an empty string, and that "0", "1" & "test" are not empty strings.


function FindProxyForURL(url, host)
  {
    var ip = myIpAddress();
    var debug = "";

    if(debug)
    {
        alert("proxy.pac IP=" + ip + "  HOST=" + host + "  URL=" + url);
    }

      // All client PCs on the internal network will have a 10.10.x.x address, check if I have this
     if (shExpMatch(ip, "10.10.*"))
     {
             if(debug)
          {
                 alert("Proxy for " + url);
             }
     return "PROXY proxy.companyname:81";
     }

     // If you have a different IP then this isn't the company network
     else 
     {
             if(debug)
          {
      alert("You are not at CompanyName so going direct for " + url);
             } 
            return "DIRECT";
     }

  }

Сценарий также имеет режим отладки, который вы можете использовать для проверки его работоспособности и режима (PROXY или DIRECT connect), который, по вашему мнению, должен быть в вашем текущем соединении.

Вы также можете создать более сложный сценарий, который проверяет, например, находится ли сервер, к которому вы подключаетесь, во внутренней сети компании (и, следовательно, он хочет установить прямое подключение, даже если ваш компьютер в данный момент находится в сети компании), именно здесь вы ' поместите все, что вы обычно помещаете в окно исключений прокси в IE, расширив его следующим образом:

//Turn debug mode on by setting debug variable to any non-empty string
//Note that "" is an empty string, and that "0", "1" & "test" are not empty strings.


function FindProxyForURL(url, host)
  {
    var ip = myIpAddress();
    var debug = "";

    if(debug)
    {
        alert("proxy.pac IP=" + ip + "  HOST=" + host + "  URL=" + url);
    }

    // Detect if trying to connect to internal/intranet host
    if(isPlainHostName(host) || dnsDomainIs(host, "intranet.companyname"))
    {
 if(debug)
 {
            alert("Direct for " + url);    
     }
    return "DIRECT";   
    }

    // Detect if trying to connect to URLs on the internal network via internal DNS suffix or IP address
    if(shExpMatch(url, "*.companyname") || shExpMatch(host, "10.100.*"))
    {
 if(debug)
 {
     alert("Direct for " + url);
 } 
        return "DIRECT";    
    } 

     // All client PCs on the internal network will have a 10.10.x.x address, check if I have this
     if (shExpMatch(ip, "10.10.*"))
     {
             if(debug)
          {
                 alert("Proxy for " + url);
             }
     return "PROXY proxy.companyname:8080";
     }

     // If you have a different IP then this isn't the company network
     else 
     {
             if(debug)
          {
      alert("You are not at CompanyName so going direct for " + url);
             } 
            return "DIRECT";
     }

  }

Используйте этот файл, сохранив его где-нибудь на диске C своего компьютера как что-то вроде proxy.pac, затем для Internet Explorer перейдите в «Инструменты» -> «Параметры» (или «Панель управления» -> «Свойства обозревателя»), затем перейдите на вкладку «Подключения», нажмите кнопку «Параметры локальной сети». , Теперь снимите флажок «Использовать прокси-сервер» внизу и вместо этого установите флажок «Использовать сценарий автоматической настройки» и введите адрес вашего файла PAC, используя file: // URL-адрес как file://C:/proxy.pac.

Настройки IE прокси

В качестве альтернативы для Firefox перейдите в Инструменты -> Параметры, перейдите на вкладку «Дополнительно», нажмите вкладку «Сеть», нажмите кнопку «Настройки», выберите параметр «URL-адрес автоматической настройки прокси-сервера», снова используя файл: /// URL (обратите внимание, что в Firefox есть 3 косые черты после двоеточия, например file:///C:/proxy.pac.

Настройки прокси Firefox


Обратите внимание, что Internet Explorer 11 изменил это поведение, и теперь вы не можете загрузить файл PAC с URL-адреса «file: //», необходимо использовать URL-адрес «HTTP: //» или «HTTPS: //».

В Internet Explorer 11 команда WinINET отключила поддержку WinINET для сценариев file: // для обеспечения взаимодействия между сетевыми стеками. Корпорациям рекомендуется вместо этого размещать свои скрипты конфигурации прокси на сервере HTTP или HTTPS.

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

В качестве временного обходного пути этот блок можно удалить, установив следующий раздел реестра:

Ключ: HKLM \ SOFTWARE \ Policies \ Microsoft \ Windows \ CurrentVersion \ Интернет-настройки \
Значение: EnableLegacyAutoProxyFeatures
Тип: REG_DWORD
Данные: 1

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

Также обратите внимание, что после внесения этого изменения в IE11 вам потребуется изменить настройку адреса для скрипта автоконфигурации, поскольку IE 11 принимает только один синтаксис для этого (см. Нижнюю часть связанной статьи в блоге IE Internals ниже).

Однако, как уже отмечалось, маловероятно, что этот обходной путь с ключом реестра продолжит работать в будущих версиях Internet Explorer, поэтому вам гораздо лучше найти способ хранения PAC на веб-сервере. Подойдет встроенный в IIS веб-сервер Windows, и есть еще несколько минимальных, которые также подойдут для установки на ваш ноутбук.

Подробнее о записи в блоге IE Internals. Понимание конфигурации веб-прокси .


Это довольно круто, пока вы не подключитесь к другой общедоступной беспроводной сети, использующей тот же частный диапазон IP-адресов, который я использую в своем доме. :)
dannysauer

Хороший пост. Хорошо написанный.
Джефф Ф.

1
Это не работает в Windoes 8.1
Milind R

3
Чтобы расширить комментарий @ MilindR выше, файлы PAC все еще находятся в Windows 8 / IE11, но вам нужно загрузить файл PAC с URL-адреса HTTP или HTTPS, он не может просто использовать путь на основе файла или UNC. Больше информации от команды Internet Explorer здесь Понимание конфигурации веб-прокси и этот ответ был обновлен, чтобы отразить изменения IE11.
GAThrawn

4

Используйте Free IP Switcher 1.0

альтернативный текст

Описание:

Всякий раз, когда мобильный пользователь перемещается в другую сеть, он должен изменить конкретный IP-адрес, адрес шлюза, маску подсети, прокси-сервер и принтер по умолчанию и т. Д. В соответствии с конкретной сетевой средой. Для этого ему необходимо запомнить информацию о настройках TCP / IP каждой сети. Кроме того, он должен перезагрузить компьютер, чтобы применить его к системе и получить доступ к Интернету.

Не тратьте свое время на перенастройку параметров компьютерной сети каждый раз, когда вы меняете свое местоположение. Бесплатный IP Switcher - идеальное решение для вас. Он переключается между предварительно настроенными сетевыми настройками одним щелчком мыши и без перезагрузки. С помощью Free IP Switcher вы можете автоматически изменять все сетевые настройки на вашем компьютере: IP-адрес, сетевые маски, шлюз по умолчанию, DNS-сервер, сервер выигрышей, настройки прокси, принтер по умолчанию и многое другое.

Особенности:

  • Переключение настроек сети IP "на лету" без перезагрузки
  • Переключить настройки прокси-сервера Internet Explorer
  • Переключите ваш принтер по умолчанию
  • Переключите имя вашего компьютера и рабочую группу
  • Импортировать текущие настройки сети в настройки
  • Поддержка значков в системном трее, автозапуск с Windows
  • 100% шпионское ПО БЕСПЛАТНО, НЕ содержит шпионского, рекламного или вирусного ПО

2
Я не могу поверить, что что-то столь же полезное, как профили конфигурации сети, еще не было частью Windows 7. У Ubuntu есть это, у Mac OS X есть это. , ,
Dreamlax

Я знаю, что Dell сделал такой инструмент для моей Локатора, но мне он не понравился :-(
Ivo Flipse

Загрузочная версия не работает для Windows /
Hakan Forss

@IvoFlipse Можете ли вы вспомнить, как это называется?
Matthys Du Toit

@MatthysDuToit Я не могу
Иво Флипс

3

У вас есть другие (платные) альтернативы для переключения сетевых конфигураций, такие как Mobile Net Switch или NetSetMan


+1 за NetSetMan, самый простой способ сменить прокси в IE
miky
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.