Web 截图

html2canvas:
  1. 获取元素样式
  2. 解析样式并将元素绘制在 canvas 中 // 不能规避 SOP
rasterizeHTML:
  1. 利用了
  2. 外部样式转化为内联样式
  3. 画在 canvase 中

捕获屏幕,写到 canvas:
  1. navigator.mediaDevices.getUserMedia // 捕获视频,有个选择器
  2. ctx.drawImage(video)

扩展 API:
  • browser.tabs.captureVisibleTab // 截图,没有选择器
  • chrome.desktopCapture // 捕获视频,有选择器,类似 getUserMedia, Firefox 不支持
  • ctx.drawWindow // 仅 Firefox 支持
WebView API:
服务端截图:
  • puppeteer: page.screenshot