我开发了一家跨国公司使用的关键应用程序。全球各地办事处的用户需要能够安装此应用程序。使用Python以编程方式检测Windows XP上的系统代理设置
该应用程序实际上是Excel的插件,我们有一个基于Setuptools easy_install的自动安装程序,可确保在用户切换Excel时随时自动安装或更新所有项目的依赖关系。由于用户很少意识到完全在后台发生的所有安装,因此这一切都非常优雅。
不幸的是,我们正在扩大,并开设新的办事处,所有有不同的代理服务器设置。这些设置似乎每天都在变化,所以我们无法跟上那些没有告诉我们的外包安全人员。它很烂,但我们只需要解决它。
我想以编程方式检测在Windows工作站我们的用户运行系统范围的代理设置:
每个人都在organisazation运行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 \互联网设定\ AutoConfigURL的关键指向包含什么看起来像一个JavaScript文件的本地服务器上的HTTP文件。
的PAC脚本基本上是一系列嵌套的if语句,其比较的URL对一个正则表达式,然后最终返回所选择的代理服务器的主机名。该脚本称为FindProxyForURL(URL,主机)
因此面临的挑战是找出任何给定的服务器使用的代理服务器的单个JavaScript函数。唯一100%保证的方法是查找pac文件并从Python中调用Javascript函数。
有什么建议吗?有没有更优雅的方式来做到这一点?
如果您看到FindProxyForURL(url,host),那么它肯定是代理自动配置设置(PAC)http://en.wikipedia.org/wiki/Proxy_auto-config。您可以使用pacparser来解析java脚本文件以确定代理服务器和端口。 https://code.google.com/p/pacparser/ – 2014-03-21 06:45:04