английский | 简体中文
Плагин расширения для Chrome, изменяющий ответ на запросы AJAX.
Основные особенности:
Перехватывайте и изменяйте ответы XMLHttpRequest и запросы выборки, включая запросы состояния 404.
Сопоставление запросов на основе регулярных выражений и методов HTTP-запросов.
Редактируйте результаты ответа в формате JSON или JavaScript с поддержкой синтаксисаock.js.
Легко создавайте макеты сценариев в программировании на JavaScript, получая исходную информацию запроса из параметра аргументов.
Новая панель U-Network в DevTools для быстрого перехвата запросов и изменения результатов ответа.
Поддержка изменения 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 (пусть я = 0; я < 10; я++) { data.push({ id: я });}return { "статус": 200, «ответ»: данные}
Пример:
const data = Mock.mock({'list|1-10': [{'id|+1': 1}]}); return { "статус": 200, «ответ»: данные}
Это создаст данные, подобные следующим:
// ==> { "list": [ { "id": 1 }, { "id": 2 }, { "id": 3 } ] }
Пример:
let { метод, полезная нагрузка, исходный ответ } = аргументы[0];if (метод === 'get') { // делаем что-то}if (payload) { // { queryStringParameters,requestPayload } // делаем что-то}return { "статус": 200, «ответ»: originalResponse};
На панели «Запрос» вы можете изменить URL-адрес запроса, метод, заголовки и полезную нагрузку.
В приведенном ниже примере любой соответствующий путь запроса /auth/login
будет заменен на /auth/login2
, а метод запроса будет изменен на POST. Вы можете открыть DevTools и проверить измененный запрос на панели «Сеть».
В приведенном ниже примере заголовок Content-Type
в запросе будет заменен на application/json
.
В приведенном ниже примере test: test123
будет добавлен к полезным данным запроса. Вы можете открыть DevTools и проверить измененное тело запроса на панели «Сеть».
chrome.declarativeNetRequest
Следующее правило заблокирует все запросы сценариев, поступающие из домена «react.docschina.org» и содержащие подстроку «main» в URL-адресе.
[ {"id": 1, "priority": 1, "action": { "type": "block" }, "condition": { "urlFilter": "main", "domains": ["react.docschina. org"], "resourceTypes" : ["script"]} }]
Следующее правило перенаправит все запросы сценариев, поступающие из домена «react.docschina.org» и содержащие подстроку «main» в URL-адресе, на «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": ["сценарий"]} }]
Для получения более подробной информации обратитесь к документации. Документация декларативнойнетрекуест
[ {// 唯一标识规则的 id。必填项,应为 >= 1"id": 1,// 规则优先级。默认值为 1。指定时,应为 >= 1"приоритет": 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": "",// 如果为правда, 则仅当查询键已存在时,才会替换查询键。否则,如果缺少密钥,也会添加密钥。默认为false。"replaceOnly": false, }],// 要删除的查询键的列表。"removeParams": [] }, // 请求的新用户名 "username": "", //请求的新密码。 "пароль": "",},// 相对于扩展目录的路径。应以“/”开头。"extensionPath": "",// 对于指定了regexFilter 的第一个匹配项将被替换为此模式。在 regexSubstitution内部,可以使用反斜杠转义的数字(1 и 9)来插入相应的捕获组。� 指的是整个匹配文本。"regexSubstitution": "" }, // 要为请求修改的请求标头。仅当 RuleActionType 为 “modifyHeaders”时才有效。 "requestHeaders": [{ // 要修改的标头的名称。 "header": "", // 要对标头执行的操作。 add、set、remove "operation": "", / /标头的新值。必须为 和 set 操作 add 指定。 "value": "",} ], // 要为请求修改的响应标头。仅当 RuleActionType 为 «modifyHeaders» 时才有效。 «responseHeaders»: [{ //要修改的标头的名称。 "header": "", // 要对标头执行的操作。добавление、set、удалить "operation": "", // 标头的新值。必须为和 set 操作 add 指定。 "value": "",} ],},// 触发此规则的条件"condition": { // 与网络请求 URL 匹配的模式 "urlFilter": "main", // 与网络请求 URL匹配的正则表达式。这遵循 RE2 语法。 "regexFilter": "", // 注: 只能指定 или regexFilter 中的一个 urlFilter 。 //该规则将仅匹配源自 列表 domains 的网络请求。 自 Chrome 101 起已弃用,改用 initiatorDomains "domains" : ["react.docschina.org"], // 【new】Chrome 101+ 该规则将仅匹配源自 列表 initiatorDomains的网络请求。如果省略该列表,则该规则将应用于来自所有域的请求。不允许使用空列表。 "initiatorDomains" : ["react.docschina.org"], // Исключенные домены 的网络请求。 自 Chrome 101 起已弃用,改用ExcludedInitiatorDomains "excludedDomains" : [""], // 【new】Chrome 101+ 该规则将不匹配源自 列表 ExcludedInitiatorDomains的网络请求。如果列表为空或省略,则不排除任何域。这优先于 initiatorDomains 。 "excludedInitiatorDomains": [""], // "main_frame", "sub_frame", "таблица стилей", "script", "image", "font", "object", "xmlhttprequest", "ping", "csp_report", "media", "websocket", "webtransport", "webbundle" или "other" "resourceTypes": ["script"], // Первая сторона, третья сторона. "domainType": "", // Исключенные методы RequestMethods 中的一个 requestMethods 。如果未指定它们,则匹配所有请求方法。 "excludedRequestMethods": "", // "connect"、"delete"、"get"、"head"、"options"、"patch" 、"post"、"put"、"other" // Исключенные ResourceTypes 中的一个 resourcesTypes «excludedResourceTypes»: «», // "main_frame"、"sub_frame"、"таблица стилей"、"script"、"image"、"font"、"object"、"xmlhttprequest"、"ping"、"csp_report"、"media"、"websocket"、"webtransport "、"webbundle"、"другое" //规则应匹配 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 则不会。} }]
Лицензия МТИ.