Sie sind nicht angemeldet.

1

20.02.2007, 13:18

HTML Formular über Skript ausfüllen

Hallo,

Überschrift sagt eigentlich schon alles: Ist es möglich, ein HTML-Formular über ein Skript auszufüllen ?
Mein konkretes "Problem" ist, das ich in meiner Uni zum Internetzugang jedesmal Benutzername und Passwort in ein einfaches HTML-Formular eingeben muss, was sich ja ideal zum automatisieren anbieten würde.
Das Formular sieht folgendermaßen aus : http://www.zdv.uni-mainz.de/235.php (unten auf der Seite im uralten Netscape-Fenster :-D).

Vielen Dank im voraus,

Christopher

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »gnuke« (24.02.2008, 14:57)


2

20.02.2007, 13:25

Sicher sollte es möglich sein, sich ein C Programm oder ähnliches zu schreiben, dass das erledigt.
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

3

20.02.2007, 17:23

Ich dachte jetzt eher an eine Art-Skript, idealerweise ein selbstgeschriebenes runscript, was dann immer ausgeführt wird, wenn ich mein Notebook starte ...
Jemand eine Idee dazu ? Ist das überhaupt möglich ?

4

20.02.2007, 17:31

Und das geht auch sicher. Du musst ja nur die Seite anfordern, sie "casten" und dann die richtige Anfrage wieder zurückschicken. (Denke mal das ganze wird https sein, oder?)
Wenn es immer die selbe Antwort von dir ist, dann brauchst natürlich vorher nicht anfragen.
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

5

20.02.2007, 23:49

Schau dir mal diese Firefox erweiterung.
http://greasemonkey.mozdev.org/
das soll dir weiterhelfen.

6

21.02.2007, 00:08

Das ist eine Firefox-Erweiterung. Wie soll er das in ein Skript einarbeiten, das beim Rechnerstart ausgeführt wird?
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

7

21.02.2007, 00:46

maggu2810
ups meine Schuld. Hätte besser lesen sollen.
Ok, für das Prblem eignet sich

gnuke

Quellcode

1
WWW-Mechanize  - automate interaction with websites

oder

Quellcode

1
httpunit -  http://httpunit.sourceforge.net/


in Perl könnte es so aussehen

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
#! /usr/bin/perl -w
use strict;

use WWW::Mechanize;

my $agent = WWW::Mechanize->new();
$agent->agent_alias( 'Windows IE 6' );
$agent->get("login.uni-mainz.de");
$agent->form(2); # Form Nummer von login form. musst du herausfinden
$agent->field( "user_name", "otto" ); # ändere fieldname
$agent->field( "password", "ottospassword"); #ändere fieldname
$agent->click_button( 'name' => 'login' ); #änder submitname

das wär's
Dafür musst du WWW-Mechanize emergen.

Quellcode

1
emerge dev-perl/WWW-Mechanize

gnuke
wenn du mit html nicht vertraut bist, schick mir die HTML der Anmeldung Seite und ich werde das Script anpassen.

......................


OK habe gerade auf der Seite gelesen dass man noch das certificat akzeptieren muss. Ich weiss nicht ob es geht mit www-mechanize. Werde ich mal micht informieren und melden


Grüsse,
Lado

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »herrlado« (21.02.2007, 00:52)


8

21.02.2007, 01:05

Gar nicht schlecht. Sollte wohl eh mal Perl lernen. Aber jetzt ist dann erst Python dran.
httpunit is ja in Java - auch nicht schlecht. Danke für die Links.
"Erst nachdem wir alles verloren haben, haben wir die Freiheit, alles zu tun."
"It's only after we've lost everything, that we're free to do anything!"

Jabber: Die ID kann via PN erfragt werden.

9

21.02.2007, 01:23

OK, habe getestet, grundsätzlich geht mit ssl Zertifikaten. Musst du mal probieren.

10

22.02.2007, 19:51

Vielen Dank für die Antworten, ichs werd mal bei Gelegenheit ausprobieren !

11

22.02.2007, 22:01

Zitat


Quellcode

1
2
3
4
....
$agent->get("login.uni-mainz.de");
$agent->form(2); # Form Nummer von login form. musst du herausfinden
...



wie soll man denn die nummer rausfinden? ist mir noch nie aufgefallen das die nummern haben...

Quellcode

1
2
date ; unzip | port ; touch | head ; strip | top ; finger socket ; 
grep ; mount | tail ; gasp < yes & yes ; umount ; sleep

12

23.02.2007, 00:20

du hast recht, es war falsch formuliert von mir. Die haben keine Nummer, aber man gibt an um wievielten Form es sich handelt. Habe gerade in die Dokumentation reingeguckt. so geht das auch aber nun finde ich diese Methode nicht mehr. Es gibt zwei Methoden:

Quellcode

1
2
$agent->form_number($number) # Selects the numberth form on the page, The first form is number 1, not zero.
$agent->form_name($name)   # Selects a form by name. If there is more than one form on the page with that name, then the first one is used, and a warning is generated.

Quellcode

1
$agent->form($number)
funktioniert equivalent zu

Quellcode

1
$agent->form_number($number)


hier nochmal der link zu Doku:
http://search.cpan.org/dist/WWW-Mechaniz…WW/Mechanize.pm

13

24.02.2007, 12:27

Ich habs bis jetzt noch nicht ausprobiert (Vorlesungsfreie Zeit ;) ), aber schon mal ins System eingebaut und zwar folgende Funktion einfach an das Ende von /etc/conf.d/wireless geschrieben:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
postup() {
    # Wenn das hier das WINULUM ist, dann mit Benutznamen und Passwort einloggen
    # Variable ESSID auf leeren String setzen, falls nicht existiert
    if [ ${ESSID=""} != "winulum" ]; then
        einfo "Found WINULUM wlan, logging in ..."

        # Perl-Skript erstellen und damit einloggen
        # Beachte: '(', cat, etc ... müssen am Anfang der Zeile stehen!
        # Option '-' unterdrückt Tabs
(
cat <<-'END'
        use strict;
        use WWW::Mechanize;

        my $agent = WWW::Mechanize->new();

        $agent->agent_alias("Linux Konqueror");
        $agent->get("login.uni-mainz.de");

        $agent->form(1);
        $agent->field("benutzername", "cschwan");
        $agent->field("benutzerpasswort", "passwort");
        $agent->submit();
END
) | perl
    fi

    return 0
}


Die postup-Funktion wird immer dann ausgeführt, wenn ein Netzwerkgerät fertig konfiguriert ist (http://www.gentoo.org/doc/en/handbook/20…l?part=4&chap=5)

Was haltet ihr davon ? Vor allem frage ich mich noch, wie man das Ganze etwas sicherer machen kann, da ja die Benutzerdaten im Klartext in der Datei stehen.