Путаница с аргументами для Puppeteer

#javascript #puppeteer

#javascript #кукловод

Вопрос:

Я немного смущен аргументами, необходимыми для Puppeteer, в частности, при использовании puppeteer-extra stealth плагина. В настоящее время я просто использую все настройки по умолчанию и Chromium, однако я продолжаю видеть подобные примеры:

 let options = {
    headless: false,
    ignoreHTTPSErrors: true,
    args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-sync',
        '--ignore-certificate-errors'
    ],
    defaultViewport: { width: 1366, height: 768 }
};
  

Действительно ли мне нужно что-либо из этого, чтобы избежать обнаружения? Использовал Puppeteer, не устанавливая ни одного из них, и он проходит тест бота из коробки. --no-sandbox Для чего это нужно?

Комментарии:

1. --no-sandbox : «Отключает изолированную среду для всех типов процессов, которые обычно изолированы. Предназначен для использования в качестве переключателя на уровне браузера только для целей тестирования. »

2. --disable-sync : «Отключает синхронизацию данных браузера с учетной записью Google»

3. @kavigun так что мне не нужно --no-sandbox , верно? Я ничего не тестирую. Просто запускаю puppeteer

4. @Kex Я бы посоветовал вам использовать его, если не удается запустить только безголовый браузер (в некоторых системах Linux). Использование этого флага для страниц, которым вы не доверяете, может создать огромную угрозу безопасности. и я не думаю, что вам это не нужно, чтобы puppeteer-extra-plugin-stealth также работал

Ответ №1:

это функции chromium, а не специфичные для puppeteer

пожалуйста, взгляните на следующие разделы --no-sandbox для примера. https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#setting-up-chrome-linux-sandbox

Настройка песочницы Chrome Linux
Чтобы защитить среду хоста от ненадежного веб-контента, Chrome использует несколько уровней песочницы. Чтобы это работало правильно, сначала необходимо настроить хост. Если для Chrome нет подходящей песочницы для использования, произойдет сбой с ошибкой No usable sandbox !.

Если вы абсолютно доверяете контенту, который открываете в Chrome, вы можете запустить Chrome с аргументом —no-sandbox:

 const browser = await puppeteer.launch({args: ['--no-sandbox',
'--disable-setuid-sandbox']});
  

ПРИМЕЧАНИЕ: запуск без изолированной
среды настоятельно не рекомендуется. Вместо этого рассмотрите возможность настройки изолированной среды.

https://chromium.googlesource.com/chromium/src/ /HEAD/docs/linux/sandboxing.md#linux-sandboxing

Chromium использует многопроцессорную модель, которая позволяет предоставлять различные привилегии и ограничения различным частям браузера. Например, мы хотим, чтобы средства визуализации запускались с ограниченным набором привилегий, поскольку они обрабатывают ненадежный ввод и могут быть скомпрометированы. Средства визуализации будут использовать механизм IPC для запроса доступа к ресурсу у более привилегированного (процесса браузера). Подробнее об этом общем дизайне вы можете узнать здесь.

Мы используем различные методы песочницы в Linux и Chrome OS в сочетании для достижения хорошего уровня песочницы. Вы можете увидеть, какие песочницы в данный момент задействованы, просмотрев chrome:// sandbox (процессы рендеринга) и chrome:// gpu (процесс gpu).

. . .

Вы можете отключить все песочницы (для тестирования) с помощью —no-sandbox .