В Nstbrowser теперь доступно решение CAPTCHA с поддержкой 5 типов CAPTCHA.

Подробнее

🚀

Платформенный прокси запущен в Nstbrowser — встроенные прокси из$0.4/GB.

Начать сейчас

  • Цены
  • Документация
RU
Контакт

© 2026 NST LABS TECH LTD. ALL RIGHTS RESERVED

Продукт

Браузер с защитой от отпечатков пальцев
Nstbrowser RPA
AI Agent Skills
Прокси
Обход Cloudflare
Веб-разблокировщик

Решение

Облачный браузер для защиты от отпечатков пальцев
Управление несколькими аккаунтами
Веб-скрапинг
Решения против обнаружения ботов
Изоляция данных для безопасности предприятия
Проверка IP для Claude AI

Ресурс

Цены
Скачать
Торговая площадка RPA
Партнерская программа
Партнеры
Блоги
Примечания к выпуску

Поддерживать

Контакт

Документация

Юридический

Условия
политика конфиденциальности
Политика использования файлов cookie

ПродуктРешениеРесурсПоддерживатьЮридический

ПродуктРешениеРесурс

ПоддерживатьЮридический

© 2026 NST LABS TECH LTD. ALL RIGHTS RESERVED

Назад к блогу
образ docker
Browserless

Веб-скрейпинг Puppeteer: в Docker или Browserless

Запуск Puppeteer в Docker — это кардинальное изменение! Что такое образ Docker? Как оптимизировать Puppeteer? Узнайте в этом блоге.
Aug 22, 2024Vasilisa Samsonova

Введение в Docker Image

Docker-образ — это файл, используемый для выполнения кода в Docker-контейнере. Он действует как набор инструкций для создания Docker-контейнера, аналогично шаблону. Иными словами, это эквивалент снимков в виртуальной машине.

Docker-образ содержит все библиотеки, зависимости и файлы, необходимые для запуска контейнера, делая его автономным исполняемым файлом для контейнера. Эти образы могут быть разделены и развернуты в различных местах, что делает их высоко портативными.

Что такое Browserless?

Browserless от Nstbrowser — это облачная служба для работы с headless-версией Chrome, которая управляет онлайн-приложениями и автоматизирует скрипты без графического интерфейса. Это особенно полезно для задач, таких как веб-скрейпинг и другие автоматизированные операции.

У вас есть интересные идеи и вопросы о веб-скрейпинге и Browserless?
Давайте узнаем, чем делятся другие разработчики на Discord и Telegram!

Какие преимущества использования Puppeteer в Docker?

Использование Puppeteer в Docker имеет как минимум три преимущества:

  • Обеспечение согласованности среды.
  • Упрощение управления зависимостями.
  • Повышение масштабируемости и усиление безопасности.

Кроме того, запуск Puppeteer в Docker-контейнере позволяет обеспечить согласованные версии операционной системы и браузера на всех этапах разработки, тестирования и эксплуатации. Это также упрощает процесс установки браузера Chrome и его зависимостей, а также позволяет легко масштабировать контейнеры для обработки больших задач.

Кроме того, Docker-контейнеры предоставляют изолированную среду, что снижает потенциальные риски безопасности.

Как использовать Docker-образ Nstbrowser?

Прежде чем использовать Docker-образ Nstbrowser, необходимо выполнить следующие подготовительные действия:

  1. У вас должна быть настроена среда Docker. Если вы еще не установили Docker, вы можете ознакомиться с документацией Docker.
  2. Вам нужен аккаунт Nstbrowser. Если у вас его еще нет, вы можете зарегистрироваться на официальном сайте Nstbrowser.
  3. После регистрации перейдите на следующую страницу, чтобы получить свой API-ключ.
Nstbrowser API key

После выполнения вышеуказанных шагов, вы можете использовать следующую команду для загрузки Docker-образа Nstbrowser:

Bash Copy
# Загрузить образ Browserless
docker pull nstbrowser/browserless:0.0.1-beta

# Запустить образ Browserless
docker run -it -e TOKEN=xxx -e SERVER_PORT=8848 -p 8848:8848 --name nstbrowserless nstbrowser/browserless:0.0.1-beta

# После запуска вы можете использовать команду docker ps, чтобы проверить, работает ли контейнер правильно
docker ps
проверка контейнера

Использование Puppeteer в Docker для скрейпинга динамических сайтов

Теперь я покажу вам, как использовать Puppeteer на основе Docker-образа Nstbrowser для скрейпинга динамических сайтов. Мы пошагово пройдем через простой пример.

Шаг 1: Определение цели скрейпинга

Сначала мы должны определить информацию, которую хотим собрать. В этом примере мы выберем для сбора все содержимое тега H2 на блоге Semrush и выведем его в консоль.

скрейпинг блога semrush

Шаг 2: Написание скрипта для Puppeteer

Далее нам нужно написать скрипт на Puppeteer для сбора нашей целевой информации. Вот код Puppeteer для входа на целевую страницу и получения содержимого тегов H2:

JavaScript Copy
const page = await browser.newPage();

