Frage

Ich möchte den Foren Teil der Community-Server (zB http://forums.timesnapper.com/login.aspx?ReturnUrl=/forums/default.aspx ) und dann eine bestimmte Seite herunterladen und einen regulären Ausdruck durchführen (um zu sehen, ob es irgendwelche Beiträge sind Warte für die Moderation). Wenn ja, würde Ich mag eine E-Mail senden.

Ich möchte das von einem Linux-Server tun.

Zur Zeit weiß ich, wie eine Seite zum Download (unter Verwendung von zum Beispiel wget), aber ein Problem hat sie anzumelden. Jede gute Idee, wie das funktioniert?

War es hilfreich?

Lösung

Mit Blick auf die Quelle der Login-Seite erscheint es eine asp.net app, so dass Sie wahrscheinlich ein paar Dinge brauchen würde, zu tun, um dies zu erreichen -

Verwalten Sie das Formular versteckt __VIEWSTATE Feld und Post, die zurück, wenn Sie die Login-Daten einreichen.

Wenn man einmal das bekommt Ich vermute, Sie die spezifische Seite in Frage verweisen kann nur eine absolute URL verwenden, aber Sie würden behandeln müssen die ASP.NET Forms Authentifizierungscookie und das die GET-Anforderung als Teil senden.

Andere Tipps

Sie können mehr Glück mit Selen oder diese Frage für weitere Vorschläge finden Sie unter:

Script für College-Klasse Registrierung

Persönlich würde ich es in Perl schreiben, mit WWW :: Mechanize und so etwas wie:


my $login_url = 'login url here';
my $username = 'username';
my $password = 'password';
my $mech = new WWW::Mechanize;
$mech->get($login_url)
    or die "Failed to fetch login page";
$mech->set_visible($username, $password)
    or die "Failed to find fields to complete";
$mech->submit
    or die "Failed to submit form";

if ($mech->content() =~ /posts awaiting moderation/i) {
    # Do something here
}

Ich habe keine Ahnung, ob die oben funktioniert, wie ich zu einem Community Server nicht Login-Daten haben (was auch immer das ist) zu testen gegen, aber es sollte Ihnen etwas geben Sie einfach genug arbeiten konnte, und zeigt die Leistung von WWW :: Mechanize.

Sie können alles mit wget tun. Sie müssen Formular abzuschicken POST und die Cookies zu speichern. Relevante Sachen aus der wget man-Seite:

--post-data=string
--post-file=file

Use POST as the method for all HTTP requests and send the specified data in the request body.
"--post-data" sends string as data, whereas "--post-file" sends the contents of file.  Other than
that, they work in exactly the same way.

This example shows how to log to a server using POST and then proceed to download the desired pages,
presumably only accessible to authorized users:

       # Log in to the server.  This can be done only once.
       wget --save-cookies cookies.txt \
            --post-data 'user=foo&password=bar' \
            http://server.com/auth.php

       # Now grab the page or pages we care about.
       wget --load-cookies cookies.txt \
            -p http://server.com/interesting/article.php
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top