Perl的WWW ::机械化 - 认证错误歌厅网址(Perl WWW::Mechanize — Au

2019-09-26 05:19发布

我试图填写使用Perl的机械化图书馆网页表单。

每当我输入网址在搜索框中它会提示下面的消息,我可以手动登录成功地。

然而,当我运行下面的脚本,我得到以下错误:

如何正确使用我的第一个身份验证凭据框填写$mech对象?

my $mech = WWW::Mechanize->new( 'keepalive' => 1 );

my $url = "http://URL/I/NEED/TO/ACCESS";
my $username = "username";
my $password = "password";

$mech->credentials($username, $password);
$mech->get($url);          <----------------- ERROR (LINE 93)

编辑:

下面是运行结果wget请求的网站上

--2013-08-30 11:16:17--  http://moss.micron.com/MFG/ProbeTest/Lists/Manufacturing%20Requests/AllItems.aspx
Resolving moss.micron.com... 137.201.88.118
Connecting to moss.micron.com|137.201.88.118|:80... connected.
HTTP request sent, awaiting response... 
  HTTP/1.1 401 Unauthorized
  Server: Microsoft-IIS/7.0
  WWW-Authenticate: Negotiate
  WWW-Authenticate: NTLM
  X-Powered-By: ASP.NET
  MicrosoftSharePointTeamServices: 12.0.0.6341
  Date: Fri, 30 Aug 2013 17:16:17 GMT
  Connection: keep-alive
  Content-Length: 0
Authorization failed.

Answer 1:

与旧版本机械化的,你可以继承的WWW ::机械化包装,并提供自己的凭据程序:

package MyMech;

use vars qw(@ISA);
@ISA = qw(WWW::Mechanize);

sub get_basic_credentials {
  my ($self, $realm, $uri) = @_;
  return( "user", "password" );
}

然后在你的程序中使用此包,而不是WWW ::机械化:

package main;

my $mech = MyMech->new();
$mech->get( $url );

更新

你已经更新了你的问题,表示NTLM身份验证的要求。 退房LWP ::认证介绍:: NTLM上CPAN。



文章来源: Perl WWW::Mechanize — Authentication Error GETing URL