ホームページ  >  記事  >  ウェブフロントエンド  >  Chrome 拡張機能で HTTP 応答本文を取得する方法: 可能ですか?

Chrome 拡張機能で HTTP 応答本文を取得する方法: 可能ですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-10-24 18:38:35230ブラウズ

How to Retrieve HTTP Response Body in Chrome Extensions:  Is it Possible?

Chrome 拡張機能で HTTP 応答本文を取得する方法

Chrome 拡張機能のバックグラウンド スクリプト内で HTTP 応答本文を取得することには課題が伴います。拡張機能は chrome.webRequest.onBeforeRequest を使用してリクエスト本文にアクセスできますが、通常、レスポンス本文を取得することはできません。

この制限を克服するには、chrome.debugger API を活用する独創的なアプローチが必要です。この API を使用すると、拡張機能はブラウザのネットワーク アクティビティをデバッグし、対話できるようになります。詳細な実装は次のとおりです。

  1. chrome.tabs.query と chrome.debugger.attach を使用して現在のタブへの接続を確立します。
  2. Network.enable コマンドを送信してネットワーク デバッグを有効にします。
  3. Network.responseReceived イベントのイベント リスナーを登録します。
  4. 応答を受信したら、イベント パラメーターの requestId を指定して Network.getResponseBody コマンドを送信します。
  5. 応答本文はコマンドによって返されるため、必要に応じて処理できます。
<code class="javascript">// Attach to the current tab and enable network debugging.
chrome.tabs.query({ currentWindow: true, active: true }, tabs => {
  chrome.debugger.attach({ tabId: tabs[0].id }, '1.0', debuggeeId => {
    chrome.debugger.sendCommand({ tabId: debuggeeId.tabId }, 'Network.enable');
  });
});

// Listen for response received events.
chrome.debugger.onEvent.addListener((debuggeeId, message, params) => {
  if (debuggeeId.tabId !== currentTab.id) return;
  if (message === 'Network.responseReceived') {
    // Get the response body by sending a command.
    chrome.debugger.sendCommand({ tabId: debuggeeId.tabId }, 'Network.getResponseBody', { requestId: params.requestId }, response => {
      // The response body is now available.
      // ... Process the response body ...
    });
  }
});</code>

このメソッドを使用すると、ブラウザ ページを追加したり、追加したりせずに HTTP 応答本文を取得できます。サードパーティのサービス。終了したら、chrome.debugger.detach を使用してデバッグ セッションを閉じることができることに注意してください。

以上がChrome 拡張機能で HTTP 応答本文を取得する方法: 可能ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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