【问题标题】:Confusion over args for PuppeteerPuppeteer 对 args 的困惑
【发布时间】:2020-10-05 07:48:10
【问题描述】:

我对 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 是干什么用的?

【问题讨论】:

  • --no-sandbox: "为所有通常被沙盒处理的进程类型禁用沙盒。仅用于测试目的的浏览器级别开关。"
  • --disable-sync: "禁止将浏览器数据同步到 Google 帐户"
  • @kavigun 所以我不需要--no-sandbox 对吧?我没有测试任何东西。只是运行 puppeteer
  • @Kex 如果只有无头浏览器无法启动(在某些 linux 系统上),我建议您使用它。对您不信任的页面使用该标志可能会带来巨大的安全风险。我不认为你不需要它 puppeteer-extra-plugin-stealth 也能正常工作

标签: javascript puppeteer


【解决方案1】:

这些是 Chromium 功能 - 不是木偶操作者特有的

例如,请查看--no-sandbox 的以下部分。 https://github.com/puppeteer/puppeteer/blob/main/docs/troubleshooting.md#setting-up-chrome-linux-sandbox

设置 Chrome Linux 沙盒
为了保护宿主 来自不受信任的 Web 内容的环境,Chrome 使用多层 沙盒。为了使其正常工作,应配置主机 第一的。如果没有适合 Chrome 使用的沙盒,它就会崩溃 出现错误没有可用的沙箱!。

如果您绝对信任您在 Chrome 中打开的内容,则可以启动 带有 --no-sandbox 参数的 Chrome:

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 操作系统上使用不同的沙盒技术,在 组合,达到良好的沙盒水平。你可以看到哪个 沙盒目前通过查看 chrome://sandbox (渲染器进程)和 chrome://gpu(gpu 进程)。\

。 . .

您可以禁用所有沙盒(对于 测试)使用 --no-sandbox。

【讨论】:

    猜你喜欢
    • 2023-01-15
    • 2010-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多