Automatische Laden einer Website

Du suchst ein Programm für einen bestimmten Zweck?
herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Automatische Laden einer Website

Beitrag von herrhannes » 02.06.2006 16:30:51

Hallo,

ich suche ein Script, das alle paar Stunden eine Seite bzw. mehrere aufruft.
Wie kann man das bewerkstelligen?
Zuletzt geändert von herrhannes am 03.06.2006 21:18:02, insgesamt 2-mal geändert.

Benutzeravatar
Snoopy
Beiträge: 4297
Registriert: 17.11.2003 18:26:56
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rh.- Pflz.

Beitrag von Snoopy » 02.06.2006 16:37:32

Hi

Bastel Dir ein Skript, dass Dir die gewünschte Seite aufruft, und steck es in die Crontab ( siehe [1] ), die es in dem gewünschten Zeitraum aufruft.

Nur mal so als kleiner Schupser oder Gedankenanstoss...einfach mal schnell getippt

Code: Alles auswählen

#!/bin/sh

# seite.sh
#
# Kleines Skript zum Aufrufen einer Web-Seite

# Ist die Web-seite denn ueberhaupt da ? Wenn nein...dann verpissen wir uns gleich wieder
# =====
ping -c1 -w2 www.hier_die_gewuenschte_seite.de 2>&1 >/dev/null

if [ "$?" != "0" ]
then
exit 0
fi

/usr/bin/firefox http://www.hier_die_gewuenschte_seite.de

exit 0
[1] Link
Zuletzt geändert von Snoopy am 02.06.2006 16:53:24, insgesamt 1-mal geändert.

gucki
Beiträge: 338
Registriert: 15.03.2004 09:15:49

Beitrag von gucki » 02.06.2006 16:50:27

Snoopy hat geschrieben:Hi

Bastel Dir ein Skript, dass Dir die gewünschte Seite aufruft, und steck es in die Crontab, die es in dem gewünschten Zeitraum aufruft.

Nur mal so als kleiner Schupser oder Gedankenanstoss...einfach mal schnell getippt

Code: Alles auswählen

#!/bin/sh

# seite.sh
#
# Kleines Skript zum Aufrufen einer Web-Seite

# Ist die Web-seite denn ueberhaupt da ? Wenn nein...dann verpissen wir uns gleich wieder
# =====
ping -c1 -w2 www.hier_die_gewuenschte_seite.de 2>&1 >/dev/null

if [ "$?" != "0" ]
then
exit 0
fi

/usr/bin/firefox http://www.hier_die_gewuenschte_seite.de

exit 0
[1] Link
noch ein Tipp.

Nimm wget anstatt gleich mit der Firefox-"Kanone" auf die "Spatzen"-Website zu schiessen. Wär für die Lösung als Cron-Job sicherlich sinnvoller.

Benutzeravatar
Snoopy
Beiträge: 4297
Registriert: 17.11.2003 18:26:56
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Rh.- Pflz.

Beitrag von Snoopy » 02.06.2006 16:57:23

gucki hat geschrieben:noch ein Tipp.

Nimm wget anstatt gleich mit der Firefox-"Kanone" auf die "Spatzen"-Website zu schiessen. Wär für die Lösung als Cron-Job sicherlich sinnvoller.
Er will sie doch anschauen oder net ?

Naja mal sehen was er genaueres vor hat...um das Teil einfach nur anzufunken sicherlich...dann reicht einaus.

Aber wie gesagt
Snoopy hat geschrieben:Nur mal so als kleiner Schupser oder Gedankenanstoss

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 02.06.2006 17:07:47

Ja... das Problem ist, ich habe keinen x-Server, Firefox fällt also schon einmal aus.
Mit wget habe ich das schon probiert, aber wie kann man eine Seite laden, die ein bestimmtes Cookie erwartet? Also, ich habe vor mich dort einzuloggen, wobei eiin Cookie gespeichert wird, das aber auch beim Aufruf vom Cronjob ausgelesen werden können muss.

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 02.06.2006 17:17:51

Kann man dazu zum Beispiel Lynx "missbrauchen"?

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 02.06.2006 17:24:29

Wie kann ich Cron davon abhalten, bei jeder Ausführung des Scriptes mir eine Mail zu schreiben? Darin steht bloß die Ausgabe von wget...

jhr-online
Beiträge: 2186
Registriert: 18.09.2005 15:52:02
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Beitrag von jhr-online » 02.06.2006 17:29:08

herrhannes hat geschrieben:Wie kann ich Cron davon abhalten, bei jeder Ausführung des Scriptes mir eine Mail zu schreiben? Darin steht bloß die Ausgabe von wget...
Du hängst der Zeile in deiner crontab ein

Code: Alles auswählen

2>&1 >/dev/null
an.

