ホームページ >ウェブフロントエンド >jsチュートリアル >Chrome 拡張機能内で HTTP 応答本文をキャプチャするにはどうすればよいですか?

Chrome 拡張機能内で HTTP 応答本文をキャプチャするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-25 03:42:02326ブラウズ

How do I capture HTTP response bodies within a Chrome extension?

Chrome 拡張機能で HTTP レスポンスボディをキャプチャする方法

概要:

Chrome 拡張機能HTTP リクエストに関する情報の取得は、ネットワーク トラフィックの分析や応答の変更など、多くのタスクに不可欠です。リクエストボディにアクセスするのは簡単ですが、レスポンスボディを取得するのはより困難です。

HTTP レスポンスボディの取得:

当初、Chrome 拡張機能からレスポンスボディに直接アクセスすることはほとんど不可能でした。不可能。ただし、解決策は、Chrome DevTools プロトコルの Network.getResponseBody API を利用することです。

Network.getResponseBody API の使用:

Network.getResponseBody API を使用して応答本文をキャプチャするには、次の手順に従います。

  1. デバッグを有効にする: chrome.debugger.attach() を使用して Chrome デバッガーを現在のタブに接続し、 Network.enable() コマンドを有効にします。
  2. 応答イベントをリッスン: 応答を受信するとトリガーされる Network.responseReceived イベントをサブスクライブします。
  3. 応答本文の取得: イベントを受信したら、応答の requestId を指定して Network.getResponseBody コマンドを送信し、その本文を取得します。

コード例:

<code class="javascript">chrome.tabs.query(
  { currentWindow: true, active: true },
  function (tabArray) {
    let currentTab = tabArray[0];
    chrome.debugger.attach(
      { tabId: currentTab.id },
      "1.0",
      onAttach.bind(null, currentTab.id)
    );
  }
);

function onAttach(tabId) {
  chrome.debugger.sendCommand({ tabId: tabId }, "Network.enable");
  chrome.debugger.onEvent.addListener(allEventHandler);
}

function allEventHandler(debuggeeId, message, params) {
  if (currentTab.id != debuggeeId.tabId) {
    return;
  }
  if (message == "Network.responseReceived") {
    chrome.debugger.sendCommand(
      { tabId: debuggeeId.tabId },
      "Network.getResponseBody",
      { requestId: params.requestId },
      function (response) {
        // Access the response body in 'response.body'
        // Close the debugger (optional)
        chrome.debugger.detach(debuggeeId);
      }
    );
  }
}</code>

注:

この API を含むデバッガー機能は、バックグラウンド スクリプトでのみ使用できます。この手法は、ページ コンテキスト内で実行される コンテンツ スクリプト では使用できません。

以上がChrome 拡張機能内で HTTP 応答本文をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。