分类: 工具开发

PhantomJS 继任者之 CDP

做过爬虫的对 phantomjs 肯定也不陌生了,稳坐爬虫界第一大杀器宝座好多年了。它提供了整套的 js 运行环境,基本可以认为浏览器能看到的用它就能抓。

关于 Chrome HeadLess

但毕竟开发者精力有限,前端又是推陈出新最快的一个领域,所以兼容性问题也越来越多,issue 列表越来越长。这时候继任者出现了,那就是 Chrome Headless,Google 出品必属精品。

Chrome Headless 就是无界面版的 Chrome,底层运行和 Chrome 没有任何区别,支持 Chrome 所有特性,随 Chrome 更新而更新。

控制协议 CDP

随 Chrome Headless 同时出现的控制协议就是 CDP(Chrome Devtools Protocol),到这可能就很熟了,就是 F12 控制台所用的协议,CDP 提供的功能比控制台体现的要更全,可以实现几乎所有的操作。

开源框架 Puppeteer

在 CDP 的基础上,Google 又提供了一个 NodeJS 平台下的工具包,提供了一些高层次的接口封装。例如一段截图代码只需要:

const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://www.github.com');
await page.screenshot({path: 'example.png'});
await browser.close();
})();

官网可以参见 https://github.com/GoogleChrome/puppeteer,简单执行 npm i puppeteer -g 就可快速安装。

All Done !

一个没有界面的 Chrome,只需要很少的代码就可以实现 测试web、测试代码、截图对比、爬虫、监控等高级功能,比 PhantomJS 更通用更稳定。

Recent Posts

Docker 容器非 root 用户监听 80 端口

起因是基于 CentOS 的 …

2 年 之前

基于 Docker 定时打印文件

先说背景,喷墨打印机有个很大的…

3 年 之前

Java 运行时反射获取来自继承的泛型

背景 正常情况下 Java 的…

3 年 之前

Java 基于 ByteBuddy 重写系统当前时间

背景 一般单元测试时总会有些代…

3 年 之前

华硕 B450F-Gaming 主板 I211-AT 网卡驱动安装

事情起因是买了块华硕的 ROG…

3 年 之前

PHP 安装 Memcached 扩展

登录服务器挨步执行: # su…

4 年 之前