読者です 読者をやめる 読者になる 読者になる

happyou.infoのブログ

ニュース収集サイトhappyou.infoのブログです。 国内外のあらゆる企業と組織、団体のウェブサイトの更新を収集します。 岡本将吾が運営しています。twitterは @happyou_info_ja です。

普及して欲しくないアンチスクレイピングサービス

スクレイピングとは、ウェブページから情報を取り出す処理を指します。そのためのプログラムやツールが存在します。

 

さて、ここで立場を変えて、情報を取り出されてしまうウェブサイト側の立場になって考えてみますと、スクレイピングはあまりうれしくない存在であることがわかります。

  • ニュースサイトは、コストと時間をかけて書いた記事をコピーされ転載されてしまう。
  • オンラインショップは、ライバルの他社に商品リスト、価格、在庫の変化、顧客の評価等を把握されてしまう。
  • インターネット広告は、自社が出している/仲介している広告の種類と量をライバルに把握されてしまう。

他社の情報は把握したいが、自社の情報は把握されたくないと考えるのは自然なことのようです。その証拠として、スクレイピングの普及に合わせて、自分のサイトがスクレイピングされることを防ぐための「アンチスクレイピングサービス」なるものが世に広まりつつある点を挙げることが出来ます。


https://www.cloudflare.com/apps/scrapeshield


http://www.distilnetworks.com (はてなの埋め込みリンクが働かない)


http://www.scrapesentry.com

http://www.fireblade.com (はてなの埋め込みリンクが働かない)

 

以上のサイトを見つけています。 実際にこれらのサービスを利用したわけではないので正確なことはわからないのですが、サイトを読む限り、主にアクセス履歴を分析してクローラbotを検出して排除しているようです。

 

以上が私が認識しているところのアンチスクレイピングの現状です。以下に私の考えを書きます。

 

でも思うんですよ。アクセスパターンでbotを排除なんて、どうにでも突破できますよ。いくらでも人間のフリはできます。

最近見つけました。ご参考までに。

 

そんなことより、頻繁にサイトの構造やページのデザインを変更するほうが、効果的にスクレイピングをブロックできるのではないかと思います。

 世のスクレイピングツールやコードは、XPathかそれに類する形でデータの抽出方法を定義しているものがほとんどかと思われます。この場合、ページの構造やデザインが少し変更されるだけで正しくデータを抽出できなくなり、その都度コードやツールの設定を変更する必要が生まれます。

私は今happyou.infoというサイトを作っており、多くのサイトをクロールし自動スクレイピングを行っています。もっとも煩雑で微妙な処理は、サイトの構造やページのデザインが変更されたことを認識してスクレイピングをやり直す箇所です。

たとえばウェブサーバがページを表示する際に、予めテンプレートを数種類用意しておき、それを交互に出力するだけでも既存のスクレイピングツールのほとんどは対応できないように思います。普段は<DIV>なのに時々<TABLE>に変わっていたり、5分後にアクセスしたら<IFRAME>の中に価格データが埋め込まれてるだけで我々は簡単に死んでしまうはずです。スクレイピングする側はまた別の対応策を考えねばならず、それは頭の体操にはなるかもしれませんが、あまり生産的ではないように思います。

もし作るならば、アクセスパターンからbotを排除するよりも、ページのデザインが頻繁に変更されるタイプのアンチスクレイピングサービスのほうが効果的のように思いました。そして、できればそのようなサービスは普及しないで欲しいです。

 

「私のスクレイピングはページデザインの変更に対応できる」という方がいらっしゃるかもしれませんが、そこで抽出できるデータって相当荒いデータだと思うんですよ。 もしデザインの変更に対応できるスクレイピングの方法をご存じの方がいたら是非ご教示ください。

 

最後に、やはりデータを囲い込む方向の技術は発展して欲しくないなと思いました(私はスクレイピングする側なのでそう考えてしまうのかもしれませんが)。 結局あまりうまくいかないだろうことは音楽や動画のコピープロテクトをみればわかりますよね。

 

この記事は、クローラー/スクレイピング Advent Calendar 2014  に登録させていただきました。 参加させていただきありがとうございました。