Détecter par programmation système-paramètres de proxy sur Windows XP avec Python

Je développe une application critique utilisés par une société multinationale. Les utilisateurs dans les bureaux tout autour du globe doivent être en mesure d'installer cette application.

L'application est en fait un plugin pour Excel et nous avons un programme d'installation automatique basé sur Setuptools' easy_install qui assure que tous les un projet dépendances sont automatiquement installés ou mis à jour à tout moment, un utilisateur passe sur leur Excel. Tout cela fonctionne très élégamment que les utilisateurs sont rarement conscients de l'ensemble de l'installation qui se passe entièrement dans l'arrière-plan.

Malheureusement, nous sommes en expansion et l'ouverture de nouveaux bureaux qui ont tous différents paramètres de proxy. Ces paramètres semblent changer de jour en jour donc nous ne pouvons pas maintenir en place avec la sécurité externalisée gars qui changent des trucs sans nous le dire. Ça craint, mais nous avons juste à le contourner.

Je veux en programmant détecter l'échelle du système, les paramètres de proxy sur les postes de travail Windows nos utilisateurs à exécuter:

Tout le monde dans le organisazation fonctionne sous Windows XP et Internet Explorer. J'ai vérifié que tout le monde peut télécharger notre stuff c'est à dire sans problèmes, peu importe où ils sont int au monde.

Donc tout ce que je besoin de faire est de détecter ce que les paramètres de proxy d'internet explorer à l'aide de et faire Setuptools d'utiliser ces paramètres. Théoriquement, toute cette information doit figurer dans le Registre.. mais est-il une meilleure façon de trouver ce qui est garanti de ne pas changer avec des gens de mise à niveau c'est à dire? Est-il par exemple de l'API Windows je peux utiliser pour découvrir les paramètres de proxy?

En résumé:

  • Nous utilisons Python 2.4.4 sur Windows XP
  • Nous avons besoin pour détecter les paramètres de proxy Internet Explorer (par exemple, l'hôte, le port et le type de Proxy)
  • Je vais utiliser cette information de manière dynamique de re-configurer easy_install afin qu'il puisse télécharger l'œuf de fichiers via le proxy.

UPDATE0:

J'ai oublié un détail important: Chaque site a une auto-config "pac" fichier.

Il y a une clé dans Windows\CurrentVersion\InternetSettings\AutoConfigURL qui pointe vers un document HTTP sur un serveur local qui contient ce qui ressemble à un fichier javascript.

La pac script est essentiellement une série de if imbriquées les relevés qui permettent de comparer les Url avec une expression régulière et éventuellement retourner le nom d'hôte de la choisi du serveur proxy. Le script est d'une seule fonction javascript appelée FindProxyForURL(url, host)

Le défi est donc de trouver pour tout serveur proxy à utiliser. La seule garantie à 100% façon de le faire est de rechercher le fichier pac et appeler la fonction Javascript à partir de Python.

Des suggestions? Est-il une façon plus élégante de le faire?

Si vous voyez FindProxyForURL(url, host), alors il est certainement la configuration automatique de Proxy de configuration (PAC) en.wikipedia.org/wiki/Proxy_auto-config. Vous pouvez utiliser pacparser pour analyser le fichier de script java pour déterminer le serveur proxy et le port. code.google.com/p/pacparser
Double Possible de Comment puis-je trouver le navigateur, les paramètres de proxy?

OriginalL'auteur Salim Fadhley | 2009-07-01