Czy mogę zmusić system Windows 7 do zmiany ustawień proxy na podstawie mojego połączenia sieciowego?

26

Przenosząc LapTop między pracą a domem, muszę zmienić ustawienia internetowego serwera proxy. Czy istnieje jakiś sposób, aby Windows 7 zmienił te ustawienia w oparciu o moją obecnie aktywną sieć?

Hakan Forss
źródło
1
Owh, chciałbym, żeby mój laptop zrobił to samo, po prostu zbyt leniwy, aby szukać odpowiedzi :-(
Ivo Flipse 24.09.2009

Odpowiedzi:

20

Możesz to skonfigurować za pomocą PAC (skrypt automatycznej konfiguracji proxy). Są to małe skrypty napisane w języku Javascript, które pozwalają określić różne reguły połączeń. Większość współczesnych przeglądarek internetowych na komputery stacjonarne może je odczytać bez problemu, mam taką samą w Internet Explorerze i Firefoksie.

Minimalny plik PAC, który zawsze wysyła Cię do serwera proxy. Nazwa_firmy na porcie 81:

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

I nieco bardziej skomplikowany przykład pliku PAC, który sprawdza, w której sieci jesteś, sprawdzając, jaki zakres adresów IP wybrałeś. W tym przykładzie wszystkie komputery klienckie w Twojej firmie otrzymują adres IP w zakresie 10.10. * Przez DHCP i uzyskują dostęp do Internetu za pośrednictwem serwera proxy. Nazwa firmy na porcie 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";
     }

  }

Skrypt ma również tryb debugowania, którego można użyć do sprawdzenia, czy działa i który tryb (połączenie PROXY lub DIRECT) uważa, że ​​powinno być obecne połączenie.

Możesz także stworzyć bardziej złożony skrypt, który sprawdza, na przykład, czy serwer, z którym się łączysz, znajduje się w wewnętrznej sieci firmowej (a zatem chce połączenia BEZPOŚREDNIEGO, nawet jeśli komputer jest obecnie w sieci firmowej), w tym miejscu „ d umieść wszystko, co zwykle umieszczasz w polu wyjątków proxy IE, rozszerzając je w następujący sposób:

//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";
     }

  }

Użyj tego pliku, zapisując go gdzieś na dysku C komputera jako coś takiego jak proxy.pac, a następnie w przeglądarce Internet Explorer przejdź do Narzędzia -> Opcje (lub Panel sterowania -> Opcje internetowe), a następnie kliknij kartę Połączenia, kliknij przycisk Ustawienia sieci LAN . Teraz usuń zaznaczenie pola „Użyj serwera proxy” u dołu i zamiast tego zaznacz pole „Użyj skryptu automatycznej konfiguracji” i wpisz adres pliku PAC, używając pliku: // URL like file://C:/proxy.pac.

Ustawienia proxy IE

Alternatywnie dla przeglądarki Firefox przejdź do Narzędzia -> Opcje, kliknij kartę Zaawansowane, kliknij kartę Sieć, kliknij przycisk Ustawienia, kliknij ustawienie „Adres URL automatycznej konfiguracji serwera proxy”, ponownie używając pliku: /// URL (zwróć uwagę, że w Firefox tam są 3 ukośnikami za okrężnicą, np file:///C:/proxy.pac.

Ustawienia proxy przeglądarki Firefox


Pamiętaj, że Internet Explorer 11 zmienił to zachowanie i nie możesz teraz załadować pliku PAC z adresu URL „plik: //”, musisz użyć adresu URL „HTTP: //” lub „HTTPS: //”.

W programie Internet Explorer 11 zespół WinINET wyłączył obsługę WinINET dla skryptów opartych na plikach: // w celu promowania współdziałania między stosami sieciowymi. Korporacje powinny zamiast tego hostować skrypty konfiguracji serwera proxy na serwerze HTTP lub HTTPS.

Istnieje obejście problemu, które może na chwilę włączyć tę funkcję, ale nie zaleca się jej używania, ponieważ przyszłe aktualizacje mogą ją również wyłączyć.

Jako tymczasowe obejście tego problemu można usunąć, ustawiając następujący klucz rejestru:

Klucz: HKLM \ SOFTWARE \ Policies \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \
Wartość: EnableLegacyAutoProxyFeatures
Wpisz: REG_DWORD
Dane: 1

