正しいクローラーの運営方法

なんか、クローラーを使ったサービスが多くでているような気がするので、自分が7年ぐらい前に学んだクローラーを利用したサイト運営について、思う所を書いてみます。
(一応、マッシュアップアワードとかで賞もらいますた。)


大切なのは

大切なのは、次の2つです。
・クロール先サイトの相手の利益を損なってはいけません。
・相手サイトにバンされたとしても、ビジネスとして死んではいけません。


個別に見ていきます。


・クロール先サイトの相手の利益を損なってはいけません。

相手のサイトをクロールして情報を得るわけですから、その得た情報は、法律的どうなの?っていわれれば限りなく黒に近いグレーだと思われます。
ただし、たとえグレーだとしても、相手から訴えられなければいいわけです。


では、相手が訴えるとしたらどんなケースでしょうか。
それは、相手の利益を損なわせた時です。


例えば、料理まとめサイトをクロールして、もっとすごい料理サイトを作ったりしたとします。
これは、元の料理まとめサイトからトラフィックを奪ってしまいますので、相手の利益を損なわせてしまいます。
相手は、激おこになることが予想されます。




それでは、料理まとめサイトをクロールするのではなく、趣味でレシピを載せているサイトとかをクロールして、検索エンジンみたいに束ねる場合はどうでしょうか。
この場合、レシピを載せている人は、見てもらいたくてレシピを載せているわけですから、そこをクロールして、新しいまとめサイトを作る行為は、基本的に彼らの利益に貢献します。毀損しません。
クローラーうざえと思われるかもしれませんが、それが集客や売上につながれば、相手に利益をもたらします。
よって、訴えられる可能性は低くなるでしょう。


これが、相手の利益を損なってはいけないです。




もちろん、それでも文句を言ってくる方はいると思うので、その場合は、リスクを下げる意味で、そのサイトへのクロールをやめたり、データを消したり、誤ったりと誠意のある対応をしないといけません。
また、相手のサイトを落とすような負荷をかけてはいけないというのは、そもそもの大前提です。



相手サイトにバンされたとしても、ビジネスとして死んではいけない

あなたのクローラーが特定のサイトに依存していた場合、そのサイトから、バンされてしまうと、あなたのサイトは止まってしまいます。
もちろん、IPアドレス制限などは、クラウドにプロキシでも建ててしまえばいくらでも偽装可能でしょうが、相手から明確的にやめてくれといわれても、辞めなかった場合は、訴訟リスクが高まります。


そこで大事なのは、相手サイトに強く依存しないことです。
仮にいくつかのサイトからバンされても、ほかのサイトのデータでそれが補われれば、あなたのサイトは生き続けることが出来ます。
特定のサイトだけをクロールするのではなくて、万が一バンされた時のために、ほかのサイトもクロール対象として見ておくべきです。


で、どうするの?

以上の2つを満たす、ビジネス設計、プログラム設計をします。


ビジネス設計としては、
・まとめ系サイトをクロールすると、相手のビジネスを既存することが多いので、もっと根底にあるサイトを回るようにします。
・バンされても死なないように、沢山のクロール候補を見つけます。
・どうしようもない場合は、カネを払ってデータを買うというのもありなのかもしれませんね。
・こちらの立場が弱いうちは、土下座外交をしましょう。



プログラム設計としては、
クローラーは、増やしやすい設計にします。 色いろあると思いますが、スクリプト言語+クロールライブラリ で、クロール対象ごとに書捨てコピペプログラムをやって、親玉がそいつらをfindfirst ・・・という書き方が一番合理的だと思います。
・類似データの判別などは結構大変です。がんばりましょう。ビジネス要件でどこまで作りこむかになると思いますが。
・sleepは少し長めに入れます。 定期的だと、ログの偏よりとかあるので、適当に rand()を (ry
クローラーは、ゆっくりと、ただし、確実にしゃぶり尽くすようにナメる必要があります。不要なアクセスはしてはいけませんが、人気コンテンツを取りこぼしても行けません。ランキングや新着情報、RSSなど一覧で何処が変わったか分かるものがあればできるだけ利用しましょう。
・バグで暴走して相手に迷惑をかけないように、自身のエラーチェック、ログチェックも忘れないようにしましょう。(クローラーの暴走で掲示板を潰しかけたなんて事例があります。もちろん僕じゃないよ。)
・コード内にsleepやダウンロードをハードコーディングするとデバッグが大変なので、ちゃんとテストを考えたプログラムを書きましょう。



こんなかんじで、サイトを運営すればきっと幸せになれるかもしれません。
がんばって面白いサービスを作ってください。