web-dev-qa-db-ja.com

プロキシファイル(PAC)設定を使用するようにAtom=を構成する方法は?

Windowsでは、。apmrcファイルでプロキシ設定を手動で指定する代わりに、システムのデフォルトプロキシを使用するようにAtomを構成できますか?


私は最近 atom-editor for Windows(Windows 7 Pro))を使い始めて、今のところ気に入っています。私は、エディターが外の世界に接続できるようにして、成功するまでにしばらく時間をかけています。

私たちのネットワーク(私はネットワークエキスパートではありません)は、プロキシサーバー(内部)を使用してインターネットにアクセスするように構成されています。私のシステムでは、これは「自動構成スクリプト」を使用してプロキシ設定で実行されます。例:http://internal-server-name/sub-dir/file-name.pac

。apmrcファイルでプロキシ情報を手動で設定することを多くのリソースが提案しています:

システムのデフォルトが機能する必要があるため、これらは私の質問に答えません

Atomこれを同じことをするように構成しようとしましたが、。apmrcファイルを次のように変更すると:

http-proxy = http://internal-server-name/sub-dir/file-name.pac
https-proxy = https://internal-server-name/sub-dir/file-name.pac
strict-ssl = false

次のエラーが発生します(おそらく上記のアドレスがプロキシ自体ではないためです)。

tunneling socket could not be established, cause=Parse Error

。apmrcファイルを解体しないでおくと、パッケージを表示しようとすると次のエラーが表示されます。

getaddrinfo ENOTFOUND

指定するプロキシサーバーのIPアドレスとポート番号があったとしても、資格情報を構成ファイルにハードコードしたくないだけでなく、認証がなんとかしてKerberosトークンを使用するように設定されていると確信しています。それらを指定することはできません。

興味深いことに、Atomの更新により、インストールしたパッケージ(箱から出してすぐ)は最新であることがわかります。これは、この部分が機能しているのにパッケージとテーマが機能していないことを示しているようです。


参考のためにスクリーンショットをいくつか示します。

いいえ。apmrc変更 No .apmrc changes

。apmrcで指定されたプロキシサーバー Proxy server specified in .apmrc

2015年8月31日編集

一部のフィードバックに応えて、。pacファイルを表示して、プロキシサーバーのアドレス情報を抽出しようとしました。プロキシに関する情報をファイルから取得して。apmrcファイルに入れることができましたが、結果には影響しませんでした(まだ同じエラーが発生します) 。 [〜#〜] cntlm [〜#〜]を試してみたが、役に立たなかった。

また、私のプロキシは上記のように認証を必要とします。私はこの問題についてさらに調査を行っており、APMのプロキシ設定とGitHubのプロキシ設定の組み合わせである可能性があります。次の関連記事を参照してください。

理想的には、完全なマシン構成や壊れやすいマルチ構成ファイルのセットアップを必要としないソリューションが欲しいです。

19
xDaevax

.pacファイルは、ブラウザを実行して、使用するプロキシをプログラムで決定できる単なるJavaScriptファイルです。これは、ネットワークが異なるリソースにアクセスするために異なるプロキシを使用する必要がある場合に役立ちます。そのファイルを開くと、おそらくそのファイルの意味を理解し(結局のところJavaScriptだけです)、ネットワークがWebへの一般的なアクセスに使用しているプロキシを特定できます。これを.apmrcファイルでプロキシとして設定すると、機能するはずです。

プロキシがなんらかの認証を必要とする場合、状況はさらに複雑になります。それがあなたの問題であれば、私に知らせてください。私はそれに対処した経験があります。


Authenticating

OK、認証する必要があります。次に、あなたの状況はおそらく私のものとかなり似ています。あなたはCNTLMを正しく使用しています。適切に構成する必要があります。 cntlm.iniファイルは次のようになります。

Username    <your windows username>
Domain      <your domain name>
Password    <leave this blank>
PassLM      <get this by running `cntlm -H` on the command line>
PassNT      <get this by running `cntlm -H` on the command line>
PassNTLMv2  <get this by running `cntlm -H` on the command line>

Proxy       <Your proxy address like ip_address:port>
Proxy       <If you have multiple proxies, you may list them each on a new line>

NoProxy     localhost, 127.0.0.*, <any others that should bypass the proxy>

Listen      <a local port to listen on (I use 53128)>

このファイル(cntlm.ini)について知っておくべき少しおかしいことがあります。 cntlmをインストールすると、プログラムのフォルダーに含まれますが、実際に機能するのは、C:\Program Files (x86)\cntlm\cntlm.iniにある場合のみです。 cntlmディレクトリ内のPROGRAMFILESフォルダーにあるべきだと言う方がおそらくより正確であるため、これが事実であることを再確認する必要があります。

とにかく、それをすべて行ったら、cntlm(readmeの手順)を開始できます。次に、実際にローカルプロキシを使用するようにapmを構成する必要があります。 .apmrcは次のようになります。

http-proxy = http://localhost:<port # from cntlm.ini>
https-proxy = https://localhost:<port # from cntlm.ini>
strict-ssl = false

これで十分だと思うかもしれませんが、役立つことが他にもあります。 npmhttpsではうまく機能しないことが判明するまで、cntlmで多くの問題が発生したため、レジストリをhttps://registry.npmjs.org/からhttp://registry.npmjs.org/に変更する必要がありました。 apmも同じレジストリを使用するため、私もそれを変更することにしました。

apm config set registry http://registry.npmjs.org/

そして、Atomのconfig.csonに移動してcore.proxyhttp://localhost:<port # from cntlm.ini>に設定することも役立つようです。

そして、結局のところ、うまくいくことを期待しています。クールで問題がなく、Atomが適切に機能している場合、他のほとんどの(すべての?)アプリ(npm、gitなど)を適切に機能させるために実行したいことがもう1つあります。コマンドラインで、次を実行します。

netsh winhttp set proxy localhost:<port # from cntlm.ini> "localhost, 127.0.0.*"

これにより、他のほとんど(すべて?)のアプリを1つずつ構成する手間が省けます。何らかの理由で、apmを特別に構成する必要があります。何らかの理由でwinhttp設定を使用していないと思いますか?その答えはわかりません。

新しい情報2016/03/18

私は最近、いくつかのアプリのためにあなたがしなければならないかもしれないもう一つのことがあることに気付きました。次の環境変数もローカルプロキシに設定する必要があります。

HTTP_PROXY
HTTPS_PROXY
FTP_PROXY
http_proxy
https_proxy
ftp_proxy

大文字と小文字の両方を設定するのはやり過ぎのように思えるかもしれませんが、最近MSys2をインストールしたところ、小文字バージョンを探すことがわかったので、すべてを設定するだけで、多少の手間を省くことができます。

6
Okonomiyaki3000

ファイルをダウンロードしてくださいhttp://internal-server-name/sub-dir/file-name.pacを入力してテキストエディタで開き、その中の実際のプロキシアドレスとポートを検索します(PROXYキーワードの近くにあります)。

4
flyisland

これをnpmと.npmrcの問題に使用しました

c:\users\%user%\.atom\.apmrc(存在しない場合は追加して)

proxy=http://YOUR-DOMAIN**%5C**USER-NAME:PASSWORD@YOUR-PROXY-SERVER:PORT/
0
xzorkiix