Browserkskripte

(Last Updated On: 13. Juli 2015)

Download-Software-Skript mit iMacros

In dieser Übung werden wir uns ein Skript schreiben, welches immer die aktuellste Version einer Software von Chip.de herunterlädt. Dazu verwenden wir den Firefox-Browser sowie das zugehörige Addon iMacros. Das addon ist auch für den internet Explorer oder Google Chrome erhältlich. Downloadet und installiert euch das iMacros-Addon.  Nach einem Firefox-neustart habt ihr entweder links oder rechts von der Adresszeile des Browsers ein Icon, mit dem ihr iMacros ausführen könnt. Dort bekommen wir eine Übersicht an Macros, die eingerichtet sind. Wie im Windows-Explorer könne Sie die Macros und Ordner einteilen. Wir machen einmal einen Ordner Software-Downloads, in welchem Sie beispielsweise künftige automatische Downloadskripte für sämtliche Lieblingssoftware einrichten können.

2015-06-21_20h47_58

Jetzt richten wir ein neues Macro ein. Sie sollten dabei so weit wie möglich zum Download der software fortschreiten, wie Sie können. Was bedeutet das? Nun, nehmen wir an Sie wollen ein Macro erstellen, mit dem Sie die aktuelle Verison von Skype herunterladen. Sie könnten im Startfenster vom Firefox bereits mit dem Aufzeichnen des Macros anfangen und dabei mit aufzeichnen, wie Sie beispielsweise in Google nach Skype suchen und dann in der google Ergebnissuchliste auf eines der Zielergebnisse klicken. oder sie fangen bei Skype.com an und zeichnen dann mit auf, wie Sie sich durch das Hauptmenü der Seite zum Skype-Download durchhangeln.

Wesentlich cleverer ist es, wenn Sie beispielsweise direkt in der dedizierten Download-Seite von Skype anfangen, also http://www.skype.com/en/download-skype/skype-for-windows/downloading/, und erst auf dieser Seite auf den Button Record klicken. Gehen Sie beispielsweise auf die Seite und gehen Sie dann auf Record. Der Download-Dialog von Firefox wird automatisch nach einer bestimmten Weile kommen. Bestätigen Sie den Download-Dialog. Sie werden merken, dass iMacros den Dialog mit aufzeichnet. Beenden Sie die Aufzeichnung. Nach der Aufzeichnung wird Ihr Makro mit dem Dateinamen #Current.iim gespeichert.

2015-06-21_20h56_08

Sie sollten das Macro umbenennen, denn sonst wird es wieder übeschrieben, sobald Sie beim nächsten mal ein Macro aufzeichnen. Gehen Sie jetzt auf den Reiter Manage und danach auf Edit Macro.

2015-06-21_20h56_57

Jetzt sehen Sie den Quellcode des Macros, den iMacros geschrieben hat, während Sie Ihr Macro aufgezeichnet haben.

2015-06-21_20h57_41

ein paar Sachen gefallen uns da noch nicht. Weil wir beispielsweise in den Einstellungen des Firefox nicht eingestellt hatten, dass wir beim Downloaden einer Datie nach dem Ordner gefragt werden, steht als FOLDER ein Asterisk (*) da, das bedeutet, dass der Browser die Datei in den Standardordner (meist C:\users\<Username>\Downloads) abspeichert. Das können wir baändern, indem wir statt dem Sternchen einen alternativen Pfad angeben, beispielsweise unseren Software-Ordner auf einer externen Festplatte. Mit der schaltfläche Save & Close können wir das Skript abspeichern.

Nehmen wir jetzt einmal an, wir wollen, dass jede Woche die aktuelle Skype-Version mit diesem Macro heruntergeladen wird. Das Macro, welches wir aufgezeichnet haben, befindet sich als DAtei im Ordner C:\Users\<Username>\Documents\iMacros\Macros\.

Dieses iMacro können Sie über die Kommandozeile ausführen

"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" imacros://run/?m=C:\Users\<Username>\Documents\iMacros\Macros\<Dateiname>.iim

