英语 | 简体中文
Chrome 的扩展插件,可修改 AJAX 请求的响应。
主要特点:
拦截并修改XMLHttpRequest和fetch请求的响应,包括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 (让 i = 0; i < 10; i++) { data.push({ id: i });}返回{ “状态”:200, “响应”:数据}
例子:
const data = Mock.mock({'list|1-10': [{'id|+1': 1}]});return { “状态”:200, “响应”:数据}
这将生成类似于以下内容的数据:
// ==> { "list": [ { "id": 1 }, { "id": 2 }, { "id": 3 } ] }
例子:
let { 方法,负载,originalResponse } = 参数[0];if (method === 'get') { // 做某事}if (payload) { // { queryStringParameters,requestPayload } // 做某事}返回 { “状态”:200, “响应”:原始响应};
在请求面板中,您可以修改请求 URL、方法、标头和负载。
在下面的示例中,任何匹配的/auth/login
请求路径都将替换为/auth/login2
,并且请求方法将更改为 POST。您可以打开DevTools,在Network面板中查看修改后的请求。
在下面的示例中,请求中的Content-Type
标头将替换为application/json
。
在下面的示例中, test: test123
将添加到请求负载中。您可以打开DevTools并在Network面板中检查修改后的请求正文。
chrome.declarativeNetRequest
使用指定的声明性规则来阻止或修改网络请求以下规则将阻止来自“react.docschina.org”域且 URL 中包含“main”子字符串的所有脚本请求。
[ {"id" : 1,"priority": 1,"action" : { "type" : "block" },"condition" : { "urlFilter" : "main", "domains" : ["react.docschina. org"], "资源类型" : ["脚本"]} }]
以下规则会将来自“react.docschina.org”域且 URL 中包含“main”子字符串的所有脚本请求重定向到“new.react.docschina.org”。
[ {"id": 1,"priority": 1,"action": { "type": "redirect", "redirect": {"transform": { "host": "new.react.docschina.org", "scheme": "https"} }},"condition": { "urlFilter": "main", "domains" : ["react.docschina.org"], "resourceTypes": [“脚本”]} }]
有关更多详细信息,请参阅文档。声明性NetRequest文档
[ {// 唯一标识规则的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": "", // 请求的新端口。如果为空,则清除现有端口。 "port": "", // 请求的新端口。新片段。应为空,在这种情况下,将清除现有片段;或应以“#”开头。 "fragment": "", // 请求的新查询。应为空,在这种情况下,将清除现有查询;或者应该以“?”。 "query": "", 添加 //、删除或替换查询键值对。 "queryTransform": {// 要添加或替换的查询键值对的列表"addOrReplaceParams": [ {"key": "","value": "",//如果为true,则仅当查询键已存在时,才会替换查询键。否则,如果缺少按键,另外添加按键。默认为false。"replaceOnly": false, }], //要删除的查询键的列表。"removeParams": [] }, // 请求的新用户名 "username": "", // 请求的新密码。 "password": "",},// 相对于扩展目录的路径。应以“/”开头。"extensionPath": "",//用于指定了 regexFilter 的规则,使用此替换模式。在 URL 中,regexFilter 的第一个匹配项将被替换为该模式。在regexSubstitution 内部,可以使用反斜杠转义的数字(1 到 9)来插入相应的捕获组。指的是整个匹配文本。"regexSubstitution": "" }, // 要为请求修改的请求标头只有当 RuleActionType 为“modifyHeaders”时才有效。 "requestHeaders": [{ // 要修改的标头的名称。 "header": "", // 要对标头执行的操作。追加、设置、删除 "操作": "", // 标头的新值。必须为和 set 操作追加指定。 "value": "",} ], // 要修改修改请求的响应标头。只有当 RuleActionType 为“modifyHeaders”时才有效。 "responseHeaders": [{ // 要的标头的名称。 "header": "", // 要对标头执行的操作。append、set、remove "操作": "", // 标头的新值。必须为和 set 操作追加指定。 "value": "",} ],},//触发此规则的条件"condition": { // 与网络请求 URL 匹配的模式 "urlFilter": "main", // 与网络请求 URL 匹配的正则表达式。这里遵循 RE2 语法。 "regexFilter": "", // 注:只能指定或 regexFilter 中的一个 urlFilter 。该 // 规则将仅匹配源自列表域的网络请求。 自 Chrome 101 起已弃用,改用initiatorDomains "domains" : ["react.docschina.org"], // 【新】Chrome 101+ 该规则将仅匹配侧壁列表 initiatorDomains 的网络请求。如果省略该列表,则该规则将验证来自所有域"initiatorDomains" : ["react.docschina.org"], // 规则将不匹配源自列表 exceptedDomains 的网络请求。 来自 Chrome 的请求。 101 起已弃用,改用 exceptedInitiatorDomains "excludedDomains" : [""], // 【新】Chrome 101+ 该规则将不匹配本身列表 exceptedInitiatorDomains 的网络请求。如果列表为空或省略,则不排除任何这优先于 initiatorDomains 。 "excludedInitiatorDomains": [""], //规则可以匹配的资源类型列表。不允许使用空列表。 "main_frame", "sub_frame", "stylesheet", "script", "image", "font", "object", "xmlhttprequest", "ping", "csp_report"、"media"、"websocket"、"webtransport"、"webbundle" 或 "other" "resourceTypes": ["script"], //指定网络请求是其来源域的第一方还是第三方。如果省略,则接受所有请求。firstParty、thirdParty "domainType": "", // 规则不匹配的请求方法列表。仅应指定和排除的RequestMethods 中的一个 requestMethods 。如果未指定,则匹配所有请求方法。 "excludedRequestMethods": "", // "connect"、"delete"、"get"、"head"、"options"、"patch" 、"post"、"put"、"other" // 规则不匹配的资源类型列表。仅应指定 和 exceptedResourceTypes 中的一个资源类型。如果未指定它们,则将阻止除“main_frame”之外的所有资源类型"excludedResourceTypes": "", // "main_frame"、"sub_frame"、"样式表"、"脚本"、"图像"、"字体"、"对象"、"xmlhttprequest"、"ping"、"csp_report"、"媒体"、"websocket"、"webtransport "、"webbundle"、"other" // 规则匹配 tabs.Tab.id 的列表。匹配不是原生选项卡的请求的 tabs.TAB_ID_NONE ID。不允许使用列表空。仅限会话范围的规则受支持。 "tabIds": [], // 规则不适用于 tabs.Tab.id 的列表。的 tabs.TAB_ID_NONE ID 排除不是导出选项卡的请求"excludedTabIds": [], // urlFilter 或 regexFilter (以指定者为准)是否区分大小写。默认值为 true。 "isUrlFilterCaseSensitive": true, // 仅当域与列表中的 requestDomains 网络请求匹配时,该规则才会匹配网络请求。如果省略该列表,则该规则将验证来自域中的所有请求。不允许使用空列表。 "requestDomains ": [], // 规则可以匹配的 HTTP 请求方法列表。不允许使用空列表。 "requestMethods": [], // 注意:指定 requestMethods 规则条件并排除非 HTTP(s) 请求,而指定排除的RequestMethods则不会。} }]
麻省理工学院许可证。