无头浏览器
无头浏览器
参考博客:Headless browser - Wikipedia,TODO,这个页面得好好翻译一下
无头 Headless 就是没有图形交互界面 GUI 的意思,去掉 GUI 是因为 Headless 模式下的 Chrome 开放了编程接口,可以通过代码控制它的行为而不再需要图形界面,也就是所谓的浏览器自动化。无头 Chrome 可以部署在服务器端,根据事先写好的代码对客户端请求的页面做预渲染,将渲染好的静态页面数据发送给客户端,这样可以省去客户端页面首次渲染所需要的时间,让页面生成的速度显著提高。实例可以去油管看 Google 团队的视频。另外因为无头 Chrome 在服务器端就把 JS 代码渲消化了一些,生成静态页面数据,就让搜索引擎能抓到更多信息,有利于 seo。这些只是应用场景的一部分,浏览器可编程相当于一个网络操作系统向广大程序员提供了丰富的武器库,怎么用看各位的想象力。双刃剑是不可避免的,无头 Chrome 已经是很流行的网络攻击工具了。
无头浏览器的使用场景:
-
chrome 的无头模式,用来将 html 转为 pdf 简直完美
-
用于网络爬虫
普通的静态网页不需要用浏览器渲染,直接伪装好请求头开爬就是了。但有时我们还会遇到一些需要“动态加载”才能显示相应内容的网页——也就是说,我们需要爬的网络元素并不会直接出现在 HTML 节点里,而是必须通过 AJAX 等技术与网站后台服务器交换数据之后才能显示出来。
面对这样的动态网页,我们就需要借助 PhantomJS 等无头浏览器,从而模拟人类“打开浏览器、进入网址、等待加载动态网络元素”等一系列动作,然后就可以根据此时的 HTML 节点来爬数据啦。
PhantomJS 是真正的啥窗口都没有的无头浏览器,所以它的名字也很恰当——幽灵(Phantom)。
当然,Chrome、火狐等也都有对应的无头浏览器,在运行时可以选择让它们弹出窗口,这样有利于我们监控爬虫的运行状况 -
在进行自动化测试的时候,我们可以启用无头模式:How to run headless Chrome with Selenium in Python? - Stack Overflow