Как подменить данные в ответе сервера с помощью Charles Proxy?

Ответ

Charles Proxy позволяет подменять ответы сервера двумя основными способами: Breakpoints и Map Local/Remote.

1. Использование Breakpoints (Точки останова)

Позволяет вручную отредактировать ответ перед его отправкой клиенту.

  1. Включите Proxy → Breakpoint Settings.
  2. Добавьте URL (например, *example.com/api/data*).
  3. При срабатывании запроса Charles приостановит его.
  4. Во вкладке Edit Response можно изменить статус-код, заголовки или тело (например, JSON).
  5. Нажмите Execute, чтобы отправить модифицированный ответ клиенту.

2. Использование Map Local

Автоматически заменяет ответ сервера содержимым локального файла.

  1. В меню выберите Tools → Map Local.
  2. Включите опцию Enable Map Local.
  3. Добавьте новое правило: укажите URL и выберите локальный файл (например, mock_response.json).

Пример содержимого mock_response.json:

{
  "status": "error",
  "code": 500,
  "message": "Серверная ошибка для тестирования"
}

Применение: Тестирование обработки ошибок, проверка UI при различных данных, имитация медленных ответов (через Throttle), отладка фронтенда без бэкенда.

Ответ 18+ 🔞

А, Чарльз Прокси, блядь! Ну инструмент, ёпта, просто песня. Хочешь серверу еблеть мозги и подсовывать клиенту левые ответы? Легко, сука, как два пальца обоссать.

Вот два главных способа, как это провернуть, без всякой этой вашей магии.

1. Breakpoints (Точки останова) — ручной режим, для тонкой настройки

Это когда ты, как хирург-садист, останавливаешь запрос и начинаешь его потрошить своими кривыми ручонками.

  1. Включи эту хуйню: Proxy → Breakpoint Settings.
  2. Добавь URL, который хочешь ломать. Например, *api.moishop.com/getPrices*. Звёздочки — это чтобы накрыть всё, блядь, керхером.
  3. Теперь, когда твой фронтенд попытается стрясти с бэкенда цены, Чарльз его, сука, на месте заморозит! Запрос повиснет, как будто серверу кто-то на провод наступил.
  4. Переходи во вкладку Edit Response. Вот тут-то и начинается пиздец. Меняй что хочешь: статус-код (поставь 418 I'm a teapot, нахуй), заголовки или, самое вкусное, тело ответа. Подменил JSON, и вместо списка товаров у тебя "error": "Всё пропало, шеф".
  5. Нажал Execute — и поехало, твой поддельный ответ уже летит в интерфейс. Удивление пиздец, у клиента.

2. Map Local — автоматический обман, для ленивых

Не хочешь каждый раз руками воевать? Сделай один раз и забудь, как страшный сон. Чарльз будет автоматом подменять ответ содержимым файла с твоего же компа.

  1. Tools → Map Local. Включи галочку Enable Map Local, а то нихуя не заработает.
  2. Добавляешь новое правило: вбиваешь URL и выбираешь локальный файлик. Например, test_mock.json.

А в этом самом test_mock.json пишешь отсебятину, какую душа пожелает:

{
  "status": "error",
  "code": 500,
  "message": "Серверная ошибка для тестирования"
}

И зачем это всё, спросишь? Да овердохуища применений!

  • Тестирование ошибок: Хочешь посмотреть, не разъёбется ли твой красивый интерфейс, если бэкенд вернёт какую-нибудь дичь? Легко.
  • Проверка UI: Нет ещё реального API, а фронт уже надо делать? Замокай ответы и работай.
  • Имитация тормозов: Через Throttle можно замедлить ответ до скорости улитки, и посмотреть, как твой лоадер не захлебнётся.
  • Отладка без бэкенда: Бэкендеры ушли на перекур, а тебе надо работать? Да похуй, у тебя теперь свой собственный, виртуальный бэкенд, который делает что скажешь.

Вот так вот, блядь. Никакой магии, один лишь циничный и прикладной пиздец.