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. разместите свой URL в браузере: https://myurl/files/file.doc
  2. Вы получаете страницу входа (URL все еще выглядит так же)
  3. введите имена полей: имя пользователя / пароль
  4. нажмите кнопку "ОК" (имя поля btnSubmit)

    после успешного входа в систему:

  5. Вы получаете новую страницу: https://newurl/pagSuccess/
  6. Вы должны нажать "ОК" на этой странице (чтобы вернуться туда, куда вы хотели пойти...)
  7. тогда вы получите диалоговое окно браузера: где вы должны:

    выберите (переключатель) "Сохранить файл" нажмите ОК

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

2 ответа

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

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

Другие вопросы по тегам