#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
, верно? Я ничего не тестирую. Просто запускаю puppeteer4. @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 .