// Вход на целевую страницу
await page.goto('https://www.semrush.com/blog/seo-best-practices/');

// Получение содержимого тегов h2
const h2s = await page.evaluate(() => {
  const h2s = Array.from(document.querySelectorAll('h2'));
   return h2s.map(h2 => h2.textContent);
});

// Вывод содержимого тегов h2
console.log(h2s);

Шаг 3: Инициализация проекта

Перед реализацией этого шага выполните следующую команду для инициализации нового проекта:

Bash Copy
cd ~
makedir puppeteer-docker
cd puppeteer-docker

Отлично! Что нам нужно сделать дальше? Просто создайте следующие три файла с нашим кодом:

  • index.mjs
JavaScript Copy
import puppeteer from 'puppeteer-core';

async function execPuppeteer(browserWSEndpoint) {
  try {
    const browser = await puppeteer.connect({
      browserWSEndpoint: browserWSEndpoint,
      defaultViewport: null,
    });
    const page = await browser.newPage();

    // Переход на целевой URL
    await page.goto('https://www.semrush.com/blog/seo-best-practices/');

    // Получение содержимого тегов h2
    const h2s = await page.evaluate(() => {
      const h2s = Array.from(document.querySelectorAll('h2'));
      return h2s.map((h2) => h2.textContent);
    });

    // Вывод содержимого тегов h2
    console.log(h2s);

    // Закрытие браузера
    await browser.close();
  } catch (err) {
    console.error('launch', err);
  }
}

async function launchAndConnectToBrowser() {
  const host = 'host.docker.internal:8848';
  const config = {
    once: true,
    headless: true, // Установить headless режим
    autoClose: true,
    args: { '--disable-gpu': '', '--no-sandbox': '' }, // аргументы браузера должны быть в виде словаря
    fingerprint: {
      name: '',
      platform: 'mac',
      kernel: 'chromium',
      kernelMilestone: 124,
      hardwareConcurrency: 8,
      deviceMemory: 8,
    },
  };
  const browserWSEndpoint = `ws://${host}/ws/connect?${encodeURIComponent(
    JSON.stringify(config)
  )}`;
  await execPuppeteer(browserWSEndpoint);
}

launchAndConnectToBrowser().then();
  • Dockerfile
Dockerfile Copy
FROM node:18-alpine AS base

# Установка зависимостей, только если необходимо
FROM base AS deps
RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories
RUN apk add --no-cache libc6-compat

RUN npm config set registry https://registry.npmmirror.com/
RUN npm install -g pnpm

# Установить рабочую директорию
WORKDIR /app

# Скопировать package.json и установить зависимости
COPY package*.json pnpm-lock.yaml ./

RUN pnpm install

WORKDIR /app
COPY --link ./ .

FROM base AS runner

# Скопировать зависимости
COPY --from=deps /app/node_modules ./node_modules

# Скопировать код приложения
COPY --from=deps /app .

# Команда запуска по умолчанию
CMD ["node", "index.mjs"]
  • package.json
JavaScript Copy
{
  "name": "docker-puppeteer",
  "version": "1.0.0",
  "main": "index.mjs",
  "dependencies": {
    "puppeteer-core": "^23.1.0"
  },
  "scripts": {
    "start": "node index.mjs"
  }
}

Превосходно! Мы создали три необходимых файла! Осталось только одно: установить зависимости проекта.

Bash Copy
pnpm install

Шаг 4: Создание и запуск Docker-образа

Вы готовы? Наконец-то мы можем создать и использовать Docker-образ:

  • Откройте консоль
  • Перейдите в директорию проекта
  • Выполните следующую команду для создания Docker-образа
Bash Copy
docker build -t puppeteer-docker.

Выполнили? Теперь выполните следующую команду для запуска нашего puppeteer-docker образа. Он автоматически выполнит скрипт Puppeteer для выполнения операции скрейпинга:

Bash Copy
docker run puppeteer-docker

Вы закончили? Пожалуйста, выполните следующий скрипт, чтобы запустить наш образ puppeteer-docker. Он автоматически выполнит наш скрипт Puppeteer для выполнения операции сбора данных:

Bash Copy
docker run --rm --network="host" puppeteer-docker

В итоге вы увидите следующий вывод. Это результат сбора всех заголовков H2 на целевой веб-странице:

вывод сбора данных

Оптимизация производительности Puppeteer в Docker

Оптимизация производительности Puppeteer в среде Docker включает в себя несколько ключевых стратегий для обеспечения эффективной работы задач автоматизации браузера.

1. Уменьшение размера контейнера

Выбирайте легковесные базовые образы, такие как node:alpine или node:slim, чтобы уменьшить размер образа.

Удалите ненужные зависимости и файлы, а также используйте файлы .dockerignore для исключения ненужных файлов, чтобы сделать образ более компактным.

2. Включение режима без интерфейса

Активируйте режим без интерфейса ({ headless: true }) в Puppeteer. Это позволит запускать браузер без графического интерфейса, что снизит потребление ресурсов и повысит производительность.

3. Правильное распределение ресурсов

