Das Ziel sind Screenshots von Webseiten, mit einem Batch Script automatisiert und kontrolliert. Keep it simple & stupid.
Die Wichtigste ist natürlich das Anfertigen der Screenshots. Das ließe sich vermutlich auch mit pure Batch erledigen, ich fand allerdings folgende Utilities besonders einfach und optimal für diesen Zweck: CutyCapt und IECapt. Beide Tools bestehen nur aus einer kleinen .exe Datei und sind kommandozeilenbasiert, optimal für eine Batch Benutzung.
CutyCapt fertigt Website Screenshots mit der WebKit Engine (Chrome und Opera nutzen diese Engine) an, IECapt nutzt die Engine des Internet Explorers.
Die Anwendung ist relativ einfach, über die CMD. Ein Beispiel:
CutyCapt.exe --url=http://www.spiegel.de/ --out=spiegel.png --min-width=1100 --min-height=800 --delay=1000
Wenn die Webseite besonders lang ist so wird sie komplett aufgenommen. Die Parameter steuern das Verhalten der Engine, beim IE gibt es nicht ganz so viele Möglichkeiten.
Das kann man jetzt in einem netten Script verpacken und schon lassen sich beliebige Webseiten mit einem Doppelklick fotografieren. Versehen mit Logging, Mailer und ein paar Kleinigkeiten, fertig.
Hier mein Script, welches 2 Screenshots der Fritz Box aufnimmt, in einem Unterordner speichert, eine Mail schickt und alles loggt, so als Muster:
Den Code könnt ihr bequem mit den Links/Rechts Pfeiltasten horizontal bewegen.
@echo off setlocal Color 9f REM ### INFORMATIONS ############################################ REM **************************************************** REM Title: Website Screenshot Daemon (WSD) REM Author: Hannes Schurig REM Created: 22.02.2013 REM Changed: 25.02.2013 REM Version: 0.3.5 REM Changelog: 0.1: complete mailer function with flexible callback REM 0.1.1: complete new mailer with call, parameters and no local variables, 50% less code REM 0.2: CutyCapt configured to take 2 screenshots, formatted datetime filename REM 0.2.1: collect errorlevels and added to mail text REM 0.2.2: save screenshots in subfolder, check if exist, create if needed REM 0.3: use working directory and absolute paths for sheduling compatibility REM 0.3.1: script renamed, detect working directory and filename REM 0.3.2: removed usesubdir variable, remove 40-45 and edit 51 & 53 for no subdir REM 0.3.3: fixed bug - spaces in working path lead to script malfunction REM 0.3.4: CutyCapt parameters as variable - they do not change REM 0.3.5: added 20 seconds max-wait parameter REM Credits: CutyCapt website screenshot utility: http://cutycapt.sourceforge.net/ - awesome! REM **************************************************** REM ### VARIABLES ############################################ for %%a in (%0) do set filename=%%~nxa for %%a in (%0) do set wd=%%~dpa REM remove last "\" or "/" from working directory (wd) path if "%wd:~-1%"=="\" set wd=%wd:~0,-1% if "%wd:~-1%"=="/" set wd=%wd:~0,-1% set subdir=%wd%\screenshots set mailer=1 set adminmail=hannes.schurig@online.de set log="%wd%\logfile.txt" set cutycapt="%wd%\CutyCapt.exe" set datetime=0 set scerrorlevel=0 REM same parameters for every screenshot? It's shorter with: set cutycaptparameters=--min-width=1100 --min-height=800 --delay=1000 --max-wait=20000 REM ### PROGRAM START ############################################ echo %date% - %time:~0,5% (i) WSD starting... >> %log% REM check and create subdir if wanted and needed if not "%subdir%"=="" ( if not exist "%subdir%" ( md "%subdir%" ) ) REM prepare short datetime with . instead : set datetime=%date%-%time:~0,5% set datetime=%datetime::=.% %cutycapt% --url=http://fritz.box/ --out="%subdir%/%datetime%-dashboard.png" %cutycaptparameters% set scerrorlevel=%errorlevel% %cutycapt% --url=http://fritz.box/system/syslog.lua --out="%subdir%/%datetime%-events.png" %cutycaptparameters% set scerrorlevel=%scerrorlevel%%errorlevel% echo %date% - %time:~0,5% (i) Screenshot taken with errorlevel %scerrorlevel% >> %log% echo %date% - %time:~0,5% (i) Sending admin mail... >> %log% if %mailer%==1 call :mailer "WSD" "Status" "noreply@WSD.com" "Script finished with errorlevel %scerrorlevel%" :shutdown echo %date% - %time:~0,5% (i) WSD shutting down... >> %log% goto end REM ### MAILER FUNCTION ############################################ :mailer start iexplore "http://php.webmailer.de/webmail.php&mailto=%adminmail%&contactname=%~1&subject=%~2&email=%~3&message=%~4" REM wait and close ping 127.0.0.1 -n 5 > nul taskkill /im "iexplore.exe" /f ping 127.0.0.1 -n 3 > nul REM ### PROGRAM EXIT ############################################ :end endlocal
Anmerkungen dazu:
Keine Unterordner? Löscht Zeile 49-54 und passt den „–out“ Parameter in Zeile 60 und 62 an. Wenn doch, passt Zeile 28 an.
IECapt statt CutyCapt? In Zeile 38 den Dateinamen anpassen.
Der Mailer muss natürlich angepasst werden. Habt ihr einen PHP Webmailer? Dann passt die Zeilen 36, 68 und 78 an. Wenn ihr keinen Mailer habt reicht es die Zeile 35 auf 0 zu setzen.
Ansonsten müsste das funktionieren.
Alternativ zu diesem Script gibt es auch Browser Plugins mit denen Website Screenshots erstellt werden können. Awesome Screenshot wäre ein Google Chrome Plugin für diesen Zweck. Die Extension fotografiert einen ausgewählten Bereich, den sichtbaren Bereich oder die komplette Seite. Das Bild lässt sich bearbeiten, speichern, teilen und mehr.
Über die Automatisierung dieser Geschichte muss man sich dann aber noch Gedanken machen, das ist vermutlich etwas schwieriger.
Bugs, Anmerkungen sowie Verbesserungsvorschläge nehme ich natürlich gerne entgegen.
Hallo,
vielen Dank! Soetwas suche ich schon lange und du hast mir wirklich geholfen.
Grüße aus München
Hannes
Hi,
sag mal, Du hast ernsthaft Deine Fritzbox im Netz, eventuell auch noch mit WiFi, und kommst da ohne Authentifizierung drauf?
Ts, ts!
😉
Gruss aus MUC,
Christian
Meine Fritzbox war für wenige Wochen lang ohne Passwort eingerichtet, ja. Daswar nötig um dieses Projekt umzusetzen, dessen Resultate ich wiederum in einem Rechtsstreit brauchte.
Aber wem nützt das etwas? An die Fritzbox kommt ja trotzdem nur, wer im WLAN drin ist. Und das ist ja mit WPA2 halbwegs brauchbar geschützt. Und von außen sollte man ja nicht sehen können, ob der Router eines WLANs mit Passwort gesichert ist, oder nicht. Oder?
Natürlich habe ich direkt nach der Aktion das Passwort wieder eingestellt. 😉
Hallo Hannes,
das Tool hat monatelang super funktioniert, besonders um Facebooktimelines festzuhalten. – Nun sind die Screenshots plötzlich viel kleiner und beim neuen Versuch, auf Facebook damit zuzugreifen, wird mir nur die Anmeldeseite angezeigt.
Hast du ne Idee, worans liegen könnte und tritt dieses Problem bei dir auch auf?