ローカルイントラネットサイトをミラーリングしようとして、「wget」を使用して以前の質問を見つけました。匿名のサイトではうまく機能しますが、ユーザー名\パスワードを期待しているサイト(統合Windows認証を使用したIIS)に対しては使用できませんでした。
これが私が渡すものです:
wget -c --http-user = 'domain\user' --http-password = pwd http:// local/site -dv
これがデバッグ出力です(明らかにダミー値に置き換えたことに注意してください):
-verbose(verbose)を1に設定 Windows上のWget1.11.4によって作成されたDEBUG出力-MSVC。 -2009-07-1409 :39:04-- http:// local/site ホスト `local 'は一般的な基本的なチャレンジを発行していません。 ローカルの解決...秒0.00、xxxx キャッシングローカル=> xxxx ローカルに接続中| xxxx |:80 ...秒0.00、接続済み。 ソケット1896を作成しました。 0x003e32b0を解放しています(新しい参照カウント1)。 。] [。 * ホスト:ローカル 接続:Keep-Alive ---リクエスト終了--- HTTPリクエストが送信され、レスポンスを待機しています。 。 ---応答開始--- HTTP/1.1401アクセス拒否 サーバー:Microsoft-IIS/5.1 日付:2009年7月14日火曜日13 :39:04 GMT WWW-認証:ネゴシエート WWW-認証:NTLM コンテンツの長さ:4431 コンテンツタイプ:text/html ---応答終了--- 401アクセスデンied Closed fd 1896 不明な認証スキーム。 認証に失敗しました。
NTLM認証はwget1.11で壊れており、代わりに1.10を使用してください。
Curlは、実際には、NTLM認証されたWebサーバーからコンテンツをフェッチするためのより優れたツールです。以下を使用して、提案されたwgetコマンドラインと同等の関数を取得できます。
curl --anyauth --user username:password http://someserver/site
NTLM Authorization Proxy Server を使用してこれらのタイプの問題を回避できることへの言及を見てきました。
私は解決策を見つけました。
これは基本認証IIS7の回避策です。
認証が成功すると、次のhttpヘッダーを送信します。
'Authorization: < type > < credentials >'.
したがって、ブラウザーで認証を行い、ブラウザーからこのヘッダーパラメーターをコピーするか(firebugアドオン)、以下を生成することができます。
$ echo -en 'username:password' | base64
dXNlcm5hbWU6cGFzc3dvcmQK
$ echo 'dXNlcm5hbWU6cGFzc3dvcmQK' | base64 -d
username:password
例:
$ wget --header="Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQK" http://example.com/
使用する --auth-no-challenge
オプション(wget 1.11 +)(現在は安全でないと見なされています)