1

Perl の Mechanize ライブラリを使用して Web フォームに入力しようとしています。

検索ボックスに URL を入力するたびに、以下のメッセージが表示され、手動で正常にログインできます。

ここに画像の説明を入力

ただし、以下のスクリプトを実行すると、次のエラーが発生します。

ここに画像の説明を入力

$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.
4

1 に答える 1

0

古いバージョンの Mechanize では、 WWW::Mechanizeパッケージをサブクラス化し、独自の資格情報ルーチンを提供できます。

package MyMech;

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

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

次に、プログラムで WWW::Mechanize の代わりにこのパッケージを使用します。

package main;

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

アップデート

NTLM認証の要件を示すために質問を更新しました。CPANの LWP::Authen::Ntlmをチェックしてください。

于 2013-08-29T09:59:22.777 に答える