多国籍企業が使用する重要なアプリケーションを開発しています。世界中のオフィスのユーザーがこのアプリケーションをインストールできる必要があります。
このアプリケーションは実際には Excel のプラグインであり、Setuptools の easy_install に基づく自動インストーラーがあり、ユーザーが Excel に切り替えるたびにプロジェクトのすべての依存関係が自動的にインストールまたは更新されます。ユーザーは、完全にバックグラウンドで行われるすべてのインストールを意識することはめったにないため、すべてが非常にエレガントに機能します。
残念ながら、私たちはすべて異なるプロキシ設定を持つ新しいオフィスを拡大して開設しています。これらの設定は日々変化しているように見えるため、私たちに知らせずに変更を行う外注のセキュリティ担当者についていくことができません。ひどいですが、それを回避する必要があります。
ユーザーが実行している Windows ワークステーションで、システム全体のプロキシ設定をプログラムで検出したいと考えています。
組織内の全員が Windows XP と Internet Explorer を実行しています。世界中のどこにいても、誰もが問題なく IE から私たちのものをダウンロードできることを確認しました。
したがって、IE が使用しているプロキシ設定を検出し、Setuptools にそれらの設定を使用させるだけです。理論的には、この情報はすべてレジストリにあるはずですが、人々が IE をアップグレードしても変更されないことが保証されている、それを見つけるためのより良い方法はありますか? たとえば、プロキシ設定を検出するために使用できる Windows API 呼び出しはありますか?
要約すれば:
- Windows XP で Python 2.4.4 を使用します。
- Internet Explorer のプロキシ設定 (ホスト、ポート、プロキシ タイプなど) を検出する必要があります。
- この情報を使用して、easy_install を動的に再構成し、プロキシ経由で Egg ファイルをダウンロードできるようにします。
UPDATE0:
重要な詳細を 1 つ忘れていました。各サイトには、自動構成の「pac」ファイルがあります。
Windows\CurrentVersion\InternetSettings\AutoConfigURL には、javascript ファイルのように見えるものを含むローカル サーバー上の HTTP ドキュメントを指すキーがあります。
pac スクリプトは基本的に、URL を正規表現と比較し、最終的に選択したプロキシ サーバーのホスト名を返す一連のネストされた if ステートメントです。スクリプトは、FindProxyForURL(url, host) と呼ばれる単一の JavaScript 関数です。
したがって、課題は、特定のサーバーで使用するプロキシを見つけることです。これを行う唯一の 100% 保証された方法は、pac ファイルを検索し、Python から Javascript 関数を呼び出すことです。
助言がありますか?これを行うよりエレガントな方法はありますか?