aus irgendeinem Grund ergeht es mir jedoch so, dass der firefox das Macro bei Angabe des absoluten Pfades nicht findet. Stattdessen musste ich mir eine .bat Datei schreiben und staattdessen dort folgendes angeben

cd C:\Users\<Username>\Documents\iMacros\Macros
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" "<Dateiname>.iim"

Erst dann hat es funktioniert.

Diesen Kommandozeilenbefehl in eine .bat-Datei gepackt können Sie jetzt mit einem Task Scheduler Ihrer Wahl als geplanten Task jederzeit ausführen lassen. Sie können beispielsweise den Windows Aufgabenplaner nehmen und über diesen die .bat-Datei einmal wöchentlich ausführen lassen.

Wollen wir nun mal ein anderes Biespiel probieren? Ein kompliziertes Beispiel wäre beispielsweise der Download der aktuellen KeePass-Version. Denn die KeePass-Hauptseite verlinkt immer auf SourceForge. Der Link zu SourceForge iwederum verändert sich jedesmal, weil im Link immer die Versionsnummer dabei steht. Deswegen ist es klug, beim Aufnehmen des Macros bei keepass.info/download.html anzufangen, aufzuzeichnen, dass man auf den Sourceforge-Button klickt und dann wiederum auf der Sourceforge-Seite aufzuzeichnen, dass man dort auf den Download-Button klickt. nur so stellt man sicher, dass man immer die aktuelle Version downloadet. Wenn wir jetzt das Skript bearbeiten, bekommen wir folgenden Quellcode

VERSION BUILD=8920312 RECORDER=FX
TAB T=1
URL GOTO=http://keepass.info/download.html
TAG POS=1 TYPE=IMG ATTR=SRC:http://a.fsdn.com/con/app/accelerator/button?button_size=medium&label=KeePass%202.29%20(Installer%20EXE%20for%20Windows)
ONDOWNLOAD FOLDER=* FILE=+_{{!NOW:yyyymmdd_hhnnss}} WAIT=YES
TAG POS=1 TYPE=A ATTR=TXT:direct<SP>link

auch hier müssen wir wieder bei ONDOWNLOAD den gewünschten Zielordner abändern. Was uns aber ebenfalls noch stört ist, dass beim Button, der auf der Startseite von KeePass ausgewählt wird, noch die URL mit der Versionsnumme drin steht. Wenn der button für den KeePass-Download abhängig von der Versionsnummer ausgewählt wird, wird das Skript natürlich nicht mehr funktionieren, sobald sich die Verisonsnummer wieder ändert. Das können Sie ganz einfach umgehen, indem sie das SRC-Attribut mit einer Wildcard-Belegen, so dass der Button nur noch abhängig von einem Teilstring des SRc-Attributs ausgewählt wird.

VERSION BUILD=8920312 RECORDER=FX
TAB T=1
URL GOTO=http://keepass.info/download.html
TAG POS=1 TYPE=IMG ATTR=SRC:*(Installer%20EXE%20for%20Windows)
ONDOWNLOAD FOLDER=* FILE=+_{{!NOW:yyyymmdd_hhnnss}} WAIT=YES
TAG POS=1 TYPE=A ATTR=TXT:direct<SP>link

Ab jetzt interessiert unser imacros skript nur noch dass am Ende der URL Installer Exe for Windows steht. Damit funktioniert das Donwload-Skript nun unabhängig von der Version.

Desweiteren sollten Sie gucken, dass Sie dem Skript möglichst viel Auswahlarbeit sparen. Beispiel: beim Download des FTP-Cleints von FileZilla könnten Sie grundsätzlich einfach nur die Seite https://filezilla-project.org/download.php aufrufen und dort dann mitskripten lassen, dass Sie auf die Option Show more klicken, um an die 64-Bit-Version von FileZilla zu kommen. Praktischer ist es hier aber, gleich von Haus aus die URL https://filezilla-project.org/download.php?show_all=1 aufzurufen, damit Ihnen diese Optionen ohne den zusätzlichen Aufzeichnungsaufwand zur Verfügung stehen. Auch bei FileZilla müssen Sie aufpassen, dass sie am Schluss den Link zur download-Schaltfläche bearbeiten, um das Skript verisonsunabhängig zu machen.

