Sandbox режим в Puppeteer является важной функциональностью, которая обеспечивает изоляцию браузерного контента и безопасность выполнения скриптов. Этот режим напрямую связан с Chromium и влияет на процессы рендеринга страниц, доступ к системным ресурсам и взаимодействие с Node.js.
По умолчанию Chromium запускает каждый рендер-процесс в песочнице (sandbox). Это означает:
Puppeteer наследует эти ограничения, управляя их через опции запуска браузера.
При запуске браузера через Puppeteer можно управлять sandbox с помощью
флага –no-sandbox и –disable-setuid-sandbox:
const puppeteer = require(&
(async () => {
const browser = await puppeteer.launch({
headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox']
});
const page = await browser.newPage();
await page.goto('https://example.com');
await browser.close();
})();
Ключевые моменты:
–no-sandbox полностью отключает песочницу. Используется в
средах, где запуск с sandbox невозможен (например, Docker без прав
root).
–disable-setuid-sandbox снижает требования безопасности, но
сохраняет частичную изоляцию процессов.
[0810/123456.789012:ERROR:zygote_host_impl_linux.cc(100)] No usable sandbox!
Решения включают:
–cap-add=SYS_ADMIN.
–no-sandbox при запуске Puppeteer.
Для автоматизированного тестирования рекомендуется:
userDataDir Puppeteer.
const browser = await puppeteer.launch({
headless: true,
args: ['--no-sandbox', '--disable-setuid-sandbox'],
userDataDir: './tmp/chrome-profile'
});
Sandbox влияет на следующие возможности:
path.
–enable-logging и переменную окружения
DEBUG=puppeteer:*.
В контейнерах часто приходится отключать sandbox, так как большинство
Docker-образов не имеют настроенного setuid:
FROM node:20-slim
RUN apt-get update && apt-get install -y \
chromium \
fonts-liberation \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["node", "index.js"]
Запуск Puppeteer с –no-sandbox позволяет избежать ошибок
изоляции в контейнере.
Sandbox режим — это основа безопасного и стабильного тестирования с Puppeteer. Глубокое понимание его работы и корректная настройка позволяют управлять рисками, обеспечивать совместимость в разных средах и контролировать производительность браузерных процессов.