英語 | 简体中文
AJAX リクエストの応答を変更する Chrome 用の拡張プラグイン。
主な特徴:
XMLHttpRequest の応答をインターセプトして変更し、404 ステータス リクエストを含むリクエストを取得します。
正規表現と HTTP リクエスト メソッドに基づいてリクエストを照合します。
応答結果を JSON または JavaScript 形式で編集し、mock.js 構文をサポートします。
引数パラメータから元のリクエスト情報にアクセスすることで、JavaScript プログラミングで模擬シナリオを簡単に作成できます。
DevTools の新しい U-Network パネルにより、リクエストを迅速にインターセプトし、応答結果を変更できます。
リクエスト URL、リクエスト ヘッダー、本文の変更をサポートします。
ルール設定のインポート/エクスポートをサポートします。
グループとルールの順序の調整をサポートします。
設定ページを開くためのピクチャー・イン・ピクチャー・オプションをサポートします。
declarativeNetRequest を使用したネットワーク構成ページのインターセプトをサポートします。
https://chrome.google.com/webstore/detail/ajax-interceptor-tools/kphegobalneikdjnboeiheiklpbbhncm
ビデオ: https://www.youtube.com/watch?v=HPtQO0Fyb7I
応答エディターには、次のオプションがあります。
JSON/JavaScript 形式を使用して応答結果を編集します。
応答エディターがクリアされている場合は、元の応答結果を転送します。
例:
{ "status": 200, "response": "OK" }
JavaScript アプローチを使用して応答結果を編集する場合、 new Function(responseText)
を使用して関数を生成および実行でき、応答結果は関数の戻り値になります。
例:
const data = [];for (let i = 0; i < 10; i++) { data.push({ id: i });}return { 「ステータス」: 200、 "応答": データ}
例:
const data = Mock.mock({'list|1-10': [{'id|+1': 1}]});return { 「ステータス」: 200、 "応答": データ}
これにより、次のようなデータが生成されます。
// ==> { "list": [ { "id": 1 }, { "id": 2 }, { "id": 3 } ] }
例:
let { メソッド、ペイロード、originalResponse } = 引数[0];if (メソッド === 'get') { // 何かをする}if (ペイロード) { // { queryStringParameters,requestPayload } // 何かをする}return { 「ステータス」: 200、 "応答": 元の応答};
[リクエスト] パネルでは、リクエスト URL、メソッド、ヘッダー、およびペイロードを変更できます。
以下の例では、一致した/auth/login
リクエスト パスは/auth/login2
に置き換えられ、リクエスト メソッドは POST に変更されます。 DevTools を開いて、[ネットワーク] パネルで変更されたリクエストを確認できます。
以下の例では、リクエストのContent-Type
ヘッダーがapplication/json
に置き換えられます。
以下の例では、 test: test123
がリクエスト ペイロードに追加されます。 DevTools を開いて、[ネットワーク] パネルで変更されたリクエスト本文を確認できます。
chrome.declarativeNetRequest
を通じて指定された宣言ルールを使用したネットワーク リクエストのブロックまたは変更をサポートします次のルールは、ドメイン「react.docschina.org」から送信され、URL に「main」部分文字列を含むすべてのスクリプト リクエストをブロックします。
[ {"id" : 1,"priority": 1,"action" : { "type" : "block" },"condition" : { "urlFilter" : "main", "domains" : ["react.docschina. org"]、"resourceTypes" : ["スクリプト"]} }]
次のルールは、ドメイン「react.docschina.org」から送信され、URL に「main」部分文字列を含むすべてのスクリプト リクエストを「new.react.docschina.org」にリダイレクトします。
[ {"id": 1,"priority": 1,"action": { "type": "redirect", "redirect": {"transform": { "host": "new.react.docschina.org", "スキーム": "https"} }},"条件": { "urlFilter": "メイン", "ドメイン" : ["react.docschina.org"], "リソースタイプ": ["スクリプト"]} }]
詳細については、ドキュメントを参照してください。 declarativeNetRequest ドキュメント
[ {// 唯一の承認の id。必ず入力してください。>= 1"id": 1,// 承認値は 1。指定される場合は、>= 1"priority": 1,/ / この例に一致するときに実行すべき操作"action": { // 実行される操作の種類。 block、redirect、allow、upgradeScheme、modifyHeaders、allowAllRequests "type": "redirect", // 再方向の実行方法を説明します。再方向の実行のみに有効です。 "redirect": {/ / 再方向ウェブ址。JavaScript への再方向を許可しません"url": "",// 実行される URL 変換。"transform": { // 要求された新しいソリューション。許可される値は "http"、"https"、"ftp"、および "chrome 展名" です。 "scheme": "https", // 要求された新しい主機。 "host": "new.react.docschina.org", // 要求された新しいパス。空の場合は、パスがある場合は削除されます。 "path": "", // 要求された新しいポート。空の場合は、削除されます。 "ポート": "", // "fragment": "", // 空のセグメントが削除されます。 "query": "", // クエリ値を追加、削除、または置換します。 ": {//追加または置換する追加または置換の列表"addOrReplaceParams": [ {"key": "","value": "",// の場合true の場合、セキュリティ チェックが存在する場合にのみ、セキュリティ チェックが置き換えられます。 false の場合、セキュリティが不足している場合は、セキュリティ チェックが追加されます。 "replaceOnly": false, }],// 削除されるセキュリティ チェック"removeParams": [] の列表。 "extensionPath" }, // 要求された新しいユーザー名 "username": "", // 要求された新しい秘密。 ": "",// 指定了 regexFilterつまり、 regexSubstitution の内部では、 regexFilter の最初の一致する数字 (1 ~ 9) を使用して、対応するキャプチャ グループに置き換えることができます。 。。 "regexSubstitution": "" }, // 変更を要求するためのリクエスト マークです。 RuleActionType が “modifyHeaders” の場合にのみ有効です。 "requestHeaders": [{ // 変更を要求するリクエスト マーク"header": "", // append、set、remove "operation": "", // タグの新しい値。 および set 操作の append 指定が必要です。 "value": "",} "responseHeaders": [{ // 変更されるヘッダの名前。 "header": "", // 要マークに対して実行される操作。追加、設定、削除"operation": "", // 追加の新しい値。 set operation を指定する必要があります。 "value": "",} ],},// この条件の実行を開始する "condition": { // ネットワーク要求 URL の一致を求めるモード "urlFilter": "main", // ネットワーク要求 URL の一致を示す正しい表形式。これは RE2 文法に準拠します。 "regexFilter": "", // 注: 只能指定 or regexFilter の中の urlFilter 。 // この指定は、列表ドメインからのネットワーク要求のみに適合します。 Chrome 101 以降では、initiatorDomains "domains" : ["react.docschina.org"], // 【new】 】クローム101+この規則は、リスト initiatorDomains からのリクエストにのみ適合します。このリストを省略した場合、この規則はすべてのドメインからのリクエストに適用されます。 //この規定は、リストテーブルのexcludedDomainsからのソースのネットワークリクエストを不一致にします。 "excludedInitiatorDomains": [""], // 空列テーブルの使用を許可しません。 "main_frame" 、「サブフレーム」、「スタイルシート」、 「script」、「image」、「font」、「object」、「xmlhttprequest」、「ping」、「csp_report」、「media」、「websocket」、「webtransport」、「webbundle」、または「other」「resourceTypes」 ": ["script"], // ネットワーク要求がそのソース ドメインの最初の方式であることを指定します。省略された場合は、すべての要求が受け入れられます。 firstParty、 thirdParty 中間 "domainType": "", // 一致しない要求メソッドのリスト。 指定されない場合は、すべての要求メソッドと一致します。 "excludedRequestMethods": "", // "connect"、"delete"、"get"、"head"、"options"、"patch" 、"post"、"put"、"other" // 一致しないリソースの種類の列表。指定および除外されたResourceTypes中の 1 つの resourceTypesそれらを指定しない場合、「main_frame」を除くすべてのリソース タイプが除外されます。 "main_frame"、"sub_frame"、"stylesheet"、"script"、"image"、"font"、"object"、"xmlhttprequest"、"ping"、"csp_report"、"media"、"websocket"、"webtransport" "、"webbundle"、"other" // 规则应適合 tabs.Tab.id "tabIds": [], // 一致しない tabs.Tab.id のリスト。列表。 tabs.TAB_ID_NONE ID は、ソースからの選択パッケージの要求ではありません。制限の指定がサポートされています。 "excludedTabIds": [], // urlFilter または regexFilter (標準で指定) が大小書き込みを区別するかどうか。 "isUrlFilterCaseSensitive": true, // 列表内の当ドメインの requestDomainsこのリストを省略した場合、この規定はすべてのドメインからの要求に適用されます。 "requestDomains": [], // HTTP の一致を求めることができます。 "requestMethods": [], // 注意: requestMethods の指定条件も非 HTTP(s) 要求を除外する可能性がありますが、excludedRequestMethods は指定されません。} }]
MITライセンス。