jhr
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 02.06.2006 17:36:16

Also wie kann ich jetzt Lynx für das Vorhaben einsetzen? Es soll eine Seite, bei der man sich anmelden muss, wobei man dann per Cookie quasi eingeloggt bleibt. Dazu möchte ich mich von Hand erst per Lynx einloggen, und dann Lynx dazu bringen, das Cookie zu verwenden um sich selbst einzuloggen.

gucki
Beiträge: 338
Registriert: 15.03.2004 09:15:49

Beitrag von gucki » 02.06.2006 17:37:20

herrhannes hat geschrieben:Ja... das Problem ist, ich habe keinen x-Server, Firefox fällt also schon einmal aus.
Mit wget habe ich das schon probiert, aber wie kann man eine Seite laden, die ein bestimmtes Cookie erwartet? Also, ich habe vor mich dort einzuloggen, wobei eiin Cookie gespeichert wird, das aber auch beim Aufruf vom Cronjob ausgelesen werden können muss.
lynx ist für so was (ohne Benutzerinteraktion) auch nicht wirklich das richtige.
Für deine Anwendung musst du dann schon auf PERL zurückgreifen.

Code: Alles auswählen

#!/usr/bin/perl -w

use strict;
use LWP;
use HTTP::Cookies;

my $url   = "http://www.website.de";
my $ua    = LWP::UserAgent->new();
my $website;

$ua->agent("Mozilla/5.0");
$ua->cookie_jar( {} );

my $form = $ua->get($url . "/login.php") or die "Kann index.php nicht laden";
$form->is_success() or die $form->message();

my $login = $ua->post($url . "/index.php",
        [ 
          "username" => "user",
          "passwort" => "geheimespasswort",
        ]
             ) or die "POST fehlgeschlagen";
if ( $login->content() ne "" ) {
  die "Login fehlgeschlagen";
}

$website = $ua->get( $url . "/anzeige.php" ) or print "GET fehlgeschlagen \n";
Neben dem Standard-Perl brauchst du dann noch die Module LWP und HTTP::Cookies. Das ganze ist leider nicht ganz trivial zu installieren.

ACHTUNG: code ist ungetestet und aus einer lauffähigen Version zusammenkopiert. Die Loginfelder "username" und "passwort" sind natürlich den Gegebenheiten anzupassen.

Gruß Gucki

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 02.06.2006 17:42:31

Das Problem ist, dass sich auf der Seite ein Captcha befindet. Man also sich nicht per Script einloggen kann. Aber es besteht die Möglichkeit "eingeloggt zu bleiben" was aber durch ein Cookie realisiert wird, weswegen man auch ein solches braucht...

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 02.06.2006 18:03:33

jhr-online hat geschrieben:
herrhannes hat geschrieben:Wie kann ich Cron davon abhalten, bei jeder Ausführung des Scriptes mir eine Mail zu schreiben? Darin steht bloß die Ausgabe von wget...
Du hängst der Zeile in deiner crontab ein

Code: Alles auswählen

2>&1 >/dev/null
an.

jhr
Wo hänge ich das an?

Wenn ich es einfach mit einem Leerzecihen dazwischen an das Ende der Zeile hänge, kommt wieder eine Mail, nun mit 2>&1 >/dev/null an den Namen des scriptes gehängt.

wie kann ich es auch schaffen, dass die Seite quasi den Eindruck bekommt, ich schaue sie mir mindestens eine Minute lang an?

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 02.06.2006 18:05:10

Allso wenn es sich um ein Login mit einem Popup handelt (siehe z.B. Heiselogin) so kann du wget name und passwort mitgeben.

Code: Alles auswählen

 --http-user=user --http-password=password
Wenn es sich um ein Formular basiertes login sammt cookie handelt, so mußt du erst unterschieden ob das Cookie eine einmalig vergebene "Sessionid" oder die Name/Passwort Komination enthält.
Handelt es sich um eine Name/Passwort kombination so kannst du das Cookie speichern und wget mitgeben

Code: Alles auswählen

--load-cookies file
Wenn aber eine "Sessionid" vergeben wird so wird es etwas komplizierter.
Als erstetes mußt du herausfinden was bei einem Login an den Server gesendet wird. Das amchst du auch mit wget aber fügst zwei optionen hinzu.

Code: Alles auswählen

--save-cookies file --keep-session-cookies
Dann kannst das Cookyfile wie im einfacheren Fall laden.
Ich hoffe das war verständlich...

Ach ja, du kannst einen Cookie auch von hand in den wget-Header einbauen indem du die Option verwendest.

Code: Alles auswählen

--header=header-line

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 02.06.2006 18:31:08

Mal schauen, ich habbe ein Cookie geladen, es von Hand verändert und es wget wieder untergeschoben, vllt klappt es ja^^

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 02.06.2006 18:34:22

