イントラネットのProxyを越えよう!

職場や学校など、ウェブブラウザを立ち上げたときに「ユーザー名とパスワードを入力してください」などと表示される環境では、認証したウェブブラウザを経由しない通信はすべて遮断されてしまうことが少なくありません。

そのような現場では、ウェブブラウザを介さずに所属ドメインの外部と通信するプログラムが使えないため、mpmやgit、IDE(SublimetextやEclipseなど)のプラグインのインストールなど、開発環境の構築に不自由します。

とは言え、よく調べてみたところ、まるで何もできない、というわけでもありませんでした。

レジストリ

ウェブブラウザがログイン画面を出す仕組みに、レジストリが関係しています。外部にアクセスする際に、まずレジストリで指定されたURIからプロキシの設定ファイルを読み込みます。

レジストリのエントリは以下です。OSはWindows10です。

\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\AutoConfigURL

プロキシサーバー設定ファイル

このエントリには、おそらく以下のように、プロキシサーバーの設定ファイルへのURLが書かれています。

http://proxy.yourdomain/parh/to/proxy.pac

中身は、要するに、プログラムです。WEB系プログラミング言語を学んだことがあれば、何のプログラムかは検討がつくはず。

わたしが身を置いた環境では、アクセス先のドメイン(URL)によってどのプロキシサーバーに認証を受けに行くかが書いてありました。

プロキシサーバー

設定ファイルに、以下のように書かれた箇所がないか探します。

return “PROXY proxy.yourdomain:8800”;

何箇所かある場合は、ファイル最下部に書かれた「else」の下のものでいいと思います。

このURLのプロキシサーバーから「自動的に認証を受けられる」ように手元のパソコンを設定すれば、外部通信の幅が広がり、何もしないよりは遥かに快適な環境を構築できます。

認証用URLの作成

Windowsの情報のみで恐縮ですが……。

Windowsの環境変数にエントリを追加します。以下のサイトがわかりやすいです。別のサービスの解説サイトですが、環境変数設定は同じです。

WindowsでVargentを使う場合のプロキシ設定

ウェブブラウザで下記の情報で認証すると仮定します。

ユーザー名:user
パスワード:password

次に、認証情報を含むURLを作成します。
以下のようになります。

http://user:password@proxy.yourdomain:8800/

以下のような、URLに認証情報を埋め込む方法を説明しているウェブサイトを見つけて、同じようにやってみてください。

ベーシック認証をURLに直接書く

Windowsの環境変数の設定

以下のエントリを、Windowsの環境変数に追加します。

変数名 http_proxy

整数値 user:password@proxy.yourdomain:8800

同じ整数値で「https_proxy」も作成しておきましょう。

これでmpmは使えるはず!

Sublimetext3

下記の記事のまま、作業してください。

認証付きプロキシの環境でPackage Controlを導入する方法

記事が消えたら困るので簡単に転記します。

Sublime Textの”View” -> “Show Console”でコンソールを表示した後、↓のコマンドを入力

import urllib.request,os,hashlib; h = ‘7183a2d3e96f11eeadd761d777e62404e330c659d4bb41d3bdf022e94cab3cd0’; pf = ‘Package Control.sublime-package’; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler({“http”: “http://[username]:[password]@[proxy_server]:[port]”, “https”: “https://[username]:[password]@[proxy_address]:[port]”})) ); by = urllib.request.urlopen( ‘http://sublime.wbond.net/’ + pf.replace(‘ ‘, ‘%20’)).read(); dh = hashlib.sha256(by).hexdigest(); print(‘Error validating download (got %s instead of %s), please try manual install’ % (dh, h)) if dh != h else open(os.path.join( ipp, pf), ‘wb’ ).write(by)

“Preferences” -> “Package Settings” -> “Package Control” -> “Settings – User”で、プロキシサーバー等の情報を入力

{
“http_proxy”: “http://[proxy_server]:[port]”,
“https_proxy”: “https://[proxy_server]:[port]”,
“proxy_username”: “username”,
“proxy_password”: “password”
}

これでわたしはいけました。

この他のIDEも「○○ proxy」などと検索すれば見つかると思います。

以上です。