Имитация ответов
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"
Внимание: Регулярное выражение URL должно совпадать с полным URL запроса, а не только с его подстрокой. Шаблоны обычно должны заканчиваться на
.*, чтобы совпадали URL с любым путем и строкой запроса.
Параметры Map Local
| Параметр | Описание |
|---|---|
data="/path/to/file" |
Путь к файлу для отправки в качестве тела ответа. Файл читается в момент запроса. |
base64="<encoded>" |
Содержимое тела ответа в кодировке base64. |
header="<base64>" |
Пользовательские заголовки ответа в кодировке base64 (формат Key:Value\n). |
Должен быть указан хотя бы один из параметров:
data=илиbase64=.Внимание: При разборе
header=все пробельные символы удаляются, и каждая строка должна иметь вид ровноKey:Valueс одним двоеточием. Значения заголовков, которые сами содержат двоеточие (например, URL), молча отбрасываются, а пробелы внутри значений теряются.
Переменные шаблона
При использовании 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 будут проигнорированы.
Эта страница — перевод английской версии. При расхождениях приоритет имеет английская версия.