Detecta programáticamente la configuración del sistema proxy en Windows XP con Python

Desarrollo una aplicación crítica utilizada por una empresa multinacional. Los usuarios de oficinas en todo el mundo deben poder instalar esta aplicación.

La aplicación es en realidad un complemento de Excel y tenemos un instalador automático basado en la instalación de instalación de Setuptools que garantiza que todas las dependencias de un proyecto se instalen o actualicen automáticamente cada vez que un usuario cambie su Excel. Todo funciona de manera muy elegante, ya que los usuarios rara vez son conscientes de toda la instalación que se produce completamente en segundo plano.

Desafortunadamente, estamos expandiendo y abriendo nuevas oficinas, todas con diferentes configuraciones de proxy. Esta configuración parece cambiar de un día para otro, por lo que no podemos mantenernos al día con los tipos de seguridad subcontratados que cambian las cosas sin avisarnos. Apesta pero solo tenemos que trabajar alrededor de ello.

Quiero detectar programáticamente la configuración de proxy de todo el sistema en las estaciones de trabajo Windows que nuestros usuarios ejecutan:

Todos en la organización ejecutan Windows XP e Internet Explorer. He verificado que todos pueden descargar nuestras cosas de IE sin problemas, independientemente de dónde se encuentren en el mundo.

Así que todo lo que tengo que hacer es detectar qué configuración de proxy usa IE y hacer que Setuptools use esa configuración. Teóricamente, toda esta información debería estar en el Registro ... ¿pero hay una mejor manera de encontrarla que garantice no cambiar con las personas que actualicen IE? Por ejemplo, ¿hay una llamada a la API de Windows que pueda usar para descubrir la configuración del proxy?

En resumen:

Usamos Python 2.4.4 en Windows XPNecesitamos detectar la configuración del proxy de Internet Explorer (por ejemplo, host, puerto y tipo de proxy)Voy a utilizar esta información para reconfigurar dinámicamente easy_install para que pueda descargar los archivos de huevo a través del proxy.

ACTUALIZACIÓN0:

Olvidé un detalle importante: cada sitio tiene un archivo "pac" de configuración automática.

Hay una clave en Windows \ CurrentVersion \ InternetSettings \ AutoConfigURL que apunta a un documento HTTP en un servidor local que contiene lo que parece un archivo javascript.

El script pac es básicamente una serie de sentencias if anidadas que comparan las URL con una expresión regular y finalmente devuelven el nombre de host del servidor proxy elegido. El script es una función javascript única llamada FindProxyForURL (url, host)

Por lo tanto, el desafío es encontrar para cualquier servidor determinado qué proxy usar. La única forma 100% garantizada de hacer esto es buscar el archivo pac y llamar a la función Javascript desde Python.

¿Alguna sugerencia? ¿Hay una manera más elegante de hacer esto?

Respuestas a la pregunta(2)

Su respuesta a la pregunta