Puppeteer
是一个 Node
库,它提供了一个高级API来控制DevTools协议上的Chrome或Chromium。 Puppeteer默认运行无头,但能够配置为运行完整(非无头)Chrome或Chromiumlinux
能够在浏览器中手动执行的大多数事情均可以使用 Puppeteer
完成!如下是一些能够入门的示例:git
SSR
服务端渲染)JavaScript
和浏览器功能直接在最新版本的Chrome中运行测试本地 MacOS :github
yarn add puppeteer
复制代码
down不下来就试试换源,推荐 nrm
工具chrome
yarn global add nrm
复制代码
nrm use taobao
复制代码
Centos 7 : 须要安装如下依赖,确保任务能够正常执行,相关字体依赖是解决截图后中文乱码问题的。(更多运行上的问题也能够查看此连接)docker
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
复制代码
再设置npm
const browser = await puppeteer.launch({
args: [ '--no-sandbox', '--disable-setuid-sandbox' ]
})
复制代码
Docker :浏览器
官方推荐使用 args参数:--disable-dev-shm-usage 默认状况下,Docker运行一个/dev/shm共享内存空间为64MB 的容器。这一般对Chrome来讲过小,而且会致使Chrome在渲染大页面时崩溃。要修复,必须运行容器 docker run --shm-size=1gb 以增长/dev/shm的容量。从Chrome 65开始,使用--disable-dev-shm-usage标志启动浏览器便可,这将会写入共享内存文件/tmp而不是/dev/shmbash
注⚠️: 在某些状况下(尤为在Docker中)很难正确终止Chrome。若是你遇到不少僵尸Chrome进程,那么 dumb-init 值得一试。对于PID = 1的进程有特殊处理,less
最后 若是仍是down不下来puppeteer,那么请戳这里下载Chromium,放入对应的环境或者项目里。 再设置 .npmrc
跳过下载 Chromium工具
puppeteer_skip_chromium_download = true
复制代码
再启动浏览器
const options = {
headless: true,
timeout: 0,
args: [ '--no-sandbox', '--disable-setuid-sandbox' ],
ignoreHTTPSErrors: true
};
const platform = os.platform().toLocaleLowerCase();
// 你所存放的路径
if (platform === 'linux') {
options.executablePath = path.join(__dirname, '../../../chrome-linux/chrome');
}
const browser = await puppeteer.launch(options);
复制代码
Have fun !