403使用LWP :: Useragent时错误,但使用www ::机械化



我正在尝试使用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/#.##

最新更新