Należy pamiętać, że powinien to być tylko środek tymczasowy, ponieważ blok ten został wprowadzony z dobrych powodów, a usunięcie go nie magicznie naprawi aplikacji opartych na WinHTTP.

Zauważ też, że po wprowadzeniu tej zmiany IE11 będziesz musiał zmienić ustawienie adresu dla skryptu automatycznej konfiguracji, ponieważ IE 11 akceptuje tylko jedną składnię (patrz u dołu połączonego artykułu na blogu IE Internals poniżej).

Jednak, jak zauważono, jest mało prawdopodobne, aby to obejście klucza rejestru nadal działało w przyszłych wersjach programu Internet Explorer, więc znacznie lepiej jest znaleźć sposób na utrzymanie PAC na serwerze WWW. Zrobiłby to wbudowany w Windows serwer sieci Web IIS, a istnieją bardziej minimalne serwery, które działałyby również przy instalacji na twoim laptopie.

Więcej informacji na temat wpisu na blogu IE Internals Opis konfiguracji serwera proxy sieci Web .

GAThrawn
źródło
To całkiem fajne, dopóki nie przejdziesz do innej publicznej sieci bezprzewodowej przy użyciu tego samego prywatnego zakresu adresów IP, z jakiego korzystam w moim domu. :)
dannysauer,
Niezły post. Dobrze napisane.
Jeff F.
1
To nie działa w Windoes 8.1
Milind R
3
Aby rozwinąć powyższy komentarz @ MilindR, pliki PAC są nadal w systemie Windows 8 / IE11, ale musisz załadować plik PAC z adresu URL HTTP lub HTTPS, nie można po prostu użyć ścieżki opartej na pliku lub UNC. Więcej informacji od zespołu Internet Explorera tutaj Zrozumienie konfiguracji serwera proxy sieci Web i ta odpowiedź została zaktualizowana, aby odzwierciedlić zmiany IE11.
GAThrawn
4

Użyj Free IP Switcher 1.0

alternatywny tekst

Opis:

Ilekroć użytkownik mobilny przechodzi do innej sieci, musi zmienić konkretny adres IP, adres bramy, maskę podsieci, serwer proxy i drukarkę domyślną itp. Na określone środowisko sieciowe. W tym celu musi zapamiętać informacje o ustawieniach TCP / IP każdej sieci. Musi także ponownie uruchomić komputer, aby zastosować go w systemie i uzyskać dostęp do Internetu.

Nie trać czasu na rekonfigurację ustawień sieci komputerowej przy każdej zmianie lokalizacji. Darmowy IP Switcher to idealne rozwiązanie dla Ciebie. Przełącza między wstępnie skonfigurowanymi ustawieniami sieci za pomocą jednego kliknięcia i bez ponownego uruchamiania. Dzięki darmowemu przełącznikowi IP możesz automatycznie zmieniać wszystkie ustawienia sieciowe na komputerze: adres IP, maski sieciowe, domyślną bramę, serwer DNS, serwer wygranych, ustawienia proxy, domyślną drukarkę i inne.

Cechy:

  • Zmień ustawienia sieci IP „w locie” bez ponownego uruchamiania
  • Przełącz ustawienia serwera proxy programu Internet Explorer
  • Przełącz domyślną drukarkę
  • Zmień nazwę komputera i grupę roboczą
  • Zaimportuj bieżące ustawienia sieciowe do ustawienia
  • Obsługa ikon na pasku zadań, automatyczne uruchamianie w systemie Windows
  • 100% spyware ZA DARMO, NIE zawiera żadnego spyware, adware ani wirusów
Ivo Flipse
źródło
2
Nie mogę uwierzyć, że coś tak przydatnego, jak profile konfiguracji sieci, nie zostało już włączone do systemu Windows 7. Ma go Ubuntu, ma go Mac OS X. . .
dreamlax
Wiem, że Dell stworzył takie narzędzie dla mojej Latitude, ale mi się nie podobało :-(
Ivo Flipse
Wersja do pobrania nie działa dla systemu Windows /
Hakan Forss
@IvoFlipse Czy pamiętasz, jak się nazywa?
Matthys Du Toit,
@MatthysDuToit Nie mogę
Ivo Flipse
3

Masz inne (płatne) alternatywy do przełączania konfiguracji sieci, takie jak Mobile Net Switch lub NetSetMan

t3mujin
źródło
+1 dla NetSetMan, najłatwiejszy sposób zmiany proxy w IE
miky