我正在尝试使用perl5和lwp :: Useragent访问站点。但是,连接后,脚本以" 403访问被拒绝"消息死亡。怪异的部分是它使用www ::机械化可以完美地工作,但获取代码完全相同。通常,我会怀疑用户代理是原因,但是在两种情况下代码都相同之前提到。
www ::机械化和LWP :: Useragent句柄请求可能会导致此问题?
是否有区别?这是一些示例代码,展示了两种不同的方法。
# Mechanize
use strict;
use warnings "all";
use WWW::Mechanize;
my $mech = WWW::Mechanize->new(
agent_alias => 'Mozilla/5.0',
show_progress => 1);
my $mech->get("www.foo.com");
# LWP
use strict;
use warnings "all";
use LWP::UserAgent;
my $ua = LWP::UserAgent->new(
agent_alias => 'Mozilla/5.0',
show_progress => 1);
my $r = $ua->get("www.foo.com");
没有记录的agent_alias
参数,也不适用于LWP :: Useragent,也不适用于www :: Mechanagize。而且也没有agent_alias
参数实现。相反,在两种情况下,参数都被忽略了,并且它使用了bundin default 。但是默认值不同。 agent_alias
方法,尽管www ::机械化。从文档中:
...例如,
$mech->agent_alias( 'Windows IE 6' );
将您的用户代理设置为
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
根据LWP :: Useragent的文档,您实际使用的参数正确称为agent
,默认为libwww-perl/#.###
(#.###
是版本号)。使用www ::机械化可以使用相同的参数,但已记录的不同默认值为 WWW-Mechanize/#.##
。