雑多に技術メモと他色々

主に自分用な技術メモが多くなる気がする。他色々が書かれるかどうかは不明。

Windowsの認証proxyが必要な環境でcurlしたい時の設定

なんでproxy設定されてるような環境から打つの?は疑問に思わない方針で。
proxyで認証しないと外部NWに出ていけないような社内PCなどから、おもむろにcurl打ちたい場合の手順。

curl環境の用意

何かインストールして実行 ※bash形式

大体はこっちのほうが便利。
(セキュリティ的には良くないが)Windowsのバージョンアップが追いついてなかったり、単純にLinuxライクに他のbashコマンドも一緒に打てる環境が欲しい場合。
とりあえずGit Bash入れれば大体は事足りる。下記からGit for Windowsをインストールして、付属で一緒に入れる形。
Git for Windows

WSLのUbuntuを入れればもっと色々できるが、ここでは割愛。

Windows標準で実行

今だとWindows標準でcurl入ってるんですね。。。知らなかった。
Windows 10 Ver.1803(RS3)以降であれば、標準で利用することもできる。
コマンドプロンプトPowerShellで実行可能。とりあえずcurlだけで良い場合や、Windows式のコマンドに慣れてる方なら。

proxyの設定

コマンドに直接指定する

コマンド例はこんな感じ。

$ curl http://destination.examlpe.com -x http://user:pass@proxy.example.com:8080

とはいえ、毎回コマンドに打ち込むのは面倒なので、常用する場合は後述のように設定しておきたい。
中身は下記の通り。それぞれ自環境に合わせて設定すること。

設定項目 コマンド例のどこか
接続先URL http://destination.examlpe.com
proxy認証ユーザID user
proxy認証パスワード pass
proxyホスト proxy.example.com
proxyポート 8080

※ proxyホストはIPでもOK。(127.0.0.1等々…)
※ パスワードに記号を含む場合は、URLエンコードが必要

設定の永続化:bash形式の設定方式

環境変数に指定

HOME直下の.bashrcなどに環境変数を指定すればOK。
curl以外のコマンド群にも反映されるようになるので、色々使う場合はこっちで設定しておいた方が楽。

とりあえず試しに設定する場合。(bashのセッション終了時にリセットされる)

$ export HTTP_PROXY=http://user:pass@proxy.example.com:8080
$ export HTTPS_PROXY=http://user:pass@proxy.example.com:8080

上記設定後にproxy設定無しのcurlコマンド打って通るなら、HOME直下の.bashrcなどにそのままexportコマンドを書く。

$ cd
$ echo "export HTTP_PROXY=http://user:pass@proxy.example.com:8080" >> .bashrc
$ echo "export HTTPS_PROXY=http://user:pass@proxy.example.com:8080" >> .bashrc

※ viで編集でもなんでもご自由に。

curl設定ファイルに指定

curl用の設定ファイルである.curlrcに設定することも可能。とりあえずこれもHOMEに置いておけば良いらしい。
フォーマットは下記の通り。

$ cd
$ echo "proxy=http://user:pass@proxy.example.com:8080" >> .curlrc

専用設定だし、httpとhttpsを分ける必要がないあたりは便利。

設定の永続化:Windows標準curl用の設定方式

環境変数に指定

とりあえず試しに設定する場合。(プロンプトやPowerShell終了時にリセットされる)

$ SET HTTP_PROXY=http://user:pass@proxy.example.com:8080
$ SET HTTPS_PROXY=http://user:pass@proxy.example.com:8080

上記設定後にproxy設定無しのcurlコマンド打って通るなら、永続化は下記。※ Windows環境変数設定に入る

$ SETX HTTP_PROXY=http://user:pass@proxy.example.com:8080
$ SETX HTTPS_PROXY=http://user:pass@proxy.example.com:8080
curl設定ファイルに指定

bash形式での.curlrcと同じように専用設定も可能。
Windowsの場合はファイル名を_curlrcとする必要がある模様。
フォーマットはbash形式の場合と一緒で、置き場所は環境変数CURL_HOMEHOMEcurl.exeと同階層の優先順位で判断される。