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 который требует аутентификации: имя пользователя / пароль.
Добавление определения проблемы: вот как работает обычный браузер в моей ситуации:...
- разместите свой URL в браузере: https://myurl/files/file.doc
- Вы получаете страницу входа (URL все еще выглядит так же)
- введите имена полей: имя пользователя / пароль
нажмите кнопку "ОК" (имя поля btnSubmit)
после успешного входа в систему:
- Вы получаете новую страницу: https://newurl/pagSuccess/
- Вы должны нажать "ОК" на этой странице (чтобы вернуться туда, куда вы хотели пойти...)
- тогда вы получите диалоговое окно браузера: где вы должны:
выберите (переключатель) "Сохранить файл" нажмите ОК
- вы сделали!!! файл сохранен локально.
2 ответа
Я бы порекомендовал использовать что-то вроде Mechanize, чтобы позаботиться об этом. Он будет обрабатывать файлы cookie сеанса для вас и предоставляет полезные инструменты для идентификации и заполнения форм для входа в систему.
Посмотрите на credentials
метод для вашегоLWP::UserAgent
объект.