Programowo wykryj ustawienia serwera proxy w systemie Windows XP z Pythonem

Opracowuję krytyczną aplikację używaną przez międzynarodową firmę. Użytkownicy w biurach na całym świecie muszą mieć możliwość zainstalowania tej aplikacji.

Aplikacja jest w rzeczywistości wtyczką do Excela i mamy automatyczny instalator oparty na easy_install Setuptools, który zapewnia, że ​​wszystkie zależności projektu są automatycznie instalowane lub aktualizowane za każdym razem, gdy użytkownik włącza Excel. Wszystko działa bardzo elegancko, ponieważ użytkownicy rzadko są świadomi całej instalacji, która odbywa się w całości w tle.

Niestety rozwijamy i otwieramy nowe biura, które mają różne ustawienia proxy. Ustawienia te wydają się zmieniać z dnia na dzień, więc nie możemy nadążyć za zewnętrznymi pracownikami ochrony, którzy zmieniają rzeczy bez informowania nas. Jest do bani, ale musimy po prostu to obejść.

Chcę programowo wykryć systemowe ustawienia proxy na stacjach roboczych z systemem Windows, na których działają nasi użytkownicy:

Wszyscy w organizacji korzystają z systemu Windows XP i Internet Explorer. Sprawdziłem, że każdy może pobrać nasze rzeczy z IE bez problemów, bez względu na to, gdzie są na świecie.

Wszystko, co muszę zrobić, to wykryć, jakie ustawienia proxy IE używają i sprawić, by Setuptools użyły tych ustawień. Teoretycznie wszystkie te informacje powinny znajdować się w Rejestrze. Ale czy jest lepszy sposób na znalezienie tego, co nie zmieni się wraz z aktualizacją IE? Na przykład czy istnieje wywołanie interfejsu API systemu Windows, którego mogę użyć do wykrycia ustawień serwera proxy?

W podsumowaniu:

Używamy Pythona 2.4.4 w systemie Windows XPMusimy wykryć ustawienia proxy programu Internet Explorer (np. Host, port i typ proxy)Wykorzystam te informacje, aby dynamicznie ponownie skonfigurować easy_install, aby mógł pobrać pliki jajek za pośrednictwem serwera proxy.

UPDATE0:

Zapomniałem o jednym ważnym szczególe: każda witryna ma plik „pac” auto-config.

Jest klucz w Windows CurrentVersion InternetSettings AutoConfigURL, który wskazuje na dokument HTTP na lokalnym serwerze, który zawiera coś, co wygląda jak plik javascript.

Skrypt pac jest w zasadzie serią zagnieżdżonych instrukcji if, które porównują adresy URL z wyrażeniem regularnym, a następnie zwracają nazwę hosta wybranego serwera proxy. Skrypt jest pojedynczą funkcją javascript o nazwie FindProxyForURL (url, host)

Wyzwaniem jest zatem znalezienie dla dowolnego serwera, którego serwera proxy użyć. Jedynym gwarantowanym w 100% sposobem jest wyszukanie pliku pac i wywołanie funkcji JavaScript z Pythona.

Jakieś sugestie? Czy jest na to bardziej elegancki sposób?

questionAnswers(2)

yourAnswerToTheQuestion