Программно войти на форум, а затем ScreenScrape - PullRequest
0 голосов
/ 19 ноября 2008

Я хотел бы войти в раздел Форумы сообщества-сервера (например, http://forums.timesnapper.com/login.aspx?ReturnUrl=/forums/default.aspx), а затем загрузить определенную страницу и выполнить регулярное выражение (чтобы увидеть, есть ли сообщения, ожидающие модерации). Если есть Я хотел бы отправить электронное письмо.

Я бы хотел сделать это с сервера Linux.

В настоящее время я знаю, как загрузить страницу (например, с помощью wget), но у меня возникли проблемы при входе в систему. Любая яркая идея, как это работает?

Ответы [ 4 ]

1 голос
/ 19 ноября 2008

Глядя на источник страницы входа, вы видите, что это приложение asp.net, поэтому вам, вероятно, нужно сделать пару вещей, чтобы достичь этого -

Управление скрытым полем __viewstate формы и отправка его обратно при отправке данных для входа.

Как только вы поймете, что, я полагаю, вы можете ссылаться на конкретную страницу, о которой идет речь, просто используя абсолютный URL, но вам нужно будет обработать куки-файл аутентификации ASP.NET Forms и отправить его как часть запроса GET. 1005 *

1 голос
/ 28 декабря 2008

Лично я написал бы это на Perl, используя WWW :: Mechanize , и сделал бы что-то вроде:


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
}

Я не знаю, сработает ли вышеперечисленное, так как у меня нет данных для входа на Сервер совместной работы (независимо от того, что это такое), чтобы проверить его, но он должен дать вам то, с чем вы могли бы работать достаточно легко, и показывает силу WWW :: Mechanize.

1 голос
/ 19 ноября 2008

Возможно, вам больше повезет с Selenium или посмотрите этот вопрос для получения дополнительных предложений:

Скрипт для регистрации в колледже

0 голосов
/ 11 августа 2009

Вы можете сделать все это с помощью wget. Вам необходимо отправить форму с использованием POST и хранить куки. Соответствующий материал со страницы руководства 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...