Question

J'aimerais me connecter à la partie Forums de Community-Server (par exemple, http://forums.timesnapper.com/login.aspx?ReturnUrl=/forums/default.aspx ), puis téléchargez une page spécifique et effectuez une regex (pour savoir si des publications sont en attente pour la modération). Si tel est le cas, j'aimerais envoyer un courrier électronique.

J'aimerais faire cela à partir d'un serveur Linux.

Actuellement, je sais comment télécharger une page (à l'aide de wget, par exemple), mais j'ai un problème pour me connecter. Avez-vous une bonne idée de la façon dont cela fonctionne?

Était-ce utile?

La solution

En regardant la source de la page de connexion, il semblerait qu'il s'agisse d'une application asp.net. Vous devrez probablement faire plusieurs choses pour y parvenir -

Gérez le champ __viewstate masqué du formulaire et publiez-le lorsque vous soumettez les informations de connexion.

Une fois que vous avez terminé, je suppose que vous pouvez référencer la page spécifique en question en utilisant simplement une URL absolue, mais vous devez gérer le cookie d'authentification ASP.NET Forms et l'envoyer dans le cadre de la requête GET.

Autres conseils

Vous pourriez avoir plus de chance avec Selenium ou voir cette question pour plus de suggestions:

Script pour l'enregistrement d'un cours collégial

Personnellement, je l’écrirais en Perl avec WWW :: Mechanize . et faites quelque chose comme:


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
}

Je ne sais pas si ce qui précède fonctionnera, car je n'ai pas les informations de connexion à un serveur de communauté (quel qu'il soit) pour le tester, mais cela devrait vous permettre de travailler avec suffisamment de facilité, et montre la puissance de WWW :: Mechanize.

Vous pouvez tout faire avec wget. Vous devez soumettre le formulaire à l'aide de POST et stocker des cookies. Éléments pertinents de la page de manuel 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top