[gelöst] täglich Screenshot von einer Webseite machen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

[gelöst] täglich Screenshot von einer Webseite machen

Beitrag von Exxter » 20.02.2020 09:53:58

Hallo,

ich suche eine Idee oder Lösung, wie ich automatisch täglich einen Screenshot einer Webseite (mit Login) machen kann. Die Webseite ist die Übersicht von Check_MK 1.6, der Screenshot soll einen täglichen Überblick geben. Hat jemand eine Idee, wie man sowas basteln könnte? Vielleicht gibts dafür ja auch schon etwas fertiges? Das Senden per Mail ist dann kein Problem.
Zuletzt geändert von Exxter am 03.03.2020 09:21:01, insgesamt 1-mal geändert.

Benutzeravatar
MSfree
Beiträge: 11604
Registriert: 25.09.2007 19:59:30

Re: täglich Screenshot von einer Webseite machen

Beitrag von MSfree » 20.02.2020 09:58:04

Warum Screenshot?
Warum nicht einfach das HTML-Dokument des Seite runterladen?

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: täglich Screenshot von einer Webseite machen

Beitrag von Exxter » 20.02.2020 10:01:16

Wäre nicht hübsch, auf der Seite sind Diagramme die so vermutlich nicht dargestellt werden könnten.

Benutzeravatar
MSfree
Beiträge: 11604
Registriert: 25.09.2007 19:59:30

Re: täglich Screenshot von einer Webseite machen

Beitrag von MSfree » 20.02.2020 10:04:45

Exxter hat geschrieben: ↑ zum Beitrag ↑
20.02.2020 10:01:16
Wäre nicht hübsch, auf der Seite sind Diagramme die so vermutlich nicht dargestellt werden könnten.
wget (und andere) laden Bilder mit runter.

Huo
Beiträge: 778
Registriert: 26.11.2017 14:03:31
Wohnort: Freiburg

Re: täglich Screenshot von einer Webseite machen

Beitrag von Huo » 20.02.2020 12:45:29

Zwei Möglichkeiten, Screenshots von der Kommandozeile aus aufzunehmen:

(1) als PDF mit Debianwkhtmltopdf

Code: Alles auswählen

wkhtmltopdf "https://debianforum.de/forum/" out_$(date +"%Y-%m-%d").pdf
(2) als PNG mit der Screenshot-Funktion von Firefox

Code: Alles auswählen

firefox -screenshot out_$(date +"%Y-%m-%d").png "https://debianforum.de/forum/"

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: täglich Screenshot von einer Webseite machen

Beitrag von Exxter » 20.02.2020 13:56:38

Vielen Dank für alle Idee. Das Problem ist leider die Authentifizierung. Man muss einen Benutzername und Passwort eingeben (kein htaccess), um auf die Übersicht zu kommen. Obwohl die Zugangsdaten im Firefox gespeichert sind, meldet sich Firefox nicht automatisch an weil es nur http ist. Ist ja normal gut, aber in dem Fall ist es völlig egal ob es verschlüsselt ist oder nicht. Habe auch bei dem Apache hinter der Seite SSL aktiviert, klappt trotzdem nicht, vermutlich merkt Firefox, dass es ein selbstsigniertes Zertifikat ist.
Es kann auch mit grafischer Oberfläche sein, ich habe jetzt ein X11 auf einer VM installiert und probiere es damit.

Colttt
Beiträge: 3012
Registriert: 16.10.2008 23:25:34
Wohnort: Brandenburg
Kontaktdaten:

Re: täglich Screenshot von einer Webseite machen

Beitrag von Colttt » 20.02.2020 16:31:03

Interessante sache, mir erschliesst sich der Sinn des ganze nur leider nicht.
Wenn er einen Überblick geben soll, warum dann nicht gleich dort einfach einloggen? Und für wen/was soll der Screenshot sein?
Debian-Nutzer :D

ZABBIX Certified Specialist

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: täglich Screenshot von einer Webseite machen

Beitrag von Exxter » 03.03.2020 08:40:00

Hallo,

ich habe es jetzt mit dem Tool https://packages.debian.org/buster/actiona gelöst, das startet Firefox, fährt mit der Maus zum Login-Button, macht einen Mausklick, wartet paar Sekunden, macht einen Screenshot mit scrot und beendet sich wieder. Jetzt muss ich nur noch ein kleines Bash-Script drum rum bauen welches die Mail verschickt aber das ist kein Problem mehr.

@Colttt: ist nicht auf meinen Mist gewachsen. Es war so bei der steinalten Check-MK Version, also muss es auch bei der neuen so sein :roll:. Nur dass bei der alten nur eine .htaccess vorgeschalten war, womit zB. auch wget klar käme, bei der neuen Version sind Benutzer eingerichtet weshalb ich diesen Umweg gehen musste.

