Performance: Lighthouse-аудит страницы через API
POST /v1/browser/performance запускает Google Lighthouse для
страницы с российских серверов и возвращает оценки по категориям и результаты отдельных аудитов: Core Web Vitals,
доступность, SEO, лучшие практики. Формат запроса совместим с Browserless /performance.
curl -X POST "https://proxy.seyka.ru/v1/browser/performance" \ -H "Authorization: Bearer $SEYKA_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com", "config": {"settings": {"onlyCategories": ["performance", "seo"], "formFactor": "desktop", "screenEmulation": {"mobile": false, "width": 1350, "height": 940, "deviceScaleFactor": 1}}} }'| Параметр | Тип | Описание |
|---|---|---|
url |
string |
обязательный, адрес страницы |
config.extends |
string |
базовая конфигурация Lighthouse, по умолчанию lighthouse:default |
config.settings.onlyCategories |
string[] |
только эти категории: performance, accessibility, best-practices, seo |
config.settings.onlyAudits |
string[] |
только эти аудиты, например largest-contentful-paint |
config.settings.formFactor |
string |
mobile (по умолчанию в Lighthouse) или desktop |
config.settings.screenEmulation |
object |
эмуляция экрана: mobile, width, height, deviceScaleFactor, disabled |
config.settings.throttling |
object |
параметры троттлинга: rttMs, throughputKbps, requestLatencyMs, downloadThroughputKbps, uploadThroughputKbps, cpuSlowdownMultiplier |
config.settings.throttlingMethod |
string |
simulate (по умолчанию), devtools или provided |
config.settings.blockedUrlPatterns |
string[] |
не загружать ресурсы по шаблонам URL |
formFactor: "desktop" в Lighthouse нужно сочетать с подходящим screenEmulation, как в примере выше, иначе
Lighthouse откажется запускать аудит с несогласованными настройками.
Ограничивайте onlyCategories или onlyAudits, когда нужны не все проверки: аудит станет быстрее.
{ "categories": { "performance": { "id": "performance", "title": "Performance", "score": 0.95 }, "seo": { "id": "seo", "title": "SEO", "score": 1 } }, "audits": { "largest-contentful-paint": { "id": "largest-contentful-paint", "title": "Largest Contentful Paint", "description": "Largest Contentful Paint marks the time at which the largest text or image is painted…", "score": 0.85, "displayValue": "1.4 s", "numericValue": 1412.5, "numericUnit": "millisecond" } }, "environment": { "benchmarkIndex": 1850 }}| Поле | Описание |
|---|---|
categories.*.score |
оценка категории от 0 до 1; умножьте на 100, чтобы получить привычную шкалу Lighthouse |
audits.*.score |
оценка аудита 0–1 или null для информационных аудитов |
audits.*.displayValue |
значение для человека, например "1.4 s" |
audits.*.numericValue, numericUnit |
значение для машины и его единица |
audits.*.errorMessage |
есть, если аудит упал во время прогона — отличает «нет данных» от сбоя |
environment.benchmarkIndex |
производительность хоста Lighthouse; при низком значении (примерно ниже 1000) метрики TBT и LCP менее надёжны |
Время и ошибки
Заголовок раздела «Время и ошибки»Аудит занимает от нескольких секунд до минуты; на запрос, включая ожидание свободного браузера, отводится
90 секунд. Аудит, не уложившийся в них, завершается ошибкой 502 (реже 500). Ставьте таймаут клиента не
меньше 90 секунд.
| Код | Когда |
|---|---|
500 |
сбой в браузере аудита: code — ошибка Lighthouse, например PROTOCOL_TIMEOUT или TARGET_CRASHED, либо NO_SCORES, если ни одна категория не получила оценку |
502 |
аудит провалил сам сайт: code — например NO_FCP, ERRORED_DOCUMENT_REQUEST или DNS_FAILURE |
503 |
сервис перезапускается (errorKind: shutdown); повторите запрос |
504 |
истёк таймаут загрузки страницы |
Остальные коды — в разделе Ошибки.
У Performance включён кэш ответов шлюза: повтор того же запроса в пределах окна кэша возвращается без нового аудита с X-Cache: HIT и оплачивается по цене повтора из кэша. Чтобы
запустить аудит заново, передайте Cache-Control: no-cache: ответ придёт с X-Cache: BYPASS и обновит кэш.
Запрос считается тем же, если тело совпадает побайтно: другой порядок ключей или пробелы в JSON дают новый аудит. Отправляйте тело, собранное одним и тем же кодом, — тогда повторы попадут в кэш.
curl -X POST "https://proxy.seyka.ru/v1/browser/performance" \ -H "Authorization: Bearer $SEYKA_API_KEY" \ -H "Content-Type: application/json" \ -H "Cache-Control: no-cache" \ -d '{"url": "https://example.com"}'Аудит оплачивается по цене Performance, повтор из кэша — дешевле. Цены и окно кэша — в таблице цен.