【问题标题】:PHP: How to capture browser window screen with php?PHP:如何用 php 捕获浏览器窗口屏幕?
【发布时间】:2010-12-29 11:35:15
【问题描述】:

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

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

谢谢

【问题讨论】:

标签: php browser screenshot


【解决方案1】:

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

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

【讨论】:

  • 它确实知道浏览器的用户代理字符串。但与客户的实际计算机无关。
【解决方案2】:

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

对于那些说 PHP 不了解浏览器的人的旁注,我建议查看 PHP 手册中的 get_browser()。不算多,不过也不算什么。

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

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

        .

        #!/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 执行脚本:

        .

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

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

        帮助您入门的有用链接:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-02-21
          • 2021-11-09
          • 2023-03-29
          • 1970-01-01
          相关资源
          最近更新 更多