5

スクリプトを使用して、WGETで認証が必要なURLのXMLデータを取得しています。

そうすることで、私のスクリプトは、アクセスされたURLごとに次の出力を生成します(有罪を保護するためにIPとホスト名が変更されました)。

> Resolving host.name.com... 127.0.0.1
> Connecting to host.name.com|127.0.0.1|:80... connected.
> HTTP request sent, awaiting response... 401 Access denied
> Connecting to host.name.com|127.0.0.1|:80... connected.
> HTTP request sent, awaiting response... 401 Unauthorized
> Reusing existing connection to host.name.com:80.
> HTTP request sent, awaiting response... 200 OK

WGETが、正常に接続する前にURLへのアクセスが2回失敗すると文句を言うのはなぜですか?それをシャットダウンする方法、または最初の試行で正しく接続する方法はありますか?

参考までに、WGETの呼び出しに使用している行は次のとおりです。

wget --http-user=USERNAME --password=PASSWORD -O file.xml http://host.name.com/file.xml
4

2 に答える 2

5

これは仕様によるもののようです。@Wayne Conradのアドバイスに従って、-dスイッチを追加し、NTLMが必要なために失敗した最初の試行と、レベル3のNTLMチャレンジであるレベル1のみであったために失敗した2番目の試行を観察できました。応答が必要でした。WGETは、3回目の試行で最終的に必要な認証を提供します。

WGETは、セッション中の再認証を防ぐためにCookieを取得します。これにより、ファイル間で接続が終了しなかった場合にこれが防止されます。これを行うには、ファイルのリストをWGETに渡す必要がありますが、事前にファイル名がわからないため、渡すことができません。

于 2010-01-12T14:00:15.360 に答える
3

あなたはwgetの新しいバージョンを持っているようです。1.10.2以降、wgetは、サーバーから最初にチャレンジされない限り、認証を送信しません。そしてそれが最初のものが失敗している理由です。2つ目は、あなたが説明したことの失敗の原因です。

パラメータ--auth-no-challengeを追加することにより、それらの1つを減らすことができます。これにより、最初の送信は「基本」で失敗し、2番目の送信は「ダイジェスト」モードで送信されます。どちらが機能するはずです。

于 2014-01-14T17:04:36.893 に答える