92

HTTP 応答本文を変更する Chrome 拡張機能を作成することは可能ですか?

Chrome Extension APIsを調べましたが、これを行うものは見つかりませんでした。

4

6 に答える 6

55

通常、標準の Chrome 拡張 API を使用して HTTP 要求の応答本文を変更することはできません。

この機能は104058: WebRequest API: allow extension to edit response bodyでリクエストされています。問題にスターを付けて、更新の通知を受け取ります。

既知XMLHttpRequestの. _ _ XMLHttpRequestXMLHttpRequest オブジェクトが Chrome の組み込みオブジェクトに完全に準拠していることを確認してください。そうしないと、XMLHttpRequestAJAX を多用するサイトが機能しなくなります。

chrome.webRequestまたはchrome.declarativeWebRequestAPI を使用して、要求をdata:-URIにリダイレクトすることもできます。XHR アプローチとは異なり、リクエストの元のコンテンツは取得できません。実際には、リダイレクトは実際のリクエストが送信される前にしか実行できないため、リクエストがサーバーにヒットすることはありません。また、リクエストをリダイレクトするmain_frameと、ユーザーにはdata:リクエストされた URL ではなく -URI が表示されます。

于 2013-08-19T14:16:58.340 に答える
1

Chrome は、応答本文を変更するための API を提供していません。これはChrome WebRequest APIDeclarativeNetRequest APIでは不可能です。

デスクトップ アプリの使用 - 任意の要求タイプの応答を変更する

Requestly デスクトップ アプリは、 HTTP 応答ルールの変更を作成するこの機能を提供し、それを任意のブラウザーで使用できます。こちらがデモビデオです。これを行う手順は次のとおりです

  1. Requestly デスクトップ アプリをインストールし、接続済みアプリからブラウザーを起動します
  2. HTTP ルールに移動し、HTTP 応答ルールの変更を作成します。
  3. URL パターンを定義し、カスタム レスポンスを定義します

カスタム レスポンスは 3 つの方法で定義できます

  1. 静的コンテンツ - 必要な固定応答
  2. Progamatic Override - 既存のサーバー応答で何かをオーバーライドする必要がある場合
  3. ファイルからロード - ローカル ファイルで応答を定義し、ここにマップします。

これだけでなく、このアプローチを使用して HTTP ステータス コードを 400 または 500 に変更することもできます。

スクリーンショットは次のとおりです - JS コードを使用して既存の応答をオーバーライドする例

プログラムによる HTTP 応答のオーバーライド

Requestly Chrome 拡張機能の使用 - XHR/fetch リクエストのみのレスポンスを変更する

Requestly Chrome 拡張機能を使用して、XHR/fetch のみによってトリガーされる HTTP リクエストの応答を変更することもできます。Chrome拡張機能を使ったデモ動画はこちら

Chrome は API を提供しないため、Requestly は XHR をオーバーライドしてプロトタイプ オブジェクトをフェッチし、カスタム実装をフックします。Requestly 応答変更ルールで定義した応答が得られます。詳細については、 docsを参照してください。

PS: Requestly をビルドしました

于 2022-02-24T10:09:51.680 に答える