Pergunta

Eu gostaria para acessar a parte Forums da comunidade-servidor (por exemplo, http://forums.timesnapper.com/login.aspx?ReturnUrl=/forums/default.aspx ) e depois baixar uma página específica e executar um regex (para ver se existem quaisquer mensagens de espera para moderação). Se houver, eu gostaria de enviar uma mensagem de e-mail.

Eu gostaria de fazer isso a partir de um servidor Linux.

Atualmente eu sei como fazer o download de uma página (usando, por exemplo wget), mas têm um registro de problema no. Qualquer ideia brilhante como isso funciona?

Foi útil?

Solução

Olhando para o código fonte da página de login que parece ser um aplicativo asp.net para que você precisaria, provavelmente, fazer algumas coisas para conseguir isso -

Gerir o campo __VIEWSTATE forma oculta e postar que volta quando você enviar os detalhes de login.

Depois de ter passado que eu estou supondo que você pode fazer referência a página específica em questão apenas usando uma URL absoluta, mas você precisa para lidar com o cookie de autenticação de formulários ASP.NET e de envio que, como parte do pedido GET.

Outras dicas

Você pode ter melhor sorte com selênio ou ver esta questão para mais sugestões:

Script para a faculdade Classe Registro

Pessoalmente, eu escrevê-lo em Perl, usando WWW :: mechanize e fazer 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
}

Eu não tenho nenhuma idéia se o trabalho vai acima, como eu não tenho o login detalhes para um servidor Community (qualquer que seja) para testá-lo contra, mas deve dar-lhe algo que você poderia trabalhar em com bastante facilidade, e mostra o poder da WWW :: mechanize.

Você pode fazer tudo isso com wget. Você precisa enviar o formulário usando POST e necessidade de armazenar cookies. coisas relevantes a partir da página man 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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top