3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Fiddlerを利用してHTTPリクエストヘッダにプロキシの認証情報を追加する

Last updated at Posted at 2019-10-21

認証プロキシ配下のPCでも外部と通信したい

認証プロキシ配下のPCでアプリケーションを利用するとき、外部との通信にはプロキシの設定が必要です。

ChromeやFirefoxのようなメジャーなアプリケーションは、プロキシを設定する項目がありますが、ツールによっては設定項目がないものがあります。
というか、ないことのほうが多いです。

そういう場合には、 Fiddler を利用してHTTPリクエストヘッダにプロキシの認証情報を追加する方法が便利です。

Chocolatey をインストールする

Chocolateyがインストールされていない場合は、インストールしましょう。

認証プロキシは以下の場合、以下の記事がとてもわかりやすいです。
認証プロキシ環境下でのchocolateyインストール

Fiddler をインストールする

以下のコマンドでFiddlerをインストールします。

choco install -y fiddler

インストールできたらFiddlerを起動します。

キャプチャ対象を Non-Browser に変更する

Fiddlerの左下の Capturing の右が All Processes となっていたら、 Non-Browser に変更しておきます。

image.png

これをやっておくと、FirefoxやChrome等のWebブラウザの通信情報が表示されなくなり、見やすくなります。

CustomRule.js を編集する

Rules > Customize Rules をクリックし、 CustomRule.js を開きます。

image.png

class Handlers という箇所があるので、そこに以下のコードを追加します。

class Handlers
{
    public static RulesOption("Add Proxy-Authorization")
    var m_AddProxyAuthorization: boolean = false;

こんな感じになります。

image.png

下のほうにスクロールしていくと、 OnBeforeRequest という関数があるので、以下のコードを追加します。

static function OnBeforeRequest(oSession: Session) {
    if (m_AddProxyAuthorization) {
        oSession.oRequest["Proxy-Authorization"] = "Basic <プロキシの認証情報>";
    }

<プロキシの認証情報> の部分は、 <ユーザー名>:<パスワード> を Base64 でエンコードした文字列になります。

例えば、

  • プロキシのユーザー名: proxyuser
  • プロキシのパスワード: proxypass

の場合、Base64でエンコードした文字列は cHJveHl1c2VyOnByb3h5cGFzcw== なので、以下のようになります。

oSession.oRequest["Proxy-Authorization"] = "Basic cHJveHl1c2VyOnByb3h5cGFzcw=="

Base64 でのエンコードの方法は以下をご覧ください。

シェルスクリプトで Base64 エンコードする

MacやLinux等の場合、以下のコマンドでBase64のエンコードができます。

$ echo -n 'proxyuser:proxypass' | base64
cHJveHl1c2VyOnByb3h5cGFzcw==

コマンドプロンプトで Base64 エンコードする

Windowsの場合、以下のコマンドでBase64のエンコードができます。
(TEMPフォルダに中間ファイルが生成されます)

> echo proxyuser:proxypass | more > %temp%\src.txt && certutil -f -encode %temp%\src.txt %temp%\dest.txt && type %temp%\dest.txt
-----BEGIN CERTIFICATE-----
cHJveHl1c2VyOnByb3h5cGFzcyANCg0K
-----END CERTIFICATE-----

コマンドの詳しい解説は、別に記事にまとめてありますので、ぜひご覧ください。
コマンドプロンプトだけでBase64エンコードをする

最終的に OnBeforeRequest はこんな感じになります。

image.png

この状態で CustomRule.js を保存します。

Add Proxy-Authorization を有効にする

image.png

Rules > Add Proxy-Authorization を有効にします。すると、HTTP通信にプロキシ認証情報が付加されるようになります!

さいごに

以下の記事を参考にさせていただきました。ありがとうございました。

3
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?