Chrome расширение для перехвата, просмотра и модификации Apollo GraphQL запросов и мутаций в реальном времени.
- Отслеживание всех GraphQL queries и mutations на странице
- Просмотр деталей: query, variables, response
- Фильтрация по типу операции и поиск по имени
- Индикатор подключения к Apollo Client
- Подмена ответа сервера (mock response)
- Модификация переменных запроса (variables)
- Возврат GraphQL ошибок для тестирования
- Сохранение моков между сессиями
- Apply Live — мгновенное обновление Apollo Cache без перезагрузки
- Refetch — повторный запрос с новыми переменными
- Execute Mutation — выполнение мутации с кастомными переменными
Доступ через консоль браузера:
// Получить все данные
window.__APOLLO_INTERCEPTOR__.getAllData()
// Обновить кэш в реальном времени
window.__APOLLO_INTERCEPTOR__.update("QueryName", newData)
// Установить мок
window.__APOLLO_INTERCEPTOR__.setMock("QueryName", { data: {...} })
// Получить Apollo Client
window.__APOLLO_INTERCEPTOR__.getClient()- Откройте Chrome →
chrome://extensions/ - Включите "Режим разработчика" (Developer mode)
- Нажмите "Загрузить распакованное расширение" (Load unpacked)
- Выберите папку
apollo-interceptor-extention
- Кликните на иконку расширения в панели браузера
- Перейдите на страницу с Apollo Client
- Операции автоматически появятся в списке
- Зелёная точка = Apollo Client подключен
- Кликните на операцию в списке
- Отредактируйте JSON в редакторе
- Включите переключатель "Mock enabled"
- Нажмите Apply Mock — мок будет использован при следующем запросе
- Или нажмите Apply Live — данные обновятся мгновенно в UI
- Выберите операцию
- Нажмите Set Error — автоматически создаст мок с ошибкой
- Перейдите на вкладку "Variables"
- Отредактируйте JSON переменных
- Включите "Mock vars" и нажмите Apply
- Или нажмите Refetch для немедленного запроса с новыми переменными
{
"user": {
"id": "123",
"name": "Test User",
"__typename": "User"
}
}{
"__error": true,
"errors": [{
"message": "Unauthorized",
"extensions": { "code": "UNAUTHENTICATED" }
}],
"data": null
}apollo-interceptor-extention/
├── manifest.json # Manifest V3
├── background.js # Service Worker — хранение правил
├── content.js # Content Script — мост между страницей и расширением
├── inject.js # Инъекция в страницу — хук Apollo Client
├── popup/
│ ├── popup.html # UI расширения
│ ├── popup.css # Стили
│ └── popup.js # Логика popup
└── icons/
├── icon.svg # Исходник иконки
├── icon16.png
├── icon48.png
├── icon128.png
└── generate.py # Скрипт генерации PNG
inject.jsвнедряется в страницу и хукаетwindow.__APOLLO_CLIENT__- Перехватываются методы
query(),mutate(),watchQuery() - При наличии мока — возвращается мок вместо реального ответа
- Данные отправляются в popup через
postMessage→ content script → background
- chrome.storage.local — правила моков (сохраняются между сессиями)
- In-memory — операции (очищаются при закрытии вкладки)
- ✅ Chrome Manifest V3
- ✅ Apollo Client 2.x, 3.x
- ✅ Любые GraphQL клиенты через fetch fallback
| Разрешение | Зачем нужно |
|---|---|
storage |
Сохранение правил моков |
activeTab |
Доступ к текущей вкладке |
scripting |
Инъекция скриптов |
tabs |
Получение ID вкладки |
<all_urls> |
Работа на любом сайте с GraphQL |
- Логи в консоли страницы:
[Apollo Interceptor] - Логи Service Worker:
chrome://extensions/→ Details → Service Worker
MIT