Убедитесь, что контейнер Docker получает достаточно ресурсов CPU и памяти для успешного выполнения задачи автоматизации браузера.

Используйте функции ограничения ресурсов Docker (такие как --cpus и --memory), чтобы управлять использованием ресурсов контейнера и избегать конкуренции за ресурсы в многоконтейнерной среде.

4. Оптимизация Dockerfile

Уменьшите количество слоев в Dockerfile и объедините несколько команд в одну инструкцию RUN, чтобы сократить время сборки образа.

Используйте многоступенчатую сборку для разделения зависимостей между этапами сборки и выполнения, что позволит создать более компактный финальный образ.

Улучшите эффективность сборки и сократите время последующих сборок, правильно организовав команды Dockerfile для использования кэша сборки.

5. Настройка параметров запуска браузера

Настройте параметры запуска браузера Puppeteer, такие как args, executablePath и ignoreDefaultArgs, чтобы оптимизировать поведение браузера и использование ресурсов.

Настройте флаги запуска Chromium, чтобы отключить ненужные функции или включить опции повышения производительности, такие как отключение GPU-ускорения через --disable-gpu.

6. Оркестрация контейнеров

Разверните приложения Puppeteer на платформах оркестрации контейнеров, таких как Docker Swarm или Kubernetes, и воспользуйтесь возможностями автоматического масштабирования, балансировки нагрузки и управления ресурсами, предоставляемыми этими платформами.

Это позволит добиться горизонтального масштабирования, распределить нагрузку на несколько контейнеров и улучшить производительность в условиях высокого трафика.

7. Мониторинг и настройка производительности

Используйте инструменты мониторинга Docker (такие как Docker Stats, Docker Events и Docker Healthchecks) для отслеживания использования ресурсов контейнера и его состояния.

Реализуйте решение для мониторинга производительности приложений (APM), такое как Prometheus, Grafana или Datadog, чтобы отслеживать и анализировать ключевые показатели производительности, такие как время отклика, пропускная способность и уровень ошибок, для выявления и устранения узких мест в производительности.

Заключение

Запуск Puppeteer в среде Docker упрощает работу для разработчиков! Он предоставляет гибкое и масштабируемое решение для задач автоматизации браузера.

В этом блоге мы обсудили:

  • Значение и функцию Docker-образа
  • Конкретные шаги для сбора данных с помощью Puppeteer-Docker
  • 7 советов по обеспечению эффективной работы Puppeteer в Docker

Теперь начните использовать Browserless для создания собственного мощного Docker-образа и наслаждайтесь сбором данных!

Больше
обход http-2
Browserless
Что такое HTTP/2-фингерпринтинг и как его обойти?
Научитесь обходить HTTP/2-фингерпринтинг при веб-скрейпинге с помощью шести эффективных методов, от использования реальных браузеров до облачного сервиса Browserless. Оставайтесь незамеченными для современных анти-бот защит.
Jun 03, 2025Carlos Rivera
Загрузка расширений браузера в Nstbrowser Docker
Browserless
Как загрузить расширения браузера в Nstbrowser Docker?
Изучите 2 метода загрузки расширений в Nstbrowser и шаги для их запуска в Docker.
Mar 19, 2025Luke Ulyanov
Запуск профилей Nstbrowser в Docker
Browserless
Как запустить профили Nstbrowser в Docker?
Узнайте, как запускать профили Nstbrowser в Docker, синхронизировать данные между средами и автоматизировать рабочие процессы с помощью API. Это руководство охватывает все, от настройки до выполнения.
Mar 14, 2025Carlos Rivera
Как использовать Browserless от Nstbrowser для автоматического решения капчи Cloudflare Turnstile (2025)
BrowserlessCloudflare BypassHeadless Browser
Как использовать Browserless от Nstbrowser для автоматического решения капчи Cloudflare Turnstile (2025)
Узнайте, как обойти Cloudflare Turnstile, используя сервис Browserless от Nstbrowser и Puppeteer. Это руководство проведет вас через настройку, реализацию и преимущества автоматизации задач веб-скрейпинга, обеспечивая соответствие требованиям и эффективность.
Mar 07, 2025Luke Ulyanov
Как обойти защиту Cloudflare 5s с помощью Browserless от Nstbrowser (2025)
BrowserlessCloudflare BypassHeadless Browser
Как обойти защиту Cloudflare 5s с помощью Browserless от Nstbrowser (2025)
Узнайте, как обойти 5-секундный вызов Cloudflare с помощью сервиса Browserless от Nstbrowser и Puppeteer. Это руководство проведет вас через настройку, реализацию и преимущества автоматизации задач веб-скрапинга, обеспечивая соответствие и эффективность.
Mar 06, 2025Robin Brown
Браузер с искусственным интеллектом
Browserless
Browserless: Лучший браузер на основе ИИ для упрощения взаимодействия с веб-сайтами
Эта статья исследует мощную интеграцию агентов ИИ с Browserless для оптимизации и улучшения веб-скрапинга.
Jan 24, 2025Robin Brown
Каталог