Vielen lieben Dank für eure hilfe!

inne
Beiträge: 3289
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: täglich Screenshot von einer Webseite machen

Beitrag von inne » 03.03.2020 08:55:25

:arrow: https://selenium-python.readthedocs.io/ ... ent-window (Selenium mit Python und Chromium geht in Buster wunderbar)
:arrow: https://github.com/ariya/phantomjs/blob ... eenshot.js (PhantomJS auch)

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: [gelöst] täglich Screenshot von einer Webseite machen

Beitrag von Exxter » 03.03.2020 09:23:54

Hallo inne,

danke, aber was wäre der Vorteil dieser Tools gegenüber Actiona? Das einzige was mir Sorgen macht ist, dass Actiona vielleicht mal aus den Repo von Debian fliegt, aber das Problem hat man immer.
Zuletzt geändert von Exxter am 03.03.2020 14:35:05, insgesamt 1-mal geändert.

inne
Beiträge: 3289
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: [gelöst] täglich Screenshot von einer Webseite machen

Beitrag von inne » 04.03.2020 10:52:11

Kann actiona die komplette Seite aufnehmen, oder nur den Ausschnitt des Fenster? Ich mache manchmal Screens von meiner Ecosia Plantage (über 3000 Bäume schon)^^
https://inne.sdf-eu.org/tmp/Screenshot_ ... flanzt.png

Dazu muss aber auch das Cookie geladen werden.

Leider lässt sich actiona in Sid gerade nicht so einfach installieren.

Code: Alles auswählen

apt-get install actiona
Paketlisten werden gelesen...
Abhängigkeitsbaum wird aufgebaut....
Statusinformationen werden eingelesen....
Einige Pakete konnten nicht installiert werden. Das kann bedeuten, dass
Sie eine unmögliche Situation angefordert haben oder, wenn Sie die
Unstable-Distribution verwenden, dass einige erforderliche Pakete noch
nicht erstellt wurden oder Incoming noch nicht verlassen haben.
Die folgenden Informationen helfen Ihnen vielleicht, die Situation zu lösen:

Die folgenden Pakete haben unerfüllte Abhängigkeiten:
 actiona : Hängt ab von: libopencv-calib3d3.2 soll aber nicht installiert werden
           Hängt ab von: libopencv-contrib3.2 soll aber nicht installiert werden
           Hängt ab von: libopencv-features2d3.2 soll aber nicht installiert werden
           Hängt ab von: libopencv-highgui3.2 soll aber nicht installiert werden
           Hängt ab von: libopencv-imgcodecs3.2 soll aber nicht installiert werden
           Hängt ab von: libopencv-objdetect3.2 soll aber nicht installiert werden
           Hängt ab von: libopencv-stitching3.2 soll aber nicht installiert werden
           Hängt ab von: libopencv-superres3.2 soll aber nicht installiert werden
           Hängt ab von: libopencv-videoio3.2 soll aber nicht installiert werden
           Hängt ab von: libopencv-videostab3.2 soll aber nicht installiert werden
Magst Du dennoch mal eine Schritt für Schritt Anleitung aufzeigen, wie man mit actiona einen Screenshot einer Website macht?

Exxter
Beiträge: 385
Registriert: 10.01.2003 00:15:15
Lizenz eigener Beiträge: GNU General Public License

Re: [gelöst] täglich Screenshot von einer Webseite machen

Beitrag von Exxter » 04.03.2020 12:12:57

Hallo inne,

ich habe es unter Buster installiert. Vielleicht hilft ein apt-get -f install ?

Danach muss noch firefox-esr, scrot und wmctrl installiert werden.

In actiona zuerst ein Detached command anlegen:

Command: firefox
Parameters: http://seite.irgendwas

Danach einen Click einfügen, und die Seite, auf der der Login-Button steht, im Firefox öffnen. Zurück in actiona linke Maustaste auf das + bei Position und die Maustaste gedrückt halt, actiona verschwindet, Maus an die Position des Login-Buttons fahren und Maustaste loslassen.

Dann ein Command einfügen:

Command: scrot
Working directory: /pfad/Bilder/speichern/

Jetzt noch ein Detached command, bei Command habe ich "/usr/local/bin/ff-beenden" eingetragen. In der ausführbaren Datei steht:

Code: Alles auswählen

#!/bin/bash

DISPLAY=:0.0 wmctrl -c "Firefox"

