2009年9月8日火曜日

HeritrixのBasic/Digest認証

HeritrixのJobを試していたが、Digest認証(Apache 2.2)で保護されているWebサイトに接続しても、401のエラーになってしまい困っていた。どうも、Settingの内容が間違っていたみたい。
手順メモ

1. Submodulesにorg.archive.crawler.datamodel.credential.Rfc2617Credentialを追加

2. Setting画面で"expert setting"に切替える

3. credential-storeの設定項目に下記を設定
 credential-domain: ホスト名(http://xxxxxx/...のxxxxxxの部分)
 realm: 認証エリアの名前(Apacheのhttpd.confの"AuthName"の部分)
 login:/password: 正しく認証されるものを設定

ここまで設定すれば正しくされる。私の場合は、realmの設定内容がわからなくて、"Basic"だの"Digest"だのを設定してずいぶんハマッた。…ふぅ

追記: HTTPなどのエラーコードは、HeritrixのWeb UIの"Help"内の"URI Fetch Status Codes"にまとまっているので便利だと気づいた。もちろんHeritrixサーバが起動していないと見れないけど。

2009年9月7日月曜日

Heritrix on Windows 2nd

前回のつづき、Windows XPで動かしたら上手くいかなかったので、今度は推奨環境にあわせて、手持ちのLinux(CentOS4.7)で実行した。

普通にコマンドラインで立ち上げてから、管理画面(localhost:8080)にブラウザで接続し、デフォルトProfileの設定内容を確認してみる。Windowsでは初期値が上手く取得出来ていなかったところ。

下記が、デフォルトProfileのModules設定内容一覧

Select Crawl Scope
org.archive.crawler.deciderules.DecidingScope

Select URI Frontier
org.archive.crawler.frontier.BdbFrontier

Pre Processors Processors
org.archive.crawler.prefetch.Preselector
org.archive.crawler.prefetch.PreconditionEnforcer

Fetchers Processors
org.archive.crawler.fetcher.FetchDNS
org.archive.crawler.fetcher.FetchHTTP

Extractors Processors
org.archive.crawler.extractor.ExtractorHTTP
org.archive.crawler.extractor.ExtractorHTML
org.archive.crawler.extractor.ExtractorCSS
org.archive.crawler.extractor.ExtractorJS
org.archive.crawler.extractor.ExtractorSWF

Writers Processors
org.archive.crawler.writer.ARCWriterProcessor

Post Processors Processors
org.archive.crawler.postprocessor.CrawlStateUpdater
org.archive.crawler.postprocessor.LinksScoper
org.archive.crawler.postprocessor.FrontierScheduler


このProfileをベースに新しいJobを作成する。
Modulesは、とりあえず初期値のままとして、設定が必須なのは、Settiongsのuser-agent:とfrom:の部分だけのようだ。ドキュメントに従い下記を設定する。

user-agent: my-heritrix-crawler (+http://mywebsite.com)
from: 自分のメールアドレス

ここで注意が必要なのは、user-agent:の書式で、括弧"("やプラス"+"も含めて書式が決まっている。間違うとJobの実行時にエラーになるので注意。

あと、うまくクロール出来ない場合の対応として、ホスト名をIPアドレスにするとうまくいくみたい。こちらの環境依存だと思うけど、ホスト名にするとJobがいつまでたっても先に進まず止まってしまう…なぜ?
とりあえず、イントラネット利用が目的なので、IPアドレスを指定することとする。

2009年9月4日金曜日

Heritrix on Windows


イントラネットサイト上の情報のデータ化が必要になりそうなので、WebクローラのHeritrixを使ってみた。HeritrixはInternet Archiveが開発したクローラとして有名で、SourceForgeで公開されている。結構使われていると思ってGoogleで検索してみても、日本語の情報が少ないみたい。

とりあえずダウンロードしてみた。そして、ドキュメントをチェックする。HertrixはJavaで開発されているので、当然マルチプラットフォーム…かと思えば、ドキュメントには「Linuxで開発、テストされているからそれ以外のプラットフォーム(Windowsとか) で動くかどうか知らないよ」と書かれている。確かに起動用のシェルとか、設定ファイルのパーミッションチェックとか、Linux(Unix)ライクになっている。

気軽なお試しのつもりでWindows XPで起動してみた。普通に起動した。…ドキュメントに従って、簡単なJobを設定…Jobの実行……ダメっぽい。ドキュメントにかかれている事と違うじゃん!!っと思ってしまう。

結局半日ほど試したがダメ。Profileに設定されているModuleやFrontier、Processorの初期値がうまく取り込まれていない様子。すべて正しく設定し直せば動くのかもしれないけど、おそらくWindowsで動作すると、設定を持っているファイルが正しく読めていないのではないかと、勝手に推測。

つぎは、Linuxで試してみよう…。
つづく