Перейти к содержимому

HTML-контент страницы после рендеринга: Content API

POST /v1/browser/content открывает страницу в headless Chromium, дожидается загрузки и возвращает итоговый HTML — то, что видит браузер после выполнения JavaScript. Ответ — text/html, не JSON. Формат запроса совместим с Browserless /content.

Окно терминала
curl -X POST "https://proxy.seyka.ru/v1/browser/content" \
-H "Authorization: Bearer $SEYKA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"gotoOptions": {"waitUntil": "networkidle"}
}' \
--output page.html

Тело — общие параметры страницы. Чаще всего нужны:

Параметр Описание
url или html адрес страницы или разметка для рендеринга — ровно одно из двух
gotoOptions.waitUntil load (по умолчанию), domcontentloaded или networkidle
waitForSelector дождаться элемента, например {"selector": ".product-card", "timeout": 10000}
waitForFunction дождаться, пока функция fn вернёт истину
waitForTimeout дополнительная пауза в мс
bestAttempt вернуть HTML, даже если условие ожидания не выполнилось
rejectResourceTypes не грузить, например, ["image", "font", "media"] — быстрее
setExtraHTTPHeaders, cookies, userAgent заголовки, куки и User-Agent запроса
HTTP/1.1 200 OK
Content-Type: text/html; charset=utf-8
X-Response-Code: 200
X-Response-Status: OK
X-Response-URL: https://example.com/
X-Cache: DISABLED
<!DOCTYPE html><html><head><title>Example Domain</title>…
  • X-Response-Code, X-Response-Status — код и статус, которыми ответил сайт; 200 от шлюза означает, что страница отрендерена, а не что сайт ответил успешно.
  • X-Response-URL — конечный адрес после редиректов (для html не передаётся).

Если страница не открылась, ответ — JSON с error, errorKind и code, см. ошибки Browser API.

import os, requests
r = requests.post(
"https://proxy.seyka.ru/v1/browser/content",
headers={"Authorization": f"Bearer {os.environ['SEYKA_API_KEY']}"},
json={"url": "https://example.com", "waitForSelector": {"selector": "main"}},
timeout=60,
)
r.raise_for_status()
print(r.headers["X-Response-Code"], len(r.text))
  • Страница собирается JavaScript (SPA на React, Vue и т. п.), и нужен итоговый DOM.
  • SEO-проверка: что остаётся в разметке после рендеринга, а что существует только в исходном HTML.
  • Рендеринг собственного шаблона со скриптами: передайте его в html.

Если нужен текст или Markdown страницы, а не разметка целиком, удобнее Smart Scrape: он запускает браузер, только когда это действительно нужно. Если нужны отдельные элементы — Scrape или Cheerio.

Каждый вызов оплачивается по цене HTML-контента; кэша ответов нет (X-Cache: DISABLED). Цены — в таблице цен.