Linux: HowTo – CutyCapt unter Ubuntu 11.10 installieren

Das Thema rund um Screenshots von Internetauftritten ist sehr interessant und erfordert auch Grundwissen in der Linux-Materie. Die Web-Snapshots-Dienste vermehren sich schlagartig im Internet, aber welcher Dienst seine Qualität auf Dauer halten kann ist fragwürdig. Des Weiteren ist die Thematik der Web-Screenshots in Deutschland sehr umstritten.

Da mich das Thema selbst interessiert hat, habe ich mich im Internet ein wenig umgeschaut und bin auf verschiedene Lösungsansätze für Web-Screenshots gestoßen. Eine sehr beliebte und gängige Methode unter Linux, in diesem Fall Ubuntu und auch Debian, ist der Einsatz des Tools “CutyCapt”, dass in der Console über “Xvfb (X window virtual framebuffer)” Screenshots erzeugen kann.  CutyCapt erzeugte eine im WebKit gerenderte Webseite in vielen verschiedenen Ausgabeformaten (SVG, PDF, PS, PNG, JPEG, TIFF, GIF, BMP). Das Ausgabeformat lässt sich beim Erzeugen des Web-Screenshots bestimmen.

Wichtig zu wissen ist, dass gerade die Bildverarbeitung sehr ressourcenintensiv ist. Das heißt im Detail, dass der Arbeitsspeicher, die CPU und die Festplatte bei mehreren Prozessen mit CutyCapt gut strapaziert werden. In meinen Tests, ist ein vServer mit 1x 2,4 GhZ und 512MB RAM und 2GB Swap bei 5 gleichzeitigen CutyCapt-Aufrufen via Xvfb und aktiviertem Flash und JavaScript sehr ins schwitzen gekommen, sodass mir sogar bei größeren Internetauftritten die Swap-Auslagerung überlief und der Prozess mittels “kill -9 …” unterbrochen werden muss.

Bei der Planung eines Web-Screenshot-Dienstes sollte berücksichtigt werden, dass die entsprechenden Server mit ausgiebig Arbeitsspeicher (mindestens 4GB) und viel Rechenleistung (z.B. Intel i5 oder Intel Xeon) ausgestattet sind. Diverse Nachfragen bei Web-Screenshot-Anbietern bestätigten dies.

Bei der Installation und Vorbereitung solltet ihr beachten, dass unter Linux (Ubuntu/Debian) das Microsoft-Schriftarten-Paket fehlt und nachinstalliert werden muss. - Wenn die Microsoft-Schriftarten (Arial, Verdana, …) [apt-get: msttcorefonts] fehlen, sehen eure Web-Screenshots eher unglaubwürdig und quantitativ aus, da Linux auf die im System vorliegenden Fallback-Schriftarten (z.B. Serifen-Schriften) zurückgreift. Ebenfalls solltet ihr das Flash-Plugin [apt-get: flashplugin-installer] installieren, sodass auch Internetauftritte mit Flash-Anwendungen geladen werden und ein erfolgreichen Web-Screenshot erzeugt werden kann. Zahlreiche Dienste im Internet bieten die Flashunterstützung zum Beispiel nicht an. - Viele Gründe sind die Sicherheitslücken und nötige Rechenleistung bei Flash-Anwendungen.

Installation
Bevor die Installation durchgeführt wird, aktualisiert bitte eure Packet-Liste mittels “sudo apt-get update”. Unter Debian meldet ihr euch bitte mit einem Benutzer mit root-Rechten an und gebt nur “apt-get update” ein.

  1.  

Wir installieren zusätzlich noch PHP5 als Command-Line-Interface und die PHP5-GD-Library für die eventuelle Bildverarbeitung in PHP5 Skripten.

Nach der Installation der Pakete müsst ihr CutyCapt aus dem SVN-Repository laden und kompilieren.

  1.  

Nach dem erfolgreichen Kompilieren von CutyCapt, könnt ihr euren ersten Web-Screenshot durchführen. Dazu erzeugt ihr eine Screen-Session auf dem Display-Port “0” mit einer Auflösung von “1024x768” Pixel und einer Farbtiefe von “24 Bit”. Je nach dem von wo ihr die folgenden Befehlszeilen ausführt, müsst ihr den Pfad zu CutyCapt anpassen.