Nun ein noch komplizierteres Beispiel: der Download von goolge chrome. Das Beispiel ist deshalb komplizierter, weil Sie, wenn Sie den Download-Button unter https://www.google.de/chrome/browser/desktop anklciekn, zusätzlich die Lizenzbedingungen akzeptieren und ggf. den Haken entfernen müssen, damit Google Chrome nicht als Ihr Standardbrowser festgelegt wird. In meinem Test hatte iMacros überhaupt kein Problem damit, das Akzeptieren der Lizenztvereinabrung und das Deaktivieren des Hakens zum STandardbrowser aufzunehmen, ich musste anschließend wieder nur den Pfad zum Speichern der Setupdatei abändern.

Ein weiteres kompliziertes Beispiel ist der Download von NOtepad++. Wenn Sie auf Notepad++ auf den Link zum Download der letzten Version klicken, werden Sie feststellen, dass die aktuelle Version wieder in die URL eingecodet ist, also beispielsweise https://notepad-plus.plus.iorg/download/v6.7.9.2.html. Das ist natürlich für unser skript schwachsinn. Deswegen müssen Sie hier auf der Startseite notepad-plus-plus.org anfangen aufzuzeichnen und sich von dort zum Download der aktuellsten Version durchhangeln. DAnn wird nämlich nicht die URL aufgezeichnet, sondern die Auswahl des Download-Links der aktuellen Verison. Das Skript sieht dann so aus

VERSION BUILD=8920312 RECORDER=FX
TAB T=1
URL GOTO=https://notepad-plus-plus.org/
TAG POS=1 TYPE=A ATTR=TXT:Download
TAG POS=1 TYPE=A ATTR=TXT:v6.7.9.2<SP>-<SP>Current<SP>Version
ONDOWNLOAD FOLDER=* FILE=+_{{!NOW:yyyymmdd_hhnnss}} WAIT=YES
TAG POS=1 TYPE=IMG ATTR=SRC:https://notepad-plus-plus.org/assets/images/folder_download_4.png

Jetzt müssen Sie einfach nur wieder eine Wildcard anstelle der Versionsnummer einfügen, und es wird in zukunft immer der Download-link für die aktuelle Version verwendeT:

VERSION BUILD=8920312 RECORDER=FX
TAB T=1
URL GOTO=https://notepad-plus-plus.org/
TAG POS=1 TYPE=A ATTR=TXT:Download
TAG POS=1 TYPE=A ATTR=TXT:*<SP>-<SP>Current<SP>Version
ONDOWNLOAD FOLDER=<Download-Ordner> FILE=+_{{!NOW:yyyymmdd_hhnnss}} WAIT=YES
TAG POS=1 TYPE=IMG ATTR=SRC:https://notepad-plus-plus.org/assets/images/folder_download_4.png

Desweiteren macht es Sinn, wenn Sie so wenig Schritte in ein skript packen, wie möglich. Beispiel: Immer dann, wenn ich Audacity herunterlade, möchte ich automatishc auch die aktuelle Version des LAME MP3 Codecs herunterladen, weil ich diesen immer in meine AudaCity-Installation integrieren m,öchte. Anstatt jedoch in meinem AudaCity-Skript mit aufzuzeichnen, wie ich den LAME-Codec herunterlade, erstelle ich ein extra Skript und würde später beim Windows Ereignisplaner einfach das LAME-Skript kurz nach dem Audacity-Skript ausführen.

ein weiteres gutes Beispiel ist der download von ImgBurn über imbburn.com/index.php?act=download. Was ich hier ansprechen möchte ist, dass es möglichst ratsam ist, einen mirror auszuwählen, der am wahrscheinlichsten bestehen bleibt. Denn auf der Download-Seite von ImgBurn müssen Sie einen mirroar suwählen. Dabei kann es sein, dass im Laufe der Zeit irgendwann bestimmte Mirror-Seiten Ihren Dienst einstellen und daher Ihr Skript nicht mehr funktionieren wird. Ich habe deshalb darauf geachtet, bei der Aufzeichnung des Skripts den Mirror 7  – Provided by ImgBurn anzuklicken.

