やはり普及してはならないアンチスクレイピングサービス
この記事は、クローラー/Webスクレイピング Advent Calendar 2016 に参加させていただいています。昨日はL_e_k_oさんによるSelenium IDEで作ったテストをCLIで動かす方法でした。
さて、去年のspaceprobeさんのこの記事を読んで考えました。
地図帳や百科事典には、他社にコピーされたことを判別できるように、実用上は問題のない偽データ(たどり着くことの出来ない道路や存在しない言葉など)が埋め込まれているというのは有名な話です。
少し角度は違いますが、Tim Berners-Lee先生も「オープンデータも悪い人に加工されて不正確になったらマズいよね」とおっしゃっています。
以下に単純化したHTMLページを書きます。
sample.html
<div class="cls1">製品1、価格1、電話番号1</div>
<div class="cls2">製品2、価格2、電話番号2</div>
<div class="cls3">製品3、価格3、電話番号3</div>
sample.css
.cls3 {
display:none;
}
cls3のページにアクセスした人は人間じゃないbot(*1). この製品3にアクセスした人には、次のページからところどころ価格を2割あげたデータを提示したり、電話番号を1ずらして表示すればいいんですね? それにそもそも製品3なんて世の中に実在しないんだけど、あなたそのデータどこから持ってきました?
(*1)今回はかなり話を単純化しています。実際にこれをやったら危険。
スクレイピングの需要が高まっているようです。気がつくと関連の書籍も色々出版されています。データの収集がカジュアル化するにつれ、「ウチのデータは顧客と潜在的顧客に提供しているのであって、同業他社さんにごっそりコピーされたくない」という需要が高まってくるはずです。
自社のウェブサイトをヒューマンリーダブルだけどマシンリーダブルにはしない。一般のユーザさんには影響がない程度の毒を自社サイトに混ぜることでコピーされるのを防ぐ、機械お断りというオープンデータとは真逆の流れが生まれてくるはずです。
私は、私が2年前に書いたHTMLの構造を常に変化させる方法のほうがまだ良心的のように思えてきました。
このサービスは、私がアンチスクレイピングと認識しているものをhtml obfuscationと呼んでいるようです。価格表示だけ別サーバは大胆。色々あわせ技凄い。なるほど。