Domanda

Vorrei accedere alla parte Forum del community-server (ad es. http://forums.timesnapper.com/login.aspx?ReturnUrl=/forums/default.aspx ) e quindi scaricare una pagina specifica ed eseguire una regex (per vedere se ci sono messaggi in attesa per moderazione). In caso affermativo, vorrei inviare un'e-mail.

Mi piacerebbe farlo da un server Linux.

Attualmente so come scaricare una pagina (usando ad esempio wget) ma ho problemi di accesso. Qualche idea brillante su come funziona?

È stato utile?

Soluzione

Guardando l'origine della pagina di accesso sembra essere un'app asp.net quindi probabilmente dovrai fare un paio di cose per raggiungere questo obiettivo

Gestisci il campo nascosto __viewstate e pubblicalo di nuovo quando invii i dettagli di accesso.

Una volta superato questo suppongo che puoi fare riferimento alla pagina specifica in questione utilizzando solo un URL assoluto ma dovrai gestire il cookie di autenticazione dei moduli ASP.NET e inviarlo come parte della richiesta GET.

Altri suggerimenti

Potresti avere più fortuna con il selenio o vedere questa domanda per ulteriori suggerimenti:

Script per la registrazione della classe College

Personalmente, lo scriverei in Perl, usando WWW :: Mechanize e fai qualcosa del tipo:


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
}

Non ho idea se quanto sopra funzionerà, poiché non ho i dettagli di accesso a un server della comunità (qualunque cosa sia) per testarlo, ma dovrebbe darti qualcosa su cui potresti lavorare abbastanza facilmente, e mostra la potenza di WWW :: Mechanize.

Puoi fare tutto con wget. È necessario inviare il modulo tramite POST e memorizzare i cookie. Materiale pertinente dalla pagina man di wget:

--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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top