Performance (Lighthouse-аудит)
Запуск Google Lighthouse аудита веб-страниц с российских серверов. Возвращает структурированные оценки производительности, доступности, SEO и лучших практик. Совместимость с Browserless.io Performance API.
Эндпоинты
Заголовок раздела «Эндпоинты»| Метод | Эндпоинт | Описание |
|---|---|---|
POST | /v1/browser/performance | Lighthouse-аудит страницы |
Базовое использование
Заголовок раздела «Базовое использование»API принимает URL, запускает полный Lighthouse-аудит и возвращает JSON с оценками по категориям и детальными метриками.
# Полный аудит страницыcurl -X POST "https://proxy.unoapi.ru/v1/browser/performance" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com"}'
# Аудит только производительности и SEOcurl -X POST "https://proxy.unoapi.ru/v1/browser/performance" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com", "config": { "settings": { "onlyCategories": ["performance", "seo"] } } }'const response = await fetch('https://proxy.unoapi.ru/v1/browser/performance', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ url: 'https://example.com' })});
const { categories, audits } = await response.json();
// Оценки по категориям (0–1)console.log(`Performance: ${categories.performance.score * 100}`);console.log(`Accessibility: ${categories.accessibility.score * 100}`);console.log(`SEO: ${categories.seo.score * 100}`);console.log(`Best Practices: ${categories['best-practices'].score * 100}`);
// Детальные метрикиconsole.log(`FCP: ${audits['first-contentful-paint'].displayValue}`);console.log(`LCP: ${audits['largest-contentful-paint'].displayValue}`);console.log(`CLS: ${audits['cumulative-layout-shift'].displayValue}`);import requests
response = requests.post( 'https://proxy.unoapi.ru/v1/browser/performance', headers={ 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, json={'url': 'https://example.com'})
data = response.json()
# Оценки по категориям (0–1)for name, cat in data['categories'].items(): print(f"{cat['title']}: {cat['score'] * 100:.0f}/100")
# Core Web Vitalsfor key in ['first-contentful-paint', 'largest-contentful-paint', 'cumulative-layout-shift']: audit = data['audits'][key] print(f"{audit['title']}: {audit.get('displayValue', 'N/A')}")body, _ := json.Marshal(map[string]interface{}{ "url": "https://example.com",})
req, _ := http.NewRequest("POST", "https://proxy.unoapi.ru/v1/browser/performance", bytes.NewBuffer(body))req.Header.Set("Authorization", "Bearer YOUR_API_KEY")req.Header.Set("Content-Type", "application/json")
resp, _ := client.Do(req)var result struct { Categories map[string]struct { ID string `json:"id"` Title string `json:"title"` Score *float64 `json:"score"` } `json:"categories"` Audits map[string]struct { ID string `json:"id"` Title string `json:"title"` Score *float64 `json:"score"` DisplayValue string `json:"displayValue"` } `json:"audits"`}json.NewDecoder(resp.Body).Decode(&result)
for _, cat := range result.Categories { fmt.Printf("%s: %.0f/100\n", cat.Title, *cat.Score*100)}Формат ответа
Заголовок раздела «Формат ответа»API возвращает JSON с двумя объектами: categories (высокоуровневые оценки) и audits (детальные метрики).
{ "categories": { "performance": { "id": "performance", "title": "Performance", "score": 0.95 }, "accessibility": { "id": "accessibility", "title": "Accessibility", "score": 0.88 }, "best-practices": { "id": "best-practices", "title": "Best Practices", "score": 0.92 }, "seo": { "id": "seo", "title": "SEO", "score": 1.0 } }, "audits": { "first-contentful-paint": { "id": "first-contentful-paint", "title": "First Contentful Paint", "description": "First Contentful Paint marks the time...", "score": 0.99, "displayValue": "0.8 s" }, "largest-contentful-paint": { "id": "largest-contentful-paint", "title": "Largest Contentful Paint", "description": "Largest Contentful Paint marks the time...", "score": 0.85, "displayValue": "1.4 s" } }}Категории
Заголовок раздела «Категории»| Категория | Описание |
|---|---|
performance | Производительность (Core Web Vitals, время загрузки) |
accessibility | Доступность (a11y, ARIA, контраст, навигация) |
best-practices | Лучшие практики (HTTPS, безопасность, API) |
seo | SEO (мета-теги, структура, индексация) |
Оценки — числа от 0 до 1, где 1 — лучший результат. Умножьте на 100 для привычной шкалы Lighthouse.
Каждый аудит содержит:
| Поле | Тип | Описание |
|---|---|---|
id | string | Идентификатор аудита |
title | string | Название метрики |
description | string | Описание метрики |
score | number | null | Оценка (0–1) или null для информационных |
displayValue | string? | Человекочитаемое значение (например, "0.8 s") |
Параметры запроса
Заголовок раздела «Параметры запроса»| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
url | string | Да | URL страницы для аудита |
config | object | Нет | Конфигурация Lighthouse |
config.extends | string | Нет | Базовая конфигурация (по умолчанию lighthouse:default) |
config.settings.onlyCategories | string[] | Нет | Аудит только указанных категорий |
config.settings.onlyAudits | string[] | Нет | Запуск только указанных аудитов |
Фильтрация категорий
Заголовок раздела «Фильтрация категорий»Используйте onlyCategories для ускорения аудита — Lighthouse пропустит ненужные проверки:
# Только производительностьcurl -X POST "https://proxy.unoapi.ru/v1/browser/performance" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com", "config": { "settings": { "onlyCategories": ["performance"] } } }'Фильтрация аудитов
Заголовок раздела «Фильтрация аудитов»Для точечной проверки конкретных метрик используйте onlyAudits:
# Только Core Web Vitalscurl -X POST "https://proxy.unoapi.ru/v1/browser/performance" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com", "config": { "settings": { "onlyAudits": [ "first-contentful-paint", "largest-contentful-paint", "cumulative-layout-shift", "total-blocking-time" ] } } }'Таймауты
Заголовок раздела «Таймауты»Lighthouse-аудит занимает значительно больше времени, чем другие Browser API эндпоинты:
| Эндпоинт | Типичное время |
|---|---|
/v1/browser/screenshot | 2–5 сек |
/v1/browser/scrape | 2–10 сек |
/v1/browser/performance | 15–60 сек |
Сценарии использования
Заголовок раздела «Сценарии использования»- CI/CD мониторинг — проверка Performance Score перед деплоем
- SEO-аудит — автоматическая проверка метатегов, структуры и доступности
- Core Web Vitals — мониторинг FCP, LCP, CLS, TBT
- Мониторинг качества — регулярные проверки production-сайтов
- Сравнение страниц — аудит нескольких URL для выявления проблемных
SSRF-защита
Заголовок раздела «SSRF-защита»API блокирует небезопасные URL: localhost, приватные IP, .local домены.
Миграция с Browserless
Заголовок раздела «Миграция с Browserless»https://chrome.browserless.io/performancehttps://proxy.unoapi.ru/v1/browser/performanceФормат запроса и ответа совместим.