APIは外部リソースからデータを取得して他のデータと合わせて自分たちのサービスに付加価値を追加できますが、同じように外部からデータを取得する手法としてスクレイピングが知られています。今回はスクレイピングとAPIの違いを紹介します。
スクレイピングとは?
スクレイピングはサーバサイドのプログラミング言語を使って外部サーバへアクセスし、そのコンテンツから自分たちの欲しい情報を引き出す手法です。多くはHTMLを返す場合に使われ、DOMを解析したり正規表現を使ってデータを抜き出します。
スクレイピングはサービスが認めていない方法
APIはサービス提供側が一定の条件を設けた上で公開している開発者向けの機能になります。対してスクレイピングは本来はユーザ向けであるHTMLコンテンツをコンピュータに解析されるもので、公式にサポートされているものではありません。
そのためコンピュータによって負荷を高めたり、許容されていないアクセスを行うと不正アクセス防止法違反によって処罰される可能性もあります。
なぜスクレイピングをするのか
最も大きな理由としてアクセス先のサービスがAPIを提供していないという問題があります。APIがあるならばそれを使いたいと考えるでしょうが、APIがないためにスクレイピングに頼らざるを得ないと言えるでしょう。また、APIが公開されていたとしても必要な情報がスクレイピングしなければ取得できないと言ったケースもあります。
コンテンツは企業にとって生命線である場合も多く、それらのデータをまとめて抜かれてデータベース化されることを懸念する声もあります。
スクレイピングのデメリット
スクレイピングはHTMLコンテンツの形式に左右されます。そのためデザインが変わるとデータがうまく取れなくなる可能性があります。その場合、再度スクレイピングの作成し直しになりますが、大幅にデザインが変わったりURLの階層が変わったりするケースもあります(実際にはSEOへの影響があるのでURLは変わらないことのが多いでしょう)。
また、サービス提供側でログを解析している場合、怪しい動きをするログを確認するとアクセス拒否される可能性があります。Googleなどシステムが強固なサービスはすぐに弾かれる可能性があり、その結果としてスクレイピング以外でのサービス利用においても影響を受けることになります。
さらに認証後のデータを取得するようなスクレイピングはサーバ側にID、パスワードなどを保存しなければなりません。これは利用者にとって大きなセキュリティリスクになることでしょう。
スクレイピングを防止するには
スクレイピングはAPIが提供されていれば防げる行為です。スクレイピングは、それをしなければならないほど、コンテンツに魅力があるという証拠とも言えます。であれば公式としてきちんとアクセスコントロールした上でコンテンツをAPI提供する方が健全と言えるのではないでしょうか。
スクレイピングはイタチごっこになりがちで、防げるものではありません。そして開発者の不用意なコードによってサービス提供側が影響を受けたり、サービス利用者が迷惑を被ることになるでしょう。そうならないためにAPIを公開するというのは大切なことです。
スクレイピングの例
最近ではアプリやWebサービスで自分の資産管理を行う系統のサービスにおいて、各金融機関、クレジットカードのサイトへスクレイピングを行っているケースがあります。金融機関のID、パスワードを登録しなければならず、万一漏洩などが起こった時には大きな損害につながる可能性があります。
理想的には各金融機関がOAuth2ベースのAPIを公開し、適切なアクセスコントロールを実現できる仕組みを用意するのが一番でしょう。