Web クローラー Apache Nutch には、NTLM のサポートが組み込まれています。バージョン 1.7 を使用して、NTLM 認証を使用して Web サイト (Windows Sharepoint) をクロールしようとしています。https://wiki.apache.org/nutch/HttpAuthenticationSchemesに従ってNutchをセットアップしました。これは、特に資格情報があることを意味します
<credentials username="rickert" password="mypassword">
<authscope host="server-to-be-crawled.com" port="80" realm="CORP" scheme="NTLM"/>
</credentials>
構成されています。ログ ファイルを見ると、Nutch がシード URL にアクセスしようとして、「通常の」NTLM サイクルを実行していることがわかります。最初の GET で 401 エラーを取得し、NTLM チャレンジを抽出して、次の GET で NTLM 認証を送信します (キープアライブ接続を使用します)。ただし、2 番目の GET も成功しません。
ここで、資格情報または特定のセットアップに根本的な問題があるのではないかと疑っていました。Windows ホスト上の Debian ゲスト Virtual Box で Nutch を実行しています。しかし驚いたことに、wget
との両方curl
が、私の資格情報を使用して Debian ゲスト内からドキュメントを取得できました。興味深いことに、両方のコマンド ライン ツールが機能するために必要なのはユーザー名とパスワードのみです。一方、本格的な NTLM 仕様には、ホストとドメインも必要です。仕様によると、ホストはリクエストの発信元であり、http-agent が実行されているドメインとして解釈します。ユーザー名が関連付けられている Windows ドメイン内。私の推測では、どちらのツールもこの詳細を空のままにしておくだけです。
これが Nutch の設定の出番です。ホストhttp.agent.host
は設定ファイルのように提供されると言われています。ドメインは資格情報の領域として構成することになっていますが、ドキュメントでは、これは規則であり、実際には必要ではないと述べています。ただし、レルムを設定するかどうかは関係ありません。結果は同じです。再度ログ ファイルを見ると、使用し<any_realm>@server-to-be-crawled.com
ているレルムに関係なく、認証が解決されているというメッセージが表示されます。
httpclient
私の直感では、GET を実行するJava クラスが必要とする NTLM パラメータへの Nutch 構成値のマッピングが間違っているようです。私は無力です。これをさらにデバッグする方法について、誰かヒントを教えてもらえますか? SharePoint Server で機能する具体的な構成を持っている人はいますか? ありがとう!