PHP:如何用 php 捕获浏览器窗口屏幕?

PHP: How to capture browser window screen with php?

首先,我不确定,如果可以用 php 捕获浏览器窗口屏幕,那么
怎么办?

如果可能,最好只捕获网站内容,不包括菜单栏、工具栏、状态栏等浏览器部分。

谢谢


imagegrabscreen()imagegrabwindow(),这将允许您通过 COM 以编程方式从在同一台机器上运行的浏览器创建屏幕截图(但仅限 Win)。有关如何省略浏览器的 chrome,请参阅手册中的注释。启用 DCOM 后,这也适用于已设置为允许通过 DCOM 访问的远程 Windows 计算机。

对于那些说 PHP 不了解浏览器的人来说,我建议看看 PHP 手册中的 get_browser()。不是很多,但是,嘿,这不是什么。


这完全可以做到,只需要比 PHP 多一点的时间就可以做到。我有一个用 PHP 编写的应用程序,它以一定的时间间隔拍摄网站的快照。开始有点棘手,但这是我在 Linux 机器上采取的步骤:

  • 安装 Xvfb(或 vnc-server)以在内存中模拟 X Windows 会话。在显示屏上启动 Xvfb :1
  • 安装火狐
  • 安装 imagemagick
  • 创建一个 bash 脚本以在所需的 URL 上运行 Firefox。我的看起来像这样:

.

1
2
3
4
5
6
7
8
#!/bin/bash
DISPLAY=:1 firefox &
sleep 2s
DISPLAY=:1 firefox -kill-all &
sleep 1s
DISPLAY=:1 firefox -url $1 &
sleep 5s
DISPLAY=:1 import -window root /var/www/images/screenshots/$2.png
  • 从 PHP 执行脚本:

.

1
exec ('sh ../scripts/screencap.sh ' . $url . ' ' . $file_name);

对我来说最棘手的部分是在屏幕截图发生时让浏览器全屏显示。因为你不能直接访问浏览器,你必须通过火狐的配置文件来配置所有东西,这可能需要一些时间才能弄清楚。

帮助您入门的有用链接:

http://semicomplete.com/blog/geekery/xvfb-firefox.html
http://www.webmasterworld.com/forum21/9182.htm


PHP 对浏览器一无所知。事实上,通常PHP在浏览器接收到数据之前就已经运行完毕。

如果可能的话,它必须是一个客户端系统,例如 Javascript。这可以遍历 DOM,从而捕获浏览器认为它正在显示的模型;但我不记得看到任何工具来捕获实际图形。
无论如何,尚不清楚您可以用这些信息做什么。浏览器不允许 Javascript 访问本地文件。我想您原则上可以通过 Ajax 调用将其发送回服务器。


从根本上不受 Internet 架构的支持,这是有充分理由的。您连接到的服务器不应该有任何关于您的信息,而不是处理和响应您的请求所需的信息。服务器肯定不能捕获有关您在屏幕上查看的内容的信息。

也就是说,您可能可以安装一些涉及客户端技术的东西,例如 ActiveX、Flash 或 Java,它们会捕获屏幕,然后在 AJAX 请求中将其发送回服务器,但您可能不应该这样做。我无法想象你会对这样的事情有什么样的用途,除了调试布局问题。


您不能从 PHP(服务器端)执行此操作。

但是您可以使用众多 HTML 到 PDF 转换器之一来捕获图像(并且有很多工具可以将 PDF 转换为其他内容)。