捕获浏览器内容的屏幕截图(网站)

Capture screenshot of browser content (website)

我的目标是拥有一个网站的图像(是的,就这么简单)。 我知道有像 html2canvas 这样的工具。但是我不希望客户端浏览器呈现屏幕截图。

一个原因是我使用了带有 webview 的 chrome 扩展,其本质上类似于 iFrame。出于安全原因,无法为包含 iFrame 的网站呈现屏幕截图。

我也知道他们正在开发 natively support capturing website screenshots 的功能,但我想要一个跨浏览器的解决方案,而不是依赖于浏览器的可能性。所有这些都发生在服务器上,因此它应该可以通过命令行执行。

我现在做的是:

  1. 通过命令行打开浏览器
  2. 将焦点切换到浏览器window通过命令行
  3. 制作屏幕截图(在 mac 上截屏,在 Linux 上滚动)通过命令行

在这个基本级别上做它的缺点是图像包含状态栏、浏览器插件等。事实上,我只想拥有实际的 网站内容 而没有这些特定于应用程序的东西。

最好的东西是命令行工具,它可以让我确定要捕获应用程序的哪个部分的图像。

一个例子是this plugin for Firefox or this server-side tool or all these tools providing screenshots of websites with different browsers and OS like this。我想知道他们是如何摆脱浏览器特定的 GUI 元素的。

加法:

我不知道我是否说得足够清楚,但我想要特定浏览器内容的屏幕截图,但没有浏览器特定的 GUI 元素。这意味着应用程序 运行 无头浏览器对我没有用。因为无头浏览器有自己的引擎。我特别想截取例如Firefox 版本 x.

大多数服务器端语言只提供 HTML 而从不渲染它。不久前,我 运行 研究了索引单页 javascript 应用程序的问题,其中一个解决方案是 phantomJS

PhantomJS 完全可以满足您的需求。您可以渲染 HTML(服务端),Phantom 也内置了 canvas,因此您可以使用它进行截图。 Phantom 是 webkit,因此它将涵盖大多数流行的浏览器(Chrome、Safari、Opera)。如果您想查看该网站在 Firefox 上的外观,您可以尝试 SlimerJS(类似于 PhantomJs,但运行 Gecko 引擎)。

这将涵盖所有最流行的浏览器(IE 除外)。这仍然是一个无头解决方案,但您将能够看到不同的布局引擎。您将需要 NodeJS,这可能需要一点学习,但它们都有关于屏幕截图的文档。祝你好运!

有两种方法可以做到:

  1. 为 Firefox 创建插件或 Chrome

屏幕截图是通过在页面上创建 canvas 叠加层来截取的。图片取自文档,所以浏览器UI不是图片的一部分。

  1. 重新创建浏览器(PhantomJS、TrifleJS)

首先没有浏览器UI。

我过去曾有过一些运气 XULRunner

您可以尝试此处概述的例程:https://blog.builtwith.com/2010/07/02/mozilla-automated-website-screen-grabber/

它基本上运行 shell 的 Firefox 并自动执行抓取屏幕截图的过程。它可能需要一些调整,但我认为它可以满足您所写的要求。

Awesomescreenshot 将实际向下滚动页面以截取实际屏幕截图,然后将这些图像组合成一张长图供您使用。您甚至可以将其设置为仅捕获正在显示的页面部分或选定部分。

您可以将其与宏类型 program/scripting 语言混合使用,例如 Auto Hot Keys。您可能会或可能不会发现它比使用命令行更容易。我想这取决于你想做什么。

你知道硒吗? 它是一个实际打开特定浏览器并运行脚本测试的测试工具。 它也可以用来截屏。

This might be a solution to your problem.

有多种工具可以开源,也可以付费使用。但是,请牢记安全原因。我会建议您使用 'Save to Drive' 扩展名 Google 本身。

这将为您提供一种更安全的方式来将屏幕截图直接保存到您的 google 驱动器,并且与屏幕截图一起,它还允许用户将图片或其他文档保存到 google 驱动器。

// 第二个建议 //

如果您不想使用上述扩展,那么您可以使用 'Blipshot',它是一个开源工具,也可以在 GitHub.

上使用

// 第三条建议 //

第三个最佳解决方案是全页屏幕截图

这三个工具是 Google Chrome 以及其他浏览器中评价最高的屏幕截图工具中的少数几个。

希望对您有所帮助!

浏览器、版本和os平台的多种组合

要捕获特定浏览器和版本的网页截图,需要一个可以启动的框架,运行并在所有这些浏览器中捕获,此外,问题没有说明特定平台是否也需要它结合上述浏览器和版本,如 OSX、Windows、Linux、Android 等。这些平台的不同版本将进一步增加 possible组合。

  • 您需要设置、维护这些浏览器
  • 寻找或创建一个框架来驱动它们,Selenium 可能是您最好的选择
  • 克服 Selenium 对某些 browser/OS 组合缺乏支持的问题
  • 一个管理这个和 exposes 的基础设施,就像一个很好的 API 供使用

但是有现有的解决方案,或者相关的解决方案,例如:

关于在特定浏览器、版本、平台等中获取屏幕截图

http://browsershots.org/ 是免费的,并且有大量的浏览器组合os,不太清楚是否可以通过编程方式访问它。

只需调用现有的 API

即可完成此操作

crossbrowsertesting.com 是一项似乎满足所有要求的商业服务(免费试用)。

拥有可以做到这一点的技术

http://usersnap.com 支持多种浏览器,包括桌面和移动浏览器,并且已经做了大量工作以在服务器上获得像素完美的屏幕截图,与用户在其环境中看到的相同。

工程师根据需求专注于解决方案...

对于我们工程类型来说,这是很典型的,我们陷入了如何实施特定解决方案的困境。问题不清楚获取这些屏幕截图将解决什么问题,即基本要求。如果知道这一点,也许还有其他更简单的方法可用?