Skip to content

debian 安装puppeteer相关问题

1. 安装node

2.安装puppeteer

  • 新建一个用户用于执行 node : ````useradd puppeteer -d /home/puppeteer

  • 这里注意不要用root用户执行,不然不会自动下载chromium,后面运行 node 的时候也会因为沙箱安全问题出错。

    mkdir test && cd test && npm i puppeteer

3. 安装chromium 依赖

因为 puppeteer 只会下载 chromium 执行文件并不会为系统安装依赖。所以可以先安装依赖

  • 安装社区 chromium 会自动安装依赖:apt-get update && apt-get install chromium 安装不成功!

    • 这是安装程序时的一个安全相关策略 ,需要先设置一下 apt-key。
    Terminal window
    wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | sudo apt-key add -
    • 然后设置 Chrome 的仓库:
    Terminal window
    sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list'
    • 再次安装: apt-get install chromium
  • 手动安装依赖:

    • 方法一: apt-cache depends chromium |grep Depends |cut -c 13- | xargs apt insall
    • 方法二: apt install libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libgbm1 libasound2 libpangocairo-1.0-0 libxss1 libgtk-3-0

3.测试

  • 新建测试文件: touch test.js
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.baidu.com');
await page.screenshot({path: 'baidu.png'});
await browser.close();
})();
  • 执行 node test.js

    • 如果执行出错可用 ldd 看看 node_module 里的chrome差什么依赖
    ldd node_modules/puppeteer/.local-chromium/linux-856583/chrome-linux/chrome | grep no

4. 安装中文字体

  • scp baidu.png 到本地你会发现中文变成了方块字符,解决办法就是在debian上安装中文字体
apt-get install language-pack-zh*
apt-get install chinese*