Perl: как проверить, не является ли ссылка 404 - PullRequest
2 голосов
/ 22 февраля 2012

Мне было интересно, как проверить URL-ссылку в Perl? Я хочу знать, является ли это недействительной ссылкой.

Кроме того, я хотел бы знать, как проходить аутентификацию по имени пользователя и паролю при проверке URL-ссылок.

Ответы [ 3 ]

7 голосов
/ 22 февраля 2012

См. метод credentials в LWP :: UserAgent и метод is_success в HTTP :: Response .

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 , чтобы автоматически выполнять перенаправления и упростить аутентификацию.

4 голосов
/ 22 февраля 2012

Вы можете использовать LWP::Simple и выполнить HEAD запрос

Из этой ссылки

В LWP есть и другие полезные функции: Simple, включая одну функцию для выполнения запроса HEAD по URL-адресу (полезно для проверки ссылок,

И из rfc

Метод HEADидентичен GET, за исключением того, что сервер НЕ ДОЛЖЕН возвращать тело ответа в ответе. Метаинформация, содержащаяся в заголовках HTTP в ответ на запрос HEAD, ДОЛЖНА быть идентична информации, отправленной в ответ на запрос GET. Этот метод можно использовать.для получения метаинформации о сущности, подразумеваемой в запросе, без передачи самого тела сущности. Этот метод часто используется для проверки гипертекстовых ссылок на предмет достоверности, доступности и недавних изменений.

0 голосов
/ 22 февраля 2012

использовать LWP;Вы можете найти его на CPAN здесь: https://metacpan.org/pod/LWP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...