Kann man da eigentlich auch Cookies vom Internet Explorer direkt verwenden?
Und wie kann man eine Verweildauer simulieren?

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 02.06.2006 18:44:17

Allso müßte ich einen speziellen Cookie in wget unterbringen würde ich es am ehesten wohl so machen:

Code: Alles auswählen

--header='Cookie: SessionId="236id08783"; $Path=/; $Version="1";'
Wie nun die Cookies beim IE, FF, OP, oder sonst wen abgespeichert werden weiß ich nicht.

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 02.06.2006 21:16:20

Jetzt wieder wegen dem Lynx...
Man kann ihn ja einfach per Script mit einer Seite starten, aber wie beendet man ihn dann nach einer bestimmten Zeit wieder?

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 02.06.2006 22:45:10

Ein kleines Script:

http://nopaste.debianforum.de/3323

Damit sollte es dir gelingen. :-)

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 09:58:59

Das Script scheint zu funktionieren, aber ist das normal, das bei der mit Puttyferngesteuerten Ausführung Programmende durch Interrupt 15 angezeigt wird aber nicht mehr die Bash?
Wenn ich jetzt auf strg+c drücke wird sie zwar wieder ngezeigt, ich kann aber nichts eingeben.

Benutzeravatar
Leonidas
Beiträge: 2032
Registriert: 28.04.2003 13:48:49
Lizenz eigener Beiträge: MIT Lizenz
Kontaktdaten:

Beitrag von Leonidas » 03.06.2006 11:07:20

herrhannes hat geschrieben:Und wie kann man eine Verweildauer simulieren?
Man kann keine Verweildauer simulieren, weil es sowas wie eine Verweildauer rein technisch gesehen nicht gibt: HTTP ist ein Verbindungsloses Protokoll. Das heißt, dass du eine Verbindung zum Server aufbaus, er dir die Seite schickt udn die Verbindung schließt. Die Seite kannst du dann anschauen so lange du willst, der Server kann nicht herausfinden wie lange du sie dir ansiehst.

Okay, jetzt gibts noch die Möglichkeit das der Betreiber mit Ajax-Kram dem Server alle paar Sekunden sagt, dass die Seite noch offen ist, aber wer macht denn sowas?
Wir wollten einen Marsch spielen, aber wir hatten nur Xylophone.

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 11:51:44

Das heißt dann, dass Seiten die eine bestimmte Verweildauer verlangen einfach ein Javascript einsetzen, das dann nach einer bestimmten Zeit eine Abfrage sendet? Dann kommt man da mit Lynx ja nicht weit...

Gibt es einen Browser, der keinen X-Server benötigt, aber Javascript kann?

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 03.06.2006 13:37:39

Das mit dem Interupt 15 ("externes quit" wenn man es so nennen will) ist völlig normal. das meldet Lynx.
Das mit dem Putty versteh ich nicht... Wie meinst du das, daß er die Bash nicht anzeigt? du bist immer in der bash (sofern du keine andere shell eingestellt hast) wenn du dich einloggst.
Meinst du den Eingabepromt? Hast du mal geschaut was passiert wenn du einfach RETURN drückst? Es kann sein, daß der Promt überschrieben wurde, aber eine Eingabe sollte dennoch möglich sein.

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 13:38:02

Ok wenn mir keiner hilft^^

Für alle die das lesen: Links2

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 13:41:09

ToPeG hat geschrieben:Das mit dem Interupt 15 ("externes quit" wenn man es so nennen will) ist völlig normal. das meldet Lynx.
Das mit dem Putty versteh ich nicht... Wie meinst du das, daß er die Bash nicht anzeigt? du bist immer in der bash (sofern du keine andere shell eingestellt hast) wenn du dich einloggst.
Meinst du den Eingabepromt? Hast du mal geschaut was passiert wenn du einfach RETURN drückst? Es kann sein, daß der Promt überschrieben wurde, aber eine Eingabe sollte dennoch möglich sein.
Ähm sorry,

ich bin absoluter Linux-Anfänger, natürlich meinte ich Prompt, aber das Wort ist mir gerade nicht eingefallen... Er zeigt dann das mit dem Interrupt 15 an, den Prompt aber erst wieder wenn ich danach Strg+c drücke. Aber dann kann ich nichts mehr eintippen. Vielleicht ist das aber auch ein Fehler von Putty...

herrhannes
Beiträge: 156
Registriert: 30.04.2006 10:25:32
Kontaktdaten:

Beitrag von herrhannes » 03.06.2006 13:53:02

Kann man Links2 per Kommandozeilenoption dazu bringen, alle JavaScripts, auch die die Popups öffnen, automatisch ohne Nachfrage auszuführen?

Antworten