Скриншоты
Создание скриншотов веб-страниц через headless Chromium. Запросы выполняются с российских серверов (российские IP-адреса, российский DNS) — сайты отдают локализованный контент, корректные цены в рублях и российскую выдачу. 100% совместимость с Browserless.io — drop-in замена для существующих интеграций.
Эндпоинты
Заголовок раздела «Эндпоинты»| Метод | Эндпоинт | Описание |
|---|---|---|
POST | /v1/browser/screenshot | Browserless-совместимый API (рекомендуется) |
GET | /v1/browser/screenshot | Простой GET-запрос с query params |
Базовое использование
Заголовок раздела «Базовое использование»API возвращает бинарное изображение напрямую (не JSON с URL). Формат определяется параметром options.type (по умолчанию JPEG).
# Базовый скриншот (возвращает PNG/JPEG)curl -X POST "https://proxy.unoapi.ru/v1/browser/screenshot" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com"}' \ --output screenshot.jpeg
# С параметрамиcurl -X POST "https://proxy.unoapi.ru/v1/browser/screenshot" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com", "options": {"type": "png", "fullPage": true}, "viewport": {"width": 1920, "height": 1080} }' \ --output screenshot.pngconst response = await fetch('https://proxy.unoapi.ru/v1/browser/screenshot', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ url: 'https://example.com', options: { type: 'png', fullPage: true }, viewport: { width: 1920, height: 1080 } })});
// Ответ — бинарное изображениеconst imageBuffer = await response.arrayBuffer();await Bun.write('screenshot.png', imageBuffer);
// Заголовки ответаconsole.log(response.headers.get('X-Response-Code')); // HTTP код целевого сайтаconsole.log(response.headers.get('X-Response-URL')); // Финальный URL после редиректовimport requests
response = requests.post( 'https://proxy.unoapi.ru/v1/browser/screenshot', headers={ 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, json={ 'url': 'https://example.com', 'options': {'type': 'png', 'fullPage': True}, 'viewport': {'width': 1920, 'height': 1080} })
# Ответ — бинарное изображениеwith open('screenshot.png', 'wb') as f: f.write(response.content)body, _ := json.Marshal(map[string]interface{}{ "url": "https://example.com", "options": map[string]interface{}{ "type": "png", "fullPage": true, },})
req, _ := http.NewRequest("POST", "https://proxy.unoapi.ru/v1/browser/screenshot", bytes.NewBuffer(body))req.Header.Set("Authorization", "Bearer YOUR_API_KEY")req.Header.Set("Content-Type", "application/json")
// Ответ — бинарное изображениеresp, _ := client.Do(req)io.Copy(file, resp.Body)Ключевые параметры
Заголовок раздела «Ключевые параметры»Основные параметры запроса:
url— URL страницы для скриншотаhtml— или HTML-контент для рендеринга (вместо URL)options.type— формат:jpeg(по умолчанию),png,webpoptions.fullPage— скриншот всей страницыoptions.quality— качество JPEG (0-100)viewport.width/height— размер окна (по умолчанию 1280×800)waitForSelector— ожидание CSS-селектораgotoOptions.waitUntil—load,domcontentloaded,networkidle
Заголовки ответа
Заголовок раздела «Заголовки ответа»API возвращает информацию о целевой странице через заголовки:
X-Response-Code— HTTP-код ответа целевой страницыX-Response-URL— финальный URL после редиректовX-Cache—HITилиMISS(для GET-запросов)
Рендеринг HTML
Заголовок раздела «Рендеринг HTML»Вместо URL можно передать HTML-контент напрямую:
# Скриншот HTML-контента (без URL)curl -X POST "https://proxy.unoapi.ru/v1/browser/screenshot" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "html": "<html><body><h1>Hello World</h1></body></html>", "viewport": {"width": 800, "height": 600} }' \ --output screenshot.pngОжидание контента
Заголовок раздела «Ожидание контента»Для динамических страниц используйте waitForSelector:
# Ожидание элемента перед скриншотомcurl -X POST "https://proxy.unoapi.ru/v1/browser/screenshot" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com", "waitForSelector": {"selector": ".content-loaded", "timeout": 5000}, "gotoOptions": {"waitUntil": "networkidle"} }' \ --output screenshot.jpegПараметр bestAttempt: true позволяет продолжить даже если селектор не найден.
Генерация OG-изображений
Заголовок раздела «Генерация OG-изображений»// Генерация OG-изображенияconst response = await fetch('https://proxy.unoapi.ru/v1/browser/screenshot', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ url: 'https://mysite.com/og?title=Hello+World', viewport: { width: 1200, height: 630 }, options: { type: 'png' } })});
const image = await response.arrayBuffer();// Используйте как og:imageПродвинутые возможности
Заголовок раздела «Продвинутые возможности»API поддерживает все параметры Browserless.io:
- Cookies и авторизация —
cookies,authenticate - Внедрение скриптов —
addScriptTag,addStyleTag - Блокировка ресурсов —
rejectResourceTypes,rejectRequestPattern - Эмуляция —
emulateMediaType(screen/print) - JavaScript —
setJavaScriptEnabled: false
SSRF-защита
Заголовок раздела «SSRF-защита»API блокирует небезопасные URL: localhost, приватные IP, .local домены.
Миграция с Browserless
Заголовок раздела «Миграция с Browserless»https://chrome.browserless.io/screenshothttps://proxy.unoapi.ru/v1/browser/screenshotФормат запроса и ответа полностью совместим.