Мне было интересно, как проверить URL-ссылку в Perl? Я хочу знать, является ли это недействительной ссылкой.
Кроме того, я хотел бы знать, как проходить аутентификацию по имени пользователя и паролю при проверке URL-ссылок.
См. метод credentials в LWP :: UserAgent и метод is_success в HTTP :: Response .
credentials
is_success
use LWP::UserAgent qw(); my $ua = LWP::UserAgent->new; $ua->credentials('hostname.example:80', 'realm name', 'login', 'password') my $res = $ua->head('http://hostname.example/fullurl'); $res->is_success; # $res->is_error # $res->is_redirect ## specific status code comparison: # $res->code != HTTP::Status::HTTP_NOT_FOUND()
Возможно, вы захотите перейти на WWW :: Mechanize , чтобы автоматически выполнять перенаправления и упростить аутентификацию.
Вы можете использовать LWP::Simple и выполнить HEAD запрос
LWP::Simple
HEAD
Из этой ссылки
В LWP есть и другие полезные функции: Simple, включая одну функцию для выполнения запроса HEAD по URL-адресу (полезно для проверки ссылок,
И из rfc
Метод HEADидентичен GET, за исключением того, что сервер НЕ ДОЛЖЕН возвращать тело ответа в ответе. Метаинформация, содержащаяся в заголовках HTTP в ответ на запрос HEAD, ДОЛЖНА быть идентична информации, отправленной в ответ на запрос GET. Этот метод можно использовать.для получения метаинформации о сущности, подразумеваемой в запросе, без передачи самого тела сущности. Этот метод часто используется для проверки гипертекстовых ссылок на предмет достоверности, доступности и недавних изменений.
использовать LWP;Вы можете найти его на CPAN здесь: https://metacpan.org/pod/LWP