Имитация ответов

Chute может возвращать имитированные данные для совпадающих HTTP/HTTPS-запросов. Для расшифрованных потоков HTTP/2 имитированный ответ отдаётся локально без пересылки запроса; для запросов HTTP/1.1 (обычное проксирование и MitM HTTP/1.1) запрос всё равно отправляется на реальный сервер, а реальный ответ заменяется имитированными данными до того, как он достигнет клиента. Это полезно для тестирования, разработки или блокировки нежелательного контента с пользовательским ответом.

Правила имитации ответов определяются в разделе [Map Local].

К одному запросу применяется только одно правило имитации ответов — первое правило с совпадающим шаблоном URL.

Формат Map Local

Для отправки имитированных ответов из локальных файлов, встроенного текста или содержимого в кодировке base64, с выбранным кодом состояния и заголовками:

[Map Local]
^https://example\.com/api.* data="/path/to/mock-response.json"
^https://example\.com/page.* data="/path/to/page.html" header="SGVhZGVyOiBWYWx1ZQ=="
^https://example\.com/pixel.* base64="R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"
^https://example\.com/api/v2.* data-type=text data="rate limited" status-code=429 header="Content-Type: text/plain|Retry-After: 30"
^https://example\.com/beacon.* data-type=tiny-gif

Внимание: Регулярное выражение сопоставляется с любым местом полного URL запроса — https://… после расшифровки, http://…, когда Chute работает обычным HTTP-прокси, — поэтому ^https://example\.com уже охватывает все пути и параметры запроса этого хоста, и .* в конце не нужен. С одним лишь путём оно не сопоставляется никогда, поэтому шаблон вроде ^/api не совпадает. Шаблон сохраняет регистр, так что \S, \D, \W и \B значат то, что написано; само сопоставление регистр не учитывает.

# или // в начале строки или после пробела открывает комментарий до конца строки, если только он не стоит внутри двойных кавычек; ; — никогда. См. Комментарии.

Параметры Map Local

Параметр Описание
data="/path/to/file" Путь к файлу, который отправляется как тело ответа и читается в момент запроса, — или, вместе с data-type, само тело (см. ниже).
`data-type=file\ text\ base64\ tiny-gif` Как читается data=: file — путь (по умолчанию); text — значение и есть тело; base64 — значение декодируется из base64; tiny-gif — встроенный GIF 1×1, data= не нужен (отправляется как image/gif, если header= не задаёт Content-Type).
base64="<encoded>" Содержимое тела ответа в кодировке base64 (то же, что data-type=base64).
status-code=<code> Код состояния имитированного ответа, 200–599. По умолчанию 200. Код вне этого диапазона делает недействительной всю строку, и об этом сообщается как об ошибке конфигурации.
`header="Key: value\ Key2: value2"` Пользовательские заголовки ответа. Пары разделяются `\ , каждая пара делится по первому двоеточию, поэтому значение само может содержать двоеточия (URL). Прежняя форма в base64 (строкиKey:Value\n`, закодированные в base64) по-прежнему принимается.

Правилу нужно тело: data= (файл либо текст или base64 вместе с data-type), base64= или data-type=tiny-gif; data-type=text без data= даёт пустое тело. Правило, которое не может получить тело — нет параметра тела или файл не читается, — не отвечает: запрос уходит на сервер, а следующие правила имитации ответов не проверяются.

Внимание: В обеих формах каждый заголовок делится по первому двоеточию, а у имени и значения обрезаются пробелы по краям; строка без двоеточия игнорируется.

Ответы, которые Chute формирует сам, — имитация ответов (Map Local), response скрипта, а также ответы и страница ошибки перезаписи URL и политик REJECT — следуют HTTP: ответ на запрос HEAD — это только заголовок, с тем Content-Length, который получил бы GET, а ответ со статусом 204, 205 или 304 не несёт ни тела, ни Content-Length.

Переменные шаблона

При использовании data= или base64= тело ответа поддерживает подстановку переменных шаблона:

Переменная Заменяется на
{{url}} Полный URL запроса в том виде, в каком его увидело правило
{{host}} Имя хоста запроса
{{path}} Относительный путь URL
{{method}} HTTP-метод
{{ua}} Значение заголовка User-Agent

Пример файла имитированного ответа (response.json):

{
    "requested_url": "{{ "{{url}}" }}",
    "host": "{{ "{{host}}" }}",
    "method": "{{ "{{method}}" }}"
}

Примечание: Для HTTPS-запросов должна быть включена расшифровка MitM для соответствующего имени хоста. Правила имитации ответов для HTTPS-трафика без MitM будут проигнорированы. На обычный HTTP-запрос имитация отвечает, только если он приходит в Chute через его HTTP-прокси; обычный HTTP, пришедший через интерфейс TUN, пересылается без изменений. Chute Android направляет весь трафик через TUN, если в настройках не включён Системный HTTP-прокси, который предоставляет приложениям HTTP-прокси Chute (Android 10 и новее; по умолчанию выключен).

Внимание: Файл за data= читает устройство, на котором работает Chute, в момент запроса. Когда вы добавляете правило имитации ответов из Chute Dashboard на iPhone, путь на вашем Mac для телефона ничего не значит — вложите содержимое через base64= или отдавайте файл по URL и используйте Перезапись URL.

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-29 21:57:05

Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.

results matching ""

    No results matching ""