職場や学校など、ウェブブラウザを立ち上げたときに「ユーザー名とパスワードを入力してください」などと表示される環境では、認証したウェブブラウザを経由しない通信はすべて遮断されてしまうことが少なくありません。
その原因である「邪魔なProxy」を越えられたひとつのケースをメモとして残します。
全部に当てはまるということはありませんが、VSCodeの拡張機能(Extensions)が入れられない!というパターンでも役に立つノウハウです。
そのような現場では、ウェブブラウザを介さずに所属ドメインの外部と通信するプログラムが使えないため、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の環境変数にエントリを追加します。以下のサイトがわかりやすいです。別のサービスの解説サイトですが、環境変数設定は同じです。
ウェブブラウザで下記の情報で認証すると仮定します。
ユーザー名:user
パスワード:password
次に、認証情報を含むURLを作成します。
以下のようになります。
http://user:password@proxy.yourdomain:8800/
以下のような、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」などと検索すれば見つかると思います。
以上です。