Программно определять настройки системного прокси в Windows XP с Python

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

Приложение на самом деле является плагином для Excel, и у нас есть автоматический установщик, основанный на easy_install от Setuptools, который гарантирует, что все зависимости проекта автоматически устанавливаются или обновляются каждый раз, когда пользователь включает свой Excel. Все это работает очень элегантно, поскольку пользователи редко знают обо всей установке, которая происходит полностью в фоновом режиме.

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

Я хочу программно определять общесистемные настройки прокси на рабочих станциях Windows, которые запускают наши пользователи:

Все в организации работают под управлением Windows XP и Internet Explorer. Я убедился, что каждый может загрузить наши вещи из IE без проблем, независимо от того, где они находятся в мире.

Так что все, что мне нужно сделать, это определить, какие настройки прокси использует IE, и заставить Setuptools использовать эти настройки. Теоретически вся эта информация должна быть в Реестре ... но есть ли лучший способ найти ее, которая гарантированно не изменится при обновлении IE людьми? Например, есть ли вызов Windows API, который я могу использовать для определения настроек прокси-сервера?

В итоге

Мы используем Python 2.4.4 в Windows XP Нам нужно определить настройки прокси-сервера Internet Explorer (например, хост, порт и тип прокси) Я собираюсь использовать эту информацию для динамической перенастройки easy_install, чтобы он мог загружать файлы egg через прокси.

UPDATE0:

Я забыл одну важную деталь: на каждом сайте есть файл автоматической настройки "pac".

В Windows \ CurrentVersion \ InternetSettings \ AutoConfigURL есть ключ, который указывает на документ HTTP на локальном сервере, который содержит то, что выглядит как файл javascript.

Сценарий pac - это, в основном, последовательность вложенных операторов if, которые сравнивают URL-адреса с регулярным выражением, а затем в конечном итоге возвращают имя хоста выбранного прокси-сервера. Сценарий представляет собой одну функцию JavaScript, которая называется FindProxyForURL (url, host)

Поэтому задача состоит в том, чтобы выяснить для каждого конкретного сервера, какой прокси использовать. Единственный 100% гарантированный способ сделать это - найти файл pac и вызвать функцию Javascript из Python.

Какие-либо предложения? Есть ли более элегантный способ сделать это?

Ответы на вопрос(2)

Ваш ответ на вопрос