Перейти к содержимому

Правила переписывания и точки останова

Захват позволяет «смотреть», правила и точки останова позволяют «менять». Trace Eagle делает вас хозяином своего трафика: меняйте запросы без написания кода с помощью простых и наглядных правил, задаваемых мышью, чтобы автоматически переписывать тысячи потоков; либо используйте точки останова, чтобы приостанавливать и редактировать потоки по одному; и только для сложной логики, которую правила действительно не могут выразить, приходится прибегать к скриптам / плагинам.


1. Правила переписывания (простые, задаются мышью, меняют автоматически)

Заголовок раздела «1. Правила переписывания (простые, задаются мышью, меняют автоматически)»

Худший способ начать менять запросы — писать скрипт. Здесь этого не требуется: выберите действие из шпаргалки и заполните значение, и вот у вас правило: просто, интуитивно и применяется в тот же момент, когда вы его создали.

Правила задаются по одному в строке в виде <совпадение> <действие>://<значение> (например *.example.com resHeaders://X-Debug: 1). Пустые строки и комментарии # игнорируются, каждая строка проверяется отдельно, а изменения применяются на лету при сохранении; правила можно объединять в именованные группы и включать / выключать группами. Интерфейс снабжён кликабельной шпаргалкой: один клик вставляет подходящий пример, дальше остаётся лишь отредактировать значение, синтаксис запоминать не нужно.

Правила переписывания: слева по одному правилу в строке с поддержкой групп и комментариев, справа кликабельная шпаргалка действий (перенаправление / заглушка / редактирование заголовков / отпечаток / точка останова и т. д.)

  • Точный домен: traceeagle.com (можно с префиксом пути traceeagle.com/path)
  • Поддомен с подстановочным знаком: *.traceeagle.com (совпадает с основным доменом и всеми поддоменами)
  • Регулярное выражение по всему URL: regex://…
  • Точный полный URL: $https://host/path
  • Порт: :8080
  • Отрицание: поставьте перед любым совпадением !

Направление запроса

  • Перенаправление / переадресация: сменить целевой IP подключения (host), сопоставить с другим полным URL (map-remote, можно указать локальный сервер разработки), направить через вышестоящий прокси http/socks5 или привести сетевые характеристики запроса клиента к характеристикам стандартного клиента (точное воспроизведение).
  • Заглушка с поддельными данными: mock://200 или mock://200|<body> возвращает заранее заданный ответ, не обращаясь к серверу, спасение, когда фронтенд ждёт бэкенд-API.
  • Редактирование строки запроса / заголовков: метод, User-Agent, Referer, Basic-авторизация, X-Forwarded-For, Content-Type / кодировка, Cookie, объединение параметров запроса, поиск и замена в URL.
  • Редактирование тела запроса: полная замена / поиск и замена / добавление в конец / добавление в начало / выгрузка в локальный файл.

Направление ответа

  • Редактирование статуса / заголовков: сменить код состояния, добавить или удалить любой заголовок ответа, Set-Cookie, открыть CORS в один клик, принудительно скачать как вложение, управление кэшем (отключить кэширование или задать max-age), отключить Cookie / сжатие / keep-alive, поиск и замена в значениях заголовков.
  • Редактирование тела ответа: полная замена / поиск и замена / добавление в конец / добавление в начало / поверхностное слияние JSON.
  • Внедрение по типу: только когда совпадает Content-Type, внедрить или заменить скрипты, стили или фрагменты в HTML / JS / CSS.

Сеть и протокол

  • Выгрузка в файл: помимо тела запроса / ответа, в один клик в локальный файл можно выгрузить и весь сырой запрос / ответ целиком, для архивирования или офлайн-анализа.
  • Имитация плохой сети: задержка запроса / ответа (в миллисекундах), ограничение полосы пропускания (с пресетами 2G / 3G / 4G).
  • Переписывание кадров WebSocket: замена old=>new по направлению (в обе стороны / от клиента к серверу / от сервера к клиенту).
  • Переписывание сырого TCP / UDP: замена по направлению в не-HTTP байтовых потоках / датаграммах SOCKS5 UDP.

В значениях правил можно использовать динамические переменные, такие как ${url} ${host} ${port} ${method} ${status} ${now} ${random} ${randomUUID} ${req.headers.X} ${res.headers.X}, а также пользовательские именованные значения {name} (задайте общее значение один раз, ссылайтесь на него везде). Именованные значения {name} используются в основном в переписывании запросов / ответов; значения замены в переписывании кадров WebSocket поддерживают ${...}.


Для потоков, требующих точного контроля в каждом отдельном случае, используйте точку останова, чтобы приостановить и открыть редактор перед отправкой запроса или перед возвратом ответа.

  • По правилу: используйте правило breakpoint://req|res|both, чтобы точно отметить, какие потоки перехватывать.
  • Глобальный переключатель перехвата: включите перехват для всей сессии, а затем при желании сузьте область с помощью правил фильтрации перехвата (фильтр по домену / методу / стадии); без правил перехватывается всё.
  • Стадия запроса: метод, URL (хост следует за URL), заголовки, тело.
  • Стадия ответа: код состояния, заголовки ответа, тело ответа.
  • Прямой сброс: Abort отбрасывает данный запрос / ответ (клиент получает ошибку шлюза).
  • Потоки, попавшие под несколько срабатываний, выстраиваются в очередь на обработку: каждый можно продолжить (Resume), отбросить (Abort) или продолжить все сразу. Потоки, надолго оставленные без обработки, автоматически продолжаются без изменений, поэтому трафик никогда не застревает навсегда.

3. Скрипты и плагины (продвинутая автоматизация)

Заголовок раздела «3. Скрипты и плагины (продвинутая автоматизация)»

Логику, которую правила выразить не могут, передайте скрипту или плагину:

  • JavaScript-скрипты: определите onRequest(req) / onResponse(resp) и редактируйте поля напрямую, чтобы изменения вступили в силу. Встроенные помощники включают логирование, синхронные исходящие вызовы к другим сервисам, сохранение данных между запросами (для счётчиков / кэшированных токенов), кодирование/декодирование Base64 и многое другое.
  • Исходящие HTTP-плагины: используйте правило plugin://name, чтобы передать запрос / ответ на обработку в собственный сервис-плагин (вызывается по HTTP), а плагин возвращает переписанное содержимое (или сразу заглушку). Независим от языка, подходит командам для реализации собственной обработки на любом языке.

Поток проходит по порядку через: правила запроса, скрипты запроса, плагины запроса, точку останова запроса, переадресацию / заглушку, правила ответа, скрипты ответа, плагины ответа, точку останова ответа. Схема проста: сначала автоматические правила, затем скрипты, затем плагины, и только в самом конце вручную вступает точка останова, каждый делает своё дело, не мешая другим.


Назад к Захвату через прокси · Смотрите также: Конструирование и повтор