目的:为了防止纠纷,客户投诉的时候无法追溯当时商品参与的活动,所以需要交易快照。
实现逻辑主要是借助Google的无图形界面的headless Chrome之后来实现,屏幕的截屏操作。
1. 包
我们通过composer的包来实现
spatie/browsershot
具体用法 看文档 https://packagist.org/packages/spatie/browsershot
2. 安装nodejs
官网下载然后安装
3. 安装puppeteer
npm install puppeteer //有可能无法安装
上面无法安装切换淘宝的源。
npm install -g cnpm --registry=https://registry.npm.taobao.org
cnpm install puppeteer
这边可以一般可以安装成功,但是还有问题,可能会导致无法启动。
..node_modules/puppeteer/.local-chromium/linux-496140/chrome-linux/chrome: error while loading shared libraries: libpangocairo-1.0.so.0: cannot open shared object file: No such file or directory
这是软件虽然安装了,但是依赖没有安装。
#依赖库
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 -y
#字体
yum install 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
我安装完之后,还是会有乱码。。
乱码解决方案
yum -y groupinstall "X Window System"
yum -y groupinstall chinese-support
yum -y groupinstall Fonts
4. 截屏
发起操作的时候可能会提示你无法执行,修改vendor包里面的browser.js,增加参数
if (!browser) {
browser = await puppeteer.launch({
ignoreHTTPSErrors: request.options.ignoreHttpsErrors,
executablePath: request.options.executablePath,
// args: request.options.args || ["--no-sandbox"]
args: ["--no-sandbox"] //增加参数
});
}