Perl-скрипт для загрузки ТОЛЬКО определенных URL-адресов (https://)

работает следующее: но теперь я пытаюсь загрузить файл с веб-сайта, который требует аутентификации (и, возможно, сохранить файл cookie, срок действия которого истекает через 24 часа) для доступа к содержимому.

как обеспечить эту аутентификацию на веб-сайте? Если пользователь, не прошедший проверку подлинности, получает доступ к URL-адресу (или веб-сайту), он / она перенаправляется на страницу аутентификации, где вы должны ввести идентификатор пользователя и пароль и нажать клавишу ввода (кнопка входа). после проверки подлинности управление автоматически возвращается к URL-адресу, который вы первоначально запросили.

вот что у меня есть до сих пор, что работает для веб-сайтов, не требующих аутентификации:

    #!/usr/bin/perl
    use strict;
    use warnings;
    use LWP;
    use Data::Dumper;

    my $ua = LWP::UserAgent->new;
    my $agent = "my-lwp agent";
    $ua->agent($agent);
    $ENV{HTTPS_PROXY} = 'http://myproxy:8080';

    my $req = HTTP::Request->new(GET => 'https://mail.yahoo.com');
    $req->content_type('text/html');
    $req->protocol('HTTP/1.0');

    my $response = $ua->request($req);
     if ($response->is_success) {
         print "1 success\n";
     }
     else {
        print "1 error\n";
     }
    print Dumper $response;

Теперь мне нужно скачать этот файл с URL-адреса: https://myurl.com/file.doc. аутентификация: имя пользователя/пароль.

Добавление определения проблемы: вот как работает обычный браузер в моей ситуации:...

  1. разместите ссылку в браузере: https://myurl/files/file.doc
  2. вы получаете страницу входа в систему (URL все еще выглядит так же)
  3. введите названия полей: имя пользователя/пароль
  4. press 'ok' button (field name btnSubmit)

    after successfull login:

  5. вы получаете новую страницу: https://newurl/pagSuccess/
  6. вы должны нажать «ОК» на этой странице (чтобы вернуться туда, куда вы хотели пойти...)
  7. then you get a browser dialog: where you have to:

    select (radio button) 'Save File' press ok

  8. вы сделали!!! файл сохраняется локально.


person rajeev    schedule 22.11.2011    source источник


Ответы (2)


Я бы рекомендовал использовать что-то вроде Mechanize, чтобы позаботиться об этом. Он будет обрабатывать сеансовые файлы cookie для вас и предоставляет полезные инструменты для идентификации и заполнения форм для входа в систему.

person jncraton    schedule 22.11.2011

Взгляните на метод credentials для вашего объекта LWP::UserAgent.

person Borodin    schedule 22.11.2011
comment
Я думаю, что он не выполняет аутентификацию на основе формы. - person rajeev; 23.11.2011