HTML-контент
Извлечение полностью отрендеренного HTML-контента веб-страниц через headless Chromium. Запросы выполняются с российских серверов (российские IP-адреса, российский DNS) — сайты отдают локализованный контент, корректные цены в рублях и российскую выдачу. 100% совместимость с Browserless.io Content API — drop-in замена для существующих интеграций.
Эндпоинты
Заголовок раздела «Эндпоинты»| Метод | Эндпоинт | Описание |
|---|---|---|
POST | /v1/browser/content | Browserless-совместимый API |
Базовое использование
Заголовок раздела «Базовое использование»API возвращает HTML-контент страницы после полного рендеринга JavaScript. Ответ — text/html, не JSON.
# Базовое извлечение HTMLcurl -X POST "https://proxy.unoapi.ru/v1/browser/content" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com"}' \ --output page.html
# С ожиданием загрузкиcurl -X POST "https://proxy.unoapi.ru/v1/browser/content" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com", "gotoOptions": {"waitUntil": "networkidle"}, "viewport": {"width": 1920, "height": 1080} }' \ --output page.htmlconst response = await fetch('https://proxy.unoapi.ru/v1/browser/content', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ url: 'https://example.com', gotoOptions: { waitUntil: 'networkidle' }, viewport: { width: 1920, height: 1080 } })});
// Ответ — HTML-контентconst html = await response.text();console.log(html);
// Заголовки ответа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/content', headers={ 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, json={ 'url': 'https://example.com', 'gotoOptions': {'waitUntil': 'networkidle'}, 'viewport': {'width': 1920, 'height': 1080} })
# Ответ — HTML-контентhtml = response.textprint(html)body, _ := json.Marshal(map[string]interface{}{ "url": "https://example.com", "gotoOptions": map[string]interface{}{ "waitUntil": "networkidle", },})
req, _ := http.NewRequest("POST", "https://proxy.unoapi.ru/v1/browser/content", bytes.NewBuffer(body))req.Header.Set("Authorization", "Bearer YOUR_API_KEY")req.Header.Set("Content-Type", "application/json")
// Ответ — HTML-контентresp, _ := client.Do(req)htmlBytes, _ := io.ReadAll(resp.Body)fmt.Println(string(htmlBytes))Ключевые параметры
Заголовок раздела «Ключевые параметры»Основные параметры запроса:
url— URL страницы для извлечения HTMLhtml— или HTML-контент для рендеринга (вместо URL)viewport.width/height— размер окна браузера (по умолчанию 1280x800)waitForSelector— ожидание CSS-селектора перед извлечениемgotoOptions.waitUntil—load,domcontentloaded,networkidlewaitForTimeout— дополнительная задержка в миллисекундахwaitForFunction— ожидание выполнения JavaScript-функции
Заголовки ответа
Заголовок раздела «Заголовки ответа»API возвращает информацию о целевой странице через заголовки:
X-Response-Code— HTTP-код ответа целевой страницыX-Response-Status— текстовый статус ответаX-Response-URL— финальный URL после редиректов
Рендеринг HTML
Заголовок раздела «Рендеринг HTML»Вместо URL можно передать HTML-контент напрямую для рендеринга через браузер:
# Рендеринг HTML-контента (без URL)curl -X POST "https://proxy.unoapi.ru/v1/browser/content" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "html": "<html><body><script>document.body.innerHTML = \"<h1>Rendered!</h1>\"</script></body></html>" }'Это полезно для проверки рендеринга шаблонов с JavaScript.
Ожидание контента
Заголовок раздела «Ожидание контента»Для динамических страниц (SPA, React, Vue) используйте waitForSelector:
# Ожидание элемента перед извлечением HTMLcurl -X POST "https://proxy.unoapi.ru/v1/browser/content" \ -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"} }'Параметр bestAttempt: true позволяет продолжить даже если селектор не найден.
Сценарии использования
Заголовок раздела «Сценарии использования»- Веб-скрапинг — получение полностью отрендеренного HTML для парсинга данных, включая контент, загружаемый через JavaScript
- SEO-аудит — анализ того, что видят поисковые роботы после рендеринга JavaScript
- Индексация контента — извлечение текстового контента для поисковых индексов
- Мониторинг изменений — отслеживание изменений контента на страницах
- Тестирование — проверка серверного рендеринга и SSR/SSG
Продвинутые возможности
Заголовок раздела «Продвинутые возможности»API поддерживает все параметры Browserless.io:
- Cookies и авторизация —
cookies,authenticate - Внедрение скриптов —
addScriptTag,addStyleTag - Блокировка ресурсов —
rejectResourceTypes,rejectRequestPattern - Эмуляция —
emulateMediaType(screen/print) - JavaScript —
setJavaScriptEnabled: false - HTTP-заголовки —
setExtraHTTPHeaders - User-Agent —
userAgent
SSRF-защита
Заголовок раздела «SSRF-защита»API блокирует небезопасные URL: localhost, приватные IP, .local домены.
Миграция с Browserless
Заголовок раздела «Миграция с Browserless»https://chrome.browserless.io/contenthttps://proxy.unoapi.ru/v1/browser/contentФормат запроса и ответа полностью совместим.