Ein Beispiel für eine PNG-Datei und eine HTML-Datei als Ausgabe

Ausgabe als PNG-Datei

  1. span style="color: #ff0000;">"-screen 0, 1024x768x24"

Ausgabe als HTML

  1. span style="color: #ff0000;">"-screen 0, 1024x768x24"

Web-Screenshots mit Flash- und JavaScript-Unterstützung

  1. span style="color: #ff0000;">"-screen 0, 1024x768x24"


CutyCapt Parameter im Überblick

  1. -----------------------------------------------------------------------------
  2. Usage: CutyCapt --url=http://www.google.de/ --out=google.png
  3. -----------------------------------------------------------------------------
  4. --help                         Print this help page and exit
  5. --url=<url>                    The URL to capture (http:...|file:...|...)
  6. --out=<path>                   The target file (.png|pdf|ps|svg|jpeg|...)
  7. --out-format=<f>               Like extension in --out, overrides heuristic
  8. --min-width=<int>              Minimal width for the image (default: 800)
  9. --max-wait=<ms>                Don't wait more than (default: 90000, inf: 0)
  10. --delay=<ms>                   After successful load, wait (default: 0)
  11. --user-styles=<url>            Location of user style sheet, if any
  12. --header=<name>:<value>    request header; repeatable; some can't be set
  13. --method=<get|post|put>        Specifies the request method (default: get)
  14. --body-string=<string>         Unencoded request body (default: none)
  15. --body-base64=<base64>     Base64-encoded request body (default: none)
  16. --app-name=<name>              appName used in User-Agent; default is none
  17. --app-version=<version>        appVers used in User-Agent; default is none
  18. --user-agent=<string>          Override the User-Agent header Qt would set
  19. --javascript=<on|off>          JavaScript execution (default: on)
  20. --java=<on|off>                Java execution (default: unknown)
  21. --plugins=<on|off>             Plugin execution (default: unknown)
  22. --private-browsing=<on|off>    Private browsing (default: unknown)
  23. --auto-load-images=<on|off>    Automatic image loading (default: on)
  24. --js-can-open-windows=<on|off> Script can open windows? (default: unknown)
  25. --js-can-access-clipboard=<on|off> Script clipboard privs (default: unknown)
  26. --print-backgrounds=<on|off>   Backgrounds in PDF/PS output (default: off)
  27. -----------------------------------------------------------------------------
  28. <f> is svg,ps,pdf,itext,html,rtree,png,jpeg,mng,tiff,gif,bmp,ppm,xbm,xpm
  29. -----------------------------------------------------------------------------
  30. http://cutycapt.sf.net - (c) 2003-2010 Bjoern Hoehrma

Fazit …
Es ist empfehlenswert, dass ihr CutyCapt in einem virtualisierten Guest-System via KVM/Xen oder einem extra angemieteten vServer betreibt. Aufgrund der installierten Pakete wie “xvfb”, “flashplugin-installer”, und weiteren Paketen werden eventuelle Sicherheitslücken erzeugt. Wenn eine virtuelle Maschine mal angegriffen wird ist dies weniger schlimm, als wenn gleich ein gesamtes Host-System ausfällt. Zudem solltet ihr die Last auf dem Server bedenken. Ein Load-Balancer kann hier von Vorteil sein.
Sicherlich ist CutyCapt eine sehr interessante und schöne Spielerei, jedoch sind die Pflege, Erweiterungen und Aufwände nicht zu unterschätzen. Wer viel Zeit und graue Haare sparen möchte, sollte sich hier nach einer kostengünstigen Lösung, wie zum Beispiel www.websnapr.com oder www.thumbshots.de umsehen. Die Anbieter stellen API’s zur Verfügung, um die generierten Web-Screenshots auf dem eigenen Internetauftritt einzubinden.

Bedanken möchte ich mich noch bei den informativen Seiten www.debianroot.de und www.daveelkins.com, die mir den Anreiz zum Selbstversuch auf einem vServer und CutyCapt gegeben haben.

Tags: , , , , , , , , ,

Hinterlasse eine Nachricht