Noch ein anderes Beispiel. Nehmen wir an, Sie brauchen verschiedene VMware vSphere Software, weil Sie einen ESXi-Host zu Hause betreiben, auf dem einige virtuelle Maschinen laufen. WEnn Sie auf der Suchmaschine Google nach Download vSphere Client suchen, bekommen Sie einen schönen pregnanten Permalink namens https://www.vmware.com/go/download-vsphere-de. WEnn Sie jedoch auf den Link in den Suchmaschinenergebnissen klicken, bekommen Sie eine ellenlange URL mit viel variablem Schnickschnack, was später beim Wiederaufrufen der URL nicht klappen würde. sie klicken trotzdem auf den Link und zeichnen ganz normal den Download des vSphere Clients auf. Im Anschluss editieren Sie dann das Skript und verändern das URL GOTO-Statement, indem Sie den Permalink einfügen. Doch da kommt schon die nächste Hürde ins Spiel. Wenn Sie den Download einer Softwarekomponente durchziehen, werden Sie irgendwann zu einer Anmeldemaske kommen, in der Sie Benutzername und Passwort von Ihrem VMware-konto eingeben sollen. Wenn Sie auch diese Aktionen aufzeichnen lassen, werdne Sie später, wenn Sie das Skript bearbeiten, feststellen, dass die eingegebene E-Mail-Adresse und das Passwort im klartext im iMacros-Skript drin stehen. Das ist natürlich schlecht, denn wenn die .iim-Datei aus irgendeinem Grund mal einem Fremden in die Hände fällt, hat er die Anmeldedaten zu Ihrem Account. Grundsätzlich sollten Sie daher Downloads, bei denen Sie Anmeldedaten vermitteln müssen, nicht mehr mit iMacros scripten. Weiter unten zeige ich Ihnen, wie Sie sicher Downloads mit Hilfe von AutoItv3 automatisieren.

Direktpfade mit der Kommandozeile herunterladen

Bei Download-URLs, die direkt auf die zu herunterladende Datei führen, also so etwas wie http://domain.com/unterordner/datei.exe, könnt ihr euch je nach Protokoll einfach über die Kommandozeile herunterladen.

HTTP-Downloads könnt ihr euch entweder mit dem Internet Explorer herunterladen.

iexplore.exe http://<pfad zur datei> <Zielordner>

Hierbei bekommt ihr jedoch ein Downloadfenster, auf das ihr noch reagieren müsst. Eine elegantere Variante ist ein Powershell-Skript mit dem Namen download.ps1

param($url, $filename)
$client = new-object System.Net.WebClient 
$client.DownloadFile( $url, $filename)

Mit diesem Skript klönnt ihr in Zukunft alle HTTP-Dwonloads folgendermaßen herunterladen

powershell Set-ExecutionPolicy Unrestricted
powershell -ExecutionPolicy RemoteSigned -File "download.ps1" "http://domain.com/file.exe" "c:\filename.exe"

FTP-Downloads könnt ihr euch beispielsweise mit dem Tool WinSCP herunterladen, indem ihr eine Bat Datei mit folgendem inhalt schreeibt

winscp.com /command ^  
    "option batch abort" ^  
    "option confirm off" ^  
    "open ftp://<username>:<passwort>@domain.com/" ^  
    "get <pfad zur datei> <Zielordner>" ^  
    "exit"

alternativ könnt ihr natürlich auch mit Cygwin das mächtige tool wgeet installieren und dann in guter alter Linux-Manier downloaden.

Alternative: Chickenfoot

eine Alternative zu iMacros wäre grundsätzlich Chickenfoot. Denn auch Chickenfoot ist ein Browser-Addon, welches Sie ganz normal herunterladen und im Browser installieren können. leider wurde seit 2009 keine neue Version mehr entwickelt, weshalb das Addon leider nicht mehr für neuere Firefox-Versionen als Firefox 3 kompatibel ist. Vielleicht gibt es aber in ferner Zukunft irgendwann mal wieder eine Neuauflage, weshalb ich das Addon hier einmal erwähnen wollte.

