2009-12-23 3 views
6

Zunächst einmal bin ich mir nicht sicher, ob es möglich ist, Browserfenster Bildschirm mit PHP zu erfassen, dann , wie es geht?PHP: Wie man Browserfensterbildschirm mit PHP erfasst?

Wenn es möglich ist, wird die beste nur die Inhalte der Website ohne Browser Teile wie menubar, Werkzeugleiste, Status usw.

Dank

+3

http://stackoverflow.com/questions/713938/how-can-i-generate-a-screenshot-of-a- webpage-using-a-server-side-script – vsr

+0

Ich bin spezifisch für PHP, aber Sie haben etwas cooles Dankeschön geteilt :) – Sarfraz

Antwort

9

Es gibt imagegrabscreen() und imagegrabwindow(), mit denen Sie programmatisch Screenshots von einem Browser erstellen können, der auf demselben Computer über COM ausgeführt wird (nur Win). Lesen Sie die Kommentare in der Anleitung, wie Sie den Chrome-Browser auslassen. Wenn DCOM aktiviert ist, würde dies auch mit Remote-Windows-Computern funktionieren, die für den Zugriff über DCOM eingerichtet wurden.

Auf einer Randnotiz für diejenigen, die sagten, dass PHP nicht über den Browser weiß, würde ich einen Blick auf get_browser() im PHP-Handbuch vorschlagen. Es ist nicht viel, aber hey, es ist nicht nichts.

2

PHP weiß nichts über den Browser zu erfassen sein. In der Tat ist PHP normalerweise fertig, bevor der Browser die Daten empfängt.

Wenn es überhaupt möglich ist, muss es ein Client-seitiges System wie Javascript sein. Dies kann das DOM durchlaufen und somit das Modell aufnehmen, das der Browser denkt, dass es angezeigt wird; aber ich erinnere mich nicht, irgendein Werkzeug zu sehen, um die tatsächlichen Grafiken zu erfassen. In jedem Fall ist nicht klar, was Sie mit solchen Informationen tun könnten. Browser lassen Javascript nicht auf lokale Dateien zugreifen. Ich nehme an, dass Sie es im Prinzip in einem Ajax-Anruf zurück zum Server senden könnten.

+0

Nun, es kennt die User-Agent-Zeichenfolge des Browsers. Aber nichts über den tatsächlichen Computer des Kunden. –

1

Grundlegend von der Architektur des Internets nicht unterstützt, und das aus gutem Grund. Der Server, zu dem Sie eine Verbindung herstellen, sollte keine weiteren Informationen über Sie haben, um Ihre Anfrage zu bearbeiten und zu beantworten. Der Server sollte sicher nicht in der Lage sein, Informationen über das zu erfassen, was Sie auf dem Bildschirm sehen.

Das heißt, Sie können wahrscheinlich etwas riggen mit clientseitige Technologien wie ActiveX oder Flash oder Java, die den Bildschirm erfassen und dann zurück auf den Server in einer AJAX-Anfrage, aber Sie sollten wahrscheinlich nicht. Ich kann mir nicht vorstellen, welche Art von Gebrauch Sie für so etwas brauchen würden, außer vielleicht Debugging Layout-Probleme.

0

Sie können dies nicht von PHP (serverseitig) tun.

Aber Sie könnten Shell und verwenden Sie eine der vielen HTML zu PDF-Konverter, um das Bild zu erfassen (und es gibt viele Werkzeuge, um eine PDF zu etwas anderem zu konvertieren).

6

Dies kann absolut getan werden, es dauert nur ein wenig mehr als PHP, um es zu ermöglichen. Ich habe eine Anwendung in PHP geschrieben, die in bestimmten Abständen Schnappschüsse von Websites erstellt. Es ist ein bisschen schwierig in Gang zu bringen, aber hier ist die Schritte, die ich auf einer Linux-Maschine nahm:

  • Installieren Xvfb (oder VNC-Server) eine X-Windows-Sitzung im Speicher zu emulieren. Starten Sie Xvfb auf dem Display: 1
  • Installieren Sie Firefox
  • installieren ImageMagick
  • ein Bash-Skript erstellen Firefox auf die gewünschte URL zu laufen. Meine sah so aus:

.

#!/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 
  • das Skript von PHP Execute:

.

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

Der schwierigste Teil für mich war, den Browser zum Vollbild zu bekommen, als der Screenshot auftrat. Da Sie nicht direkt auf den Browser zugreifen können, müssen Sie alles über die Konfigurationsdateien von Firefox konfigurieren, was einige Zeit dauern kann.

Nützliche Links zu erleichtern Ihnen den Einstieg:

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