Pregunta

Me gustaría iniciar sesión en la parte de Foros del servidor de la comunidad (por ejemplo, http://forums.timesnapper.com/login.aspx?ReturnUrl=/forums/default.aspx ) y luego descargue una página específica y realice una expresión regular (para ver si hay publicaciones pendientes) para moderación). Si es así, me gustaría enviar un correo electrónico.

Me gustaría hacer esto desde un servidor Linux.

Actualmente sé cómo descargar una página (usando, por ejemplo, wget) pero tengo problemas para iniciar sesión. ¿Alguna idea brillante de cómo funciona?

¿Fue útil?

Solución

Mirando la fuente de la página de inicio de sesión, parece ser una aplicación asp.net, por lo que probablemente deba hacer un par de cosas para lograr esto:

Administre el formulario oculto __viewstate field y publíquelo cuando envíe los detalles de inicio de sesión.

Una vez que supere eso, supongo que puede hacer referencia a la página específica en cuestión simplemente usando una URL absoluta, pero necesitaría manejar la cookie de autenticación de formularios ASP.NET y enviarla como parte de la solicitud GET.

Otros consejos

Puede que tenga mejor suerte con Selenium o vea esta pregunta para obtener más sugerencias:

Script para el registro de la clase universitaria

Personalmente, lo escribiría en Perl, usando WWW :: Mechanize y haz algo como:


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
}

No tengo idea de si lo anterior funcionará, ya que no tengo detalles de inicio de sesión en un Servidor de la comunidad (lo que sea que sea) para probarlo, pero debería darle algo con lo que podría trabajar con la suficiente facilidad, y muestra el poder de WWW :: Mechanize.

Puedes hacerlo todo con wget. Debe enviar el formulario utilizando POST y debe almacenar cookies. Cosas relevantes de la página de manual de 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
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top