AutoIt + MozRepl und FF.au3

AutoIt ist eine GUI-Automatisierungssoftware. mit ihr ist es also möglich, neben klassischen Kommandozeilenskripten, wie man Sie beispielsweise über Windows mit einer .bat-Datei oder über Linux mit einer .sh-Datei schreiben kann, auch grafische Skripte zu schreiben. Das bedeutet, man kann mit AutoIt beispielsweise ein Skript schreiben, bei dem bestimmte Schaltflächen gedrückt oder bestimmte Mausbewegungen simuliert werden. Das ist beispielsweise interessant, wenn man eine Software installieren möchte, die nur über einen grafischen Installer bedient werden kann, und keine Möglichkeit bietet, um den Installer komplett über die kommandozeile zu bedienen. Oder eben auch in unserem Fall, wenn wir über den Browser etwas machen.

Die meisten Tätigkeiten, die wir mit unserem Browser automatisieren wollen, könnte man bereits mit autoIt alleine automatisieren. Denn wie bereits gesagt können wir mit AutoIt grafische Makros schreiben und daher beispielsweise Mausklciks und Tastatureingaben im Firefox simulieren.

noch einfacher macht man es sich jedoch, wenn man sich neben AutoIt den Firefox inklusive dem Addon mozrepl und die AutoIt-Datei FF.au3 runterlädt. Die FF.au3 enthält Funktionen, die man nutzen kann, um Browser-tätigkeiten im Firefox noch einfacher zu automatisieren, als wenn man einfach nur AutoIt allein verwenden würde.

Als erstes installiert ihr euch ganz normal den Firefox und das Addon mozrepl. Nach der installation des Addons startet ihr den browser neu und aktiviert  Extras / mozRepl / Activate on Startup und starten Mozrepls zum ersten  mal über Extras / mozrepl / Start. Nun installiert ihr als nächstes AutoItv3. Den installer einfach mit den Standardoptionen durchklicken. Danach ladet ihr euch die FF.au3 herunter. Diese wird gespeichert im include-Verzeichnis von AutoIt3. Dieser befindet sich stadnardmäßig unter C:\Program Files (x86)\AutoIt3\Include. Nun ist alles fertig aufgesetzt.

sobald wir nun die FF.au3 und alles andere installiert haben, können wir die Funktionen der FF.au3 nutzen, um unseren Mozilla Firefox über AutoIt zu automatisieren. Eine Dokumentation aller Funktionen der FF.au3 gibt es hier.

Textverarbeitung von Inhalten mit curl und w3m

Wenn Sie ein Linux-System haben, können Sie mit den Linux-Textverarbeitungstools auf kommandozeilenebene Textinhalte aus Websiten extrahieren. Rufen Sie dazu die von Ihnen gewünschte Seite folgendermaßen auf, wenn Sie informationen aus dem puren HTML-Code der Website extrahieren wollen:

curl <Website>

und so auf, wenn sie Informationen aus dem formatierten Text der Website extrahieren wollen (also keine HTML-Tags in der Ausgabe haben wollen):

curl <Website> -s | w3m -dump -T text/html

Damit die beiden Varianten funktionieren, müssen Sie auf dem Linux-System natürlich die Tools curl und w3m installiert haben.

apt-get update
apt-get upgrade
apt-get install curl
apt-get install w3m

 

 

 

 

 

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

DaFRK

Andreas Loibl ist SAP-Berater, Ethical Hacker und Online Marketing Manager und schreibt auf seinem Blog DaFRK Blog über verschiedene Themen in den Sektoren Projektmanagement, Informationstechnik, Persönlichkeitsentwicklung, Finanzen und Zeitmanagement.

Das könnte Dich auch interessieren...

Kommentar verfassen

This site uses Akismet to reduce spam. Learn how your comment data is processed.