2012-02-21 46 views
2

我想知道如何检查perl中的url链接吗?我想知道它是否无效链接。perl:如何检查url链接是不是404

另外,我想知道如何在检查url链接时使用用户名和密码进行身份验证。

+0

请给出例子,最好是工作的例子。你在用什么库?使用'LWP'从任何URL读取并通过访问标题而不是整个资源来检查'credentials' – Borodin 2012-02-21 23:42:33

回答

4

您可以使用LWP::Simple并做HEAD要求

从这个link

有在LWP ::简单等实用功能,包括一个 用于在URL上运行HEAD请求的功能(用于检查 链接,

而从rfc

HEAD方法是相同,除了以获得服务器不能 返回消息正文中的响应。 HTTP头中包含 的元信息响应于HEAD请求应该与响应GET请求发送的信息相同 。此方法可用于获取有关 请求隐含的实体的元信息,而不会传输实体主体本身。此方法是 经常用于测试超文本链接的有效性,可访问性, 和最近的修改。

7

参见method credentials in LWP::UserAgentmethod is_success in 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遵循自动重定向,更容易鉴别。

+0

除了“元标记”类型之外,您不需要Mech遵循重定向。实际上,LWP默认遵循它们。 – hobbs 2012-02-21 23:33:28

+0

@hobbs:同意。 WWW ::机械化是不必要的,并且是一个巨大的开销。 – Borodin 2012-02-21 23:37:32

相关问题