HTTPの送信リクエストをキャプチャする方法


解説

状況によっては、トラブルシューティングのためにwebデバッグ プロキシを使用してWebサイトのHTTPトラフィックをキャプチャし調査しなければならない場合があります。

このようなプロキシの好例がFiddlerです。

Fiddlerは現在ログインしているWindowsユーザーのプロキシ サーバー設定を変更して、Webブラウザーや他のアプリケーションからのトラフィックをキャプチャできるようにします。具体的には、システムのプロキシ設定が127.0.0.1:8888のアドレスに変更されます。

しかし、ASP.NETサイトなどのアプリケーションは、異なるユーザー アカウントと独自のプロキシ設定を使用するため、この変更には影響されません。

この記事では、ASP.NET Webサイトとアプリケーションが使用しているWebサービス間での、Webサービスの呼び出しをキャプチャできるようにするために、ASP.NET Webサイトがプロキシを使用するように構成する方法について説明します。

解決策

ASP.NETアプリケーションがwebサービスの呼び出しをウェブ デバッグ プロキシを通じて送信するように構成するには、以下の手順に従ってください。

  1. global.asaxファイルを作成または更新し、全てのリモート証明書を正当なものと扱うようにします。
    <%@ Import Namespace="System.Net" %>
    <%@ Import Namespace="System.Net.Security" %>
    <script>
        public void Application_Start()
        {
            ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(delegate { return true; });
        }
    </script>
  2. web.configファイルを編集し、プロキシ設定をセットします。
    例:
    <system.net>
      <defaultProxy useDefaultCredentials="true" enabled="true">
        <proxy usesystemdefault="false" proxyaddress="http://127.0.0.1:8888" bypassonlocal="false" autoDetect="false"/>
      </defaultProxy>
    </system.net>

    各属性の詳細な説明につきましては、Microsoft社のドキュメントをご参照ください。
    https://learn.microsoft.com/ja-jp/dotnet/framework/configure-apps/file-schema/network/proxy-element-network-settings
    https://learn.microsoft.com/ja-jp/dotnet/framework/configure-apps/file-schema/network/defaultproxy-element-network-settings

  3. webデバッグ プロキシがHTTPSトラフィックをキャプチャできることを確認します。例えば、Fiddler Classicで機能を有効化する方法については、以下のページをご参照ください。
    https://docs.telerik.com/fiddler/configure-fiddler/tasks/decrypthttps

  4. トラフィックがキャプチャされたら、更なる調査や分析のためにキャプチャを保存します。例えば、Fiddler Classicでセッション アーカイブZip(.SAZ)ファイルとして保存する方法については、以下のページをご参照ください。
    https://docs.telerik.com/fiddler/save-and-load-traffic/tasks/createsaz

  5. Publishing Serviceへのリクエストをキャプチャするには、追加の変更を行う必要がある点にご注意ください。すなわち、StandaloneまたはContent Managementロールの構成をパッチしてプロキシを有効化する必要があります。
    例:
    <?xml version="1.0" encoding="utf-8"?>
    <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:set="http://www.sitecore.net/xmlconfig/set/" xmlns:role="http://www.sitecore.net/xmlconfig/role/">
        <sitecore role:require="Standalone or ContentManagement">
            <settings>
                <setting name="PublishingService.ProxyAddress" set:value="http://localhost:8888" />
                <setting name="PublishingService.ProxyEnabled" set:value="false" />
            </settings>
        </sitecore>
    </configuration>

上記の手順はトラブルシューティングの目的のためだけに実施し、リクエストのキャプチャが必要なくなった段階で、必ず変更を差し戻してください。