Глобальный поиск
Поиск по URL, заголовкам, телам и трафику с учётными данными во всех захватах.
Глобальный поиск выполняется по всем захватам, включённым в API-лаборатории, и за один проход сопоставляет ваши запросы со строкой запроса, заголовками и декодированными телами каждого обмена. Это самый быстрый способ найти конкретный вызов, утечку значения или все запросы с учётными данными перед тем, как переходить к replay или расследованию.
Открытие глобального поиска
- Откройте представление API lab (см. /docs/ru/api-re/).
- Выберите вкладку Search (вторая вкладка после Catalog).
- Введите запрос в поле поиска — placeholder:
Search URL, headers, decoded bodies, status….
Панель ищет по захватам, выбранным для API-лаборатории, а не по всей библиотеке захватов. Если трафик не отображается, сначала включите соответствующий захват в библиотеке.
Что индексируется
Каждый обмен сканируется по шести полям. При совпадении сообщается, какие поля совпали:
| Метка поля | Что ищется |
|---|---|
url | Метод, authority (хост), путь, строка запроса и полный URL |
status | Числовой код состояния и текст состояния (например, 404 Not Found) |
request headers | Все строки заголовков запроса в порядке захвата |
request body | Текст декодированного тела запроса |
response headers | Все строки заголовков ответа |
response body | Текст декодированного тела ответа |
Поля тел содержат декодированный текст, полученный конвейером декодирования захвата, поэтому поиск проникает внутрь JSON, form и других текстовых payloads. Обмены, чьи тела не были декодированы как текст, доступны для поиска только через остальные поля.
Синтаксис запроса
Запрос — это обычные термины, а не регулярное выражение:
- Разбивается по пробелам на токены. Пустой запрос сам по себе ничего не находит — комбинируйте его с фильтрами, чтобы перечислить обмены по атрибуту (см. ниже).
- AND между токенами: каждый токен должен встречаться где-нибудь в одном и том же обмене. Термины могут попадать в разные поля —
orders 500находит обмен, URL которого содержитorders, а статус равен500. - OR между полями: токен совпадает, если встречается в любом из шести индексируемых полей. Чипы на каждом результате отмечают поля, в которых все термины встречаются одновременно в пределах одного поля.
- Совпадение нечувствительно к регистру.
- И запрос, и индексируемый текст нормализуются одинаково, поэтому пунктуация и URL-кодирование не обязаны совпадать в точности. Нормализация отбрасывает схемы
http:///https://, трактует последовательности% / ? # & = : . \ _ -как разделители (или удаляет их), переписывает%2fв/и%3aв:, а по возможности выполняет percent-декодирование значений.
Благодаря этой нормализации все перечисленные запросы находят https://api.example.com/v1/users:
api.example.com
api example com
api/v1/users
APIEXAMPLECOM
Фильтрация результатов
Фильтры применяются поверх текстового запроса — обмен появляется в результатах, только если проходит каждый активный фильтр и совпадение по терминам.
| Элемент управления | Значения | Поведение |
|---|---|---|
| Method | GET, POST, PUT, PATCH, DELETE, OPTIONS | Точное совпадение метода (без учёта регистра) |
| Status | 2xx, 3xx, 4xx, 5xx | Совпадение по классу статуса; обмены без записанного статуса исключаются |
| Host contains… | Произвольный текст | Поиск подстроки в authority (хосте) без учёта регистра |
| Credential traffic | Чекбокс | Оставляет только обмены, ссылающиеся на секреты (следующий раздел) |
Библиотека поиска также принимает фильтр по подстроке contentType, но панель не предоставляет для него элемента управления.
При пустом запросе список результатов определяют только фильтры: например, Status = 5xx без терминов выводит все обмены с ошибками сервера по всем включённым захватам. Строка сводки под панелью инструментов сообщает {n} results across {m} exchanges.
Поиск трафика с учётными данными
Отметьте Credential traffic, чтобы ограничить результаты обменами, несущими секреты. Обмен подходит, если выполняется любое из условий:
- Имя заголовка запроса совпадает с
authorization,cookie,token,secret,api-keyилиapi_key(без учёта регистра). - Имя параметра запроса оканчивается на
token,secret,keyилиsig, либо в точности равноcode— например,?access_token=…,?sig=…,?code=….
Комбинируйте чекбокс с терминами, чтобы сузить область поиска: например, запрос refresh при включённом Credential traffic найдёт все вызовы обновления токена.
[!WARNING] Поиск учётных данных предназначен для авторизованного тестирования систем, которыми вы владеете или которые contracted тестировать. Совпадения показывают, где проходят живые секреты; обращайтесь с ними согласно правилам обработки данных вашего engagement. Конфиденциальные значения по умолчанию маскируются в представлениях анализа — см. /docs/ru/security/.
Переход от совпадения к запросу
Каждая строка результата показывает:
- Бейдж метода и
authority + path(на запросах upgrade появляется бейдж WebSocket). - Имя захвата (сессии), из которого пришло совпадение.
- Чипы совпавших полей (
url,status,request headers,request body,response headers,response body). - Content type ответа и цветовой бейдж статуса.
Щёлкните по строке, чтобы открыть именно этот запрос в рабочей области. Список результатов прокручивается независимо от панели фильтров, поэтому можно уточнять термины, не теряя места.
Поведение на больших захватах
Поиск выполняется целиком во фронтенде по списку обменов в памяти — на каждое нажатие клавиши не приходится серверный round-trip запроса.
- Лимит совпадений: результаты останавливаются на 500 обменах. При достижении лимита появляется бейдж
first 500 shown; сузьте запрос или добавьте фильтры, чтобы добраться до более глубоких совпадений. - Отзывчивый ввод: ввод запроса и хоста отложен (
useDeferredValue), поэтому UI остаётся отзывчивым, пока пересчитывается большой набор результатов, а результаты мемоизируются между нажатиями клавиш. - Линейное сканирование: каждый включённый обмен проверяется по порядку, поэтому стоимость растёт пропорционально общему числу обменов по включённым захватам. На очень больших импортах используйте фильтры по методу, статусу и хосту, чтобы сократить рабочий набор, прежде чем вводить широкие термины.
[!TIP] Если термин должен быть в теле, но совпадений нет, проверьте, что тело декодировалось как текст: непрозрачные или бинарные тела заменяются placeholder’ом и недоступны для поиска.