exit 0
Der letzte Schritt ist nötig, weil über ein Kill der Firefox nicht sauber ausgeschaltet wird (sonst kommt beim Start eine Meldung vom Firefox, weiß nicht mehr wie sie lautet).

Die Zeiten der einzelnen Aktionen musst du testen, ich habe beim Start des Firefox zb. unter Common "Pause after" 10000 ms angegeben, damit der Firefox und die Seite auch wirklich geladen sind.

Aber genau wegen dem von dir angesprochenem stelle ich auf PDF-Druck um, denn scrot macht nur ein Bild des Bildschirms (logisch), wenn die Seite länger ist, fehlen Inhalte.

Ich weiß nicht ob ich das Script komplett posten kann, wenn ja, kannst du des als xxx.ascr abspeichern und in actiona öffnen:

Code: Alles auswählen

<?xml version="1.0" encoding="UTF-8"?>
<scriptfile>
    <settings program="actiona" version="3.10.0" scriptVersion="1.1.0" os="GNU/Linux"/>
    <actions>
        <action name="ActionClick" version="1.0.0"/>
        <action name="ActionMoveCursor" version="1.0.0"/>
        <action name="ActionDetachedCommand" version="1.0.0"/>
        <action name="ActionCommand" version="1.0.0"/>
    </actions>
    <parameters/>
    <resources/>
    <script pauseBefore="2" pauseAfter="0">
        <action name="ActionDetachedCommand" comment="Firefox starten" pauseAfter="2000">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <exception id="32" action="0" line=""/>
            <parameter name="command">
                <subParameter name="value" code="0">firefox</subParameter>
            </parameter>
            <parameter name="parameters">
                <subParameter name="value" code="0">https://uv.example.org</subParameter>
            </parameter>
            <parameter name="processId">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="workingDirectory">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
        </action>
        <action name="ActionMoveCursor">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <parameter name="position">
                <subParameter name="unit" code="0">0</subParameter>
                <subParameter name="value" code="0">729:426</subParameter>
            </parameter>
            <parameter name="positionOffset">
                <subParameter name="unit" code="0">0</subParameter>
                <subParameter name="value" code="0"></subParameter>
            </parameter>
        </action>
        <action name="ActionClick" comment="klick Login" pauseAfter="1000">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <exception id="32" action="0" line=""/>
            <exception id="33" action="0" line=""/>
            <parameter name="action">
                <subParameter name="value" code="0">pressRelease</subParameter>
            </parameter>
            <parameter name="amount">
                <subParameter name="value" code="0">1</subParameter>
            </parameter>
            <parameter name="button">
                <subParameter name="value" code="0">left</subParameter>
            </parameter>
            <parameter name="position">
                <subParameter name="unit" code="0">0</subParameter>
                <subParameter name="value" code="0">720:431</subParameter>
            </parameter>
            <parameter name="positionOffset">
                <subParameter name="unit" code="0">0</subParameter>
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="restoreCursorPosition">
                <subParameter name="value" code="0">false</subParameter>
            </parameter>
        </action>
        <action name="ActionCommand" pauseBefore="200">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <exception id="32" action="0" line=""/>
            <parameter name="command">
                <subParameter name="value" code="0">scrot</subParameter>
            </parameter>
            <parameter name="errorOutput">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="exitCode">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="exitStatus">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="output">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="parameters">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="processId">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="workingDirectory">
                <subParameter name="value" code="0">/root/Bilder</subParameter>
            </parameter>
        </action>
        <action name="ActionDetachedCommand">
            <exception id="0" action="0" line=""/>
            <exception id="1" action="0" line=""/>
            <exception id="2" action="1" line=""/>
            <exception id="32" action="0" line=""/>
            <parameter name="command">
                <subParameter name="value" code="0">/usr/local/bin/ff-beenden</subParameter>
            </parameter>
            <parameter name="parameters">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="processId">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
            <parameter name="workingDirectory">
                <subParameter name="value" code="0"></subParameter>
            </parameter>
        </action>
    </script>
</scriptfile>

inne
Beiträge: 3289
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: [gelöst] täglich Screenshot von einer Webseite machen

Beitrag von inne » 05.03.2020 16:05:17

Exxter hat geschrieben: ↑ zum Beitrag ↑
04.03.2020 12:12:57
ich habe es unter Buster installiert. Vielleicht hilft ein apt-get -f install ?
Unter Sid wird das auch wieder. Nur die Umstellung dort von Python 3.7 auf 3.8 ist glaub erst halb fertig, weswegen gerade die Paketverwaltung etwas aus dem Tritt ist.
Aber dann probiere ich es auch mal aus. Weil das Debianactiona auch viele andere Sachen kann und ich mag Automation gelegentlich können :-)

Antworten