如何以 root 身份在 Ubuntu 服务器上运行节点 Puppeteer 应用程序

jsp*_*lla 3 ubuntu vps node.js npm puppeteer

我正在尝试运行使用 npm 包 Puppeteer 来抓取网站的节点应用程序,使用使用 root 作为我登录的默认用户的 VPS。

它永远不会奏效。我总是要花半个小时在谷歌上搜索才能找到解决方案……好吧,没有更多了。

jsp*_*lla 6

做这个:

0. 运行 sudo apt update

1.安装libx的东西

sudo apt-get install libpangocairo-1.0-0 libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxi6 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libgconf2-4 libasound2 libatk1.0-0 libgtk-3-0
Run Code Online (Sandbox Code Playgroud)

2. 在 Puppeteer 应用程序的 launch() 部分设置 --no-sandbox 参数(仅当您以 root/root 的 cron 运行时才需要)

const browser = await puppeteer.launch({headless: true, args: ['--no-sandbox']})
Run Code Online (Sandbox Code Playgroud)

E:正如 Niko 所指出的,--no-sandbox打开您的服务器以接受来自抓取工具访问的网站的恶意攻击。看起来其他地方有一些 SO 问题发布了实施起来并不可怕的替代方案。我喜欢大卫在这里的回答这似乎表明即使在 2021 年--no-sandbox在某些情况下仍然是必要的邪恶。

E2:见下面的答案。看起来在 2021 年我们也必须安装libgbm-dev

  • `--no-sandbox` 非常危险,只能在*受信任的*网站上运行。-1 (2认同)

Nik*_*kov 5

通过 SSH 连接到服务器:

\n
    \n
  1. 打开你的终端
  2. \n
  3. 类型:ssh root@[服务器ip]
  4. \n
  5. 如果这是您第一次连接到服务器,您将收到安全提示。输入“是”
  6. \n
  7. 填写您的密码:\xc2\xa0\xc2\xa0[密码]
  8. \n
  9. 您现在应该已连接到您的服务器
  10. \n
\n

安装应用程序:

\n

sudo apt-get 更新

\n

sudo apt-get install -y libgbm-dev

\n

sudo apt install -y gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango- 1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-证书字体解放 libappindicator1 libnss3 lsb-release xdg-utils获取

\n

须藤安装卷曲

\n

卷曲-sL https://deb.nodesource.com/setup_14.x | 须藤-E bash-

\n

sudo apt安装nodejs

\n

sudo apt安装git

\n

git config --global user.name“你的名字”

\n

git config --global user.email“您的电子邮件”

\n

git clone “你的项目 git url”

\n

cd“你的项目文件夹”

\n

尼普我

\n

npm 启动

\n
\n

如果您需要在一台 VPS 服务器上运行多个应用程序 - 谷歌工具“Screen”

\n