CentOS下部署使用Puppeteer

配置node环境

(基于puppeteer1.2+centos7.4)

cd /opt #切换到opt目录
wget "https://npm.taobao.org/mirrors/node/v8.10.0/node-v8.10.0-linux-x64.tar.xz" #下载tar包
tar xvJf node-v8.10.0-linux-x64.tar.xz #解压
ln -s /opt/node-v8.10.0-linux-x64/bin/node /usr/local/bin/node #建立软连接
ln -s /opt/node-v8.10.0-linux-x64/lib/node_modules/npm/bin/npm-cli.js /usr/local/bin/npm #建立软连接
node -v #查看node版本 
npm -v #查看npm版本

安装puppeteer

npm install puppeteer --ignore-scripts --save #因为不明原因(使用ss+privoxyFQ后也无法解决该问题),安装puppeteer时,执行同步安装Chromium的js脚本会导致失败,所以先skip掉。
cat /root/node_modules/puppeteer/package.json | grep chromium_revision #获取需要下载的chromium版本号
https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/%d/chrome-linux.zip #用之前获取的版本号替换掉上面链接中的%d,输入到浏览器地址栏中获取Chromium的zip包,这里需要FQ,本文中Chromium的版本号为543305,下面不再赘述。
mkdir -p /root/node_modules/puppeteer/.local-chromium/linux-543305 #创建Chromium的安装目录
unzip chrome-linux.zip #将zip包上传到上面创建的目录并解压
yum install pango.x86_64 libXcomposite.x86_64 libXcursor.x86_64 libXdamage.x86_64 libXext.x86_64 libXi.x86_64 libXtst.x86_64 cups-libs.x86_64 libXScrnSaver.x86_64 libXrandr.x86_64 GConf2.x86_64 alsa-lib.x86_64 atk.x86_64 gtk3.x86_64 ipa-gothic-fonts xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-utils xorg-x11-fonts-cyrillic xorg-x11-fonts-Type1 xorg-x11-fonts-misc -y #安装CentOS需要的依赖

若是不同OS,依赖安装参考github上puppeteer的troubleshooting

配置X11转发

此处以XShell为例,File -> Properties -> 勾选 X11 Forwarding

yum -y install xorg-x11-xauth #安装xauth

示例

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch({args: ['--no-sandbox', '--disable-setuid-sandbox'], headless: false, ignoreHTTPSErrors: true});
  const page = await browser.newPage();
  await page.goto('https://example.com');
  await page.screenshot({path: 'example.png'});
  setTimeout(() => { browser.close(); }, 3000);
})();

这里使用了一些额外的参数,包括关闭sandbox,取消headless,忽略https error
预期结果:浏览器打开网址并截屏,图片保存在当前目录

猜你喜欢

转载自www.cnblogs.com/yexuesong/p/9165789.html
今日推荐