@Steve Robertsの回答を拡張します。
ユーザー名の形式は「ドメイン\ユーザー名」です。プロキシ構成にスラッシュを含めると、スラッシュが表示されます。だからこれを入力してください:
npm config set proxy "http://domain\username:password@servername:port/"
domain\user
文字列をURLエンコードする必要もありましたが、ユーザー名の中にスペースがあるため+
、スペースURLエンコードをエンコードするためにを配置しましたが、二重にエンコードされます%2B
(これは、プラス記号のURLエンコードですが、URLスペースのエンコーディングは%20
)なので、代わりに次のようにする必要がありました。
npmコマンド
// option one
// it works for some packages
npm config set http_proxy "http://DOMAIN%5Cuser+name:password@x.x.x.x:port"
npm config set proxy "http://DOMAIN%5Cuser+name:password@x.x.x.x:port"
// option two
// it works best for me
// please notice that I actually used a space
// instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://DOMAIN%5Cuser name:password@x.x.x.x:port"
npm config set proxy "http://DOMAIN%5Cuser name:password@x.x.x.x:port"
// option two (B) as of 2019-06-01
// no DOMAIN
// instead of URL encode it with '+', '%20 ' OR %2B (plus url encoded)
npm config set http_proxy "http://user name:password@x.x.x.x:port"
npm config set proxy "http://user name:password@x.x.x.x:port"
npm構成のトラブルシューティング
npm config list
上で設定した解析済みの値を取得するためにを使用しました。これが、二重エンコーディングについて知った方法です。変だ。
基本的に、次の要件を把握する必要があります。
- された
DOMAIN
文字列は、認証に必要な
- 特殊文字をエンコードする必要がありますか?
よろしく。
WINDOWS環境変数(CMDプロンプト)
更新
上記の設定でも、内部的にRequest-Simplified HTTPクライアントを使用してデータをダウンロードする一部のパッケージ/スクリプトに問題があったことがわかりました。したがって、上記のreadmeで説明したように、環境変数を指定できますに、コマンドラインでをてプロキシを設定すると、Requestはそれらの値を受け入れます。
次に、環境変数を設定しようとする数日後(数日間のように)に試行した後(そしてこれを認めるのをためらいました)、最終的に次のガイドラインで成功しました。
rem notice that the value after the = has no quotations
rem - I believe that if quotations are placed after it, they become
rem part of the value, you do not want that
rem notice that there is no space before or after the = sign
rem - if you leave a space before it, you will be declaring a variable
rem name that includes such space, you do not want to do that
rem - if you leave a space after it, you will be including the space
rem as part of the value, you do not want that either
rem looks like there is no need to URL encode stuff in there
SET HTTP_PROXY=http://DOMAIN\user name:password@x.x.x.x:port
SET HTTPS_PROXY=http://DOMAIN\user name:password@x.x.x.x:port
cntlm
上記の手法を数週間使用しましたが、プロキシのセットアップを必要とするすべてのツールでパスワードを更新するオーバーヘッドに気づきました。
npmのほかに、私も使用します。
- お辞儀
- 浮浪者
- 仮想ボックス(Linuxを実行)
- apt-get [linux]
- ギット
- vscode
- ブラケット
- 原子
- TSD
cntlmのセットアップ手順
それで、私はcntlmをインストールしました。設定cntlm
はかなり簡単です、あなたはiniファイルを探します@C:\Program Files\Cntlm\cntlm.ini
- 開く
C:\Program Files\Cntlm\cntlm.ini
(管理者権限が必要になる場合があります)
- 以下のための外観
Username
とDomain
ライン(ライン8-9と思います)
コマンドプロンプトで次を実行:
cd C:\Program Files\Cntlm\
cntlm -M
cntlm -H
cygwin warning:
MS-DOS style path detected: C:\Program Files\Cntlm\cntlm.ini
Preferred POSIX equivalent is: /Cntlm/cntlm.ini
CYGWIN environment variable option "nodosfilewarning" turns off this warning.
Consult the user's guide for more details about POSIX paths:
http://cygwin.com/cygwin-ug-net/using.html#using-pathnames
Password:
取得する出力は次のようにcntlm -H
なります。
PassLM 561DF6AF15D5A5ADG
PassNT A1D651A5F15DFA5AD
PassNTLMv2 A1D65F1A65D1ASD51 # Only for user 'user name', domain 'DOMAIN'
- PassNTLMv2を使用することをお勧めします。そのため、
#
before行PassLM
を追加し、PassNT
または使用しないでください。
- からの出力を
cntlm -H
iniファイルに貼り付けてPassLM
、PassNT
およびの行を置き換えますPassNTMLv2
。または、元の行をコメントにして自分の行を追加します。
Proxy
サーバーを追加します。プロキシサーバーが何であるかわからない場合...私がしたことを実行して、AutoConfigURL
レジストリキーを探してプロキシ自動構成ファイルを探しましたHKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings
。そのURLに移動して、たまたまJavaScriptであるコードを調べます。
- オプション
Listen ####
で、####
がポート番号である行を変更することにより、cntlmがリッスンするポートを変更できます。
cntlmでNPMをセットアップする
だから、あなたはnpmをあなたのcntmlプロキシにポイントします、あなたは私のプロキシURLがこのように見えるように、私が使用localhost
したcntlmのデフォルトポートを使用できます3128
http://localhost:3128
適切なコマンドで:
npm設定セットプロキシhttp:// localhost:3128
ずっと簡単です。すべてのツールを同じURLでセットアップし、1か所でのみパスワードを更新します。人生はそれほど単純ではありません。
npm CA証明書を設定する必要があります
npmドキュメンテーションcaから
企業プロキシが独自の自己署名証明書でhttps接続を傍受している場合、これは回避する必要があります npm config set strict-ssl false
(大いにいいえ)。
基本的な手順
- ブラウザーから証明書を取得します(Chromeは正常に動作します)。Base-64エンコードされたX.509(.CER)としてエクスポートします
- 新しい行を次で置き換える
\n
.npmrc
行を追加して編集ca[]="-----BEGIN CERTIFICATE-----\nXXXX\nXXXX\n-----END CERTIFICATE-----"
問題
ときどきnpmがハングすることに気づいたので、cntlmを(場合によっては強制的に)停止して再起動します。