「ウェブスクレイピング」とは、ウェブサイトからから情報を抽出するコンピューターソフトウェア技術のこと。
インターネット上に存在する情報から必要なデータを取り出すことができる便利な技術ですが、情報を提供する側からすると、利用されたくない場合もあるかもしれません。
今回紹介する「A guide to preventing Webscraping」は、このウェブスクレイピングを防ぐためのさまざまな方法を解説する英語のドキュメントです。
開発者JonasCz氏によってStackOverflowに投稿された回答の拡張版とされ、CC-BY-SA 3.0のもと自由に変更、リミックス、共有してよいとされています。
目次
ウェブスクレイピングを防ぐ技術
同ドキュメントは、ウェブスクレイピングを防ぐためには、実際のユーザーやサーチエンジンからのからのアクセスを容易に保ったまま、スクリプトやツールによるデータの取得を困難な必要があると説明しています。
この上で具体的にスクレイピングを防ぐために以下のような手法をリストアップしています:
- ログとトラフィックのパターンを監視する。 異常なアクティビティはアクセスを制限する。
- 登録とログインが必要なサイトにする。
- クラウドホスティングやスクレイピングサービスのIPアドレスからのアクセスをブロックする。
- エラーメッセージを出力しない。
- Captchasを使用する。
- テキストを画像として提供する。
- 完全なデータセットを提供しない
- APIを利用させない
またHTMLパーサーとスクレイパーを抑止する方法として以下の方法をリストアップしています:
- HTMLを頻繁に変更する。
- ユーザーの位置情報に基づきHTMLを変更する。
- 頻繁にHTMLを変更する。
- 偽のデータをページに追加する。
- スクレイパーを検出した場合偽のデータを提供する。
- User Agentが空や間違っている場合リクエストを受け付けない。
- User Agentがスクレイパーのものの婆リクエストを受け付けない。
- リファラヘッダをチェックする。
- CSSや画像をリクエストしない場合本当のブラウザではない。
- Cookieを使用する
- JavaScriptとAjaxを使ってコンテンツをロードする。
- マークアップなどを難読化する。
それぞれの項目の具体的な方法はドキュメントに掲載されていますのでご確認ください。なおその他法的な手段を検討するなど、非技術的な方法も掲載されています。
ウェブスクレイピングをなんとかして防ぎたい方にとっては参考になる情報といえそうです。