スクレイピングの怖い話
【結論】
・スクレイピング は、Web上のHTMLから任意の情報を取得し、活用する技術。
・様々な情報を自動で取得できるので、幅広く活用できる機会がある。
・但し、大量にアクセスする事で、相手側のサーバーに負荷を掛けてしまい、
それが元でアクセスを拒否されたり、最悪事件に発展するケースもある。
・また、著作権などの法律に触れる恐れもある為、
利用には細心の注意を払う必要がある。
【本題】
学習を進める中で、「スクレイピング」というものを学んだのですが、
これ凄く便利ですよね!
ウェブスクレイピング(英: Web scraping)とは、
ウェブサイトから情報を抽出する
コンピュータソフトウェア技術のこと。
価格の比較だったり、画像を自動で取得したり、
ページの更新状況を確認したりとか、
活用できる場面が色々ありそうなので、
是非試していきたいなと思ったのですが・・・
「これ危なく無いの?」
アクセスし過ぎてサーバーダウンさせたり、
著作権に引っかかる様な情報の取得をしてしまったりと、
使い方を間違えると痛い目に合いそうな気がしました。
それで、気になって調べて見ると…
「やっぱり危なかった!」
以下、スクレイピングが切っ掛けで発生した事件の引用です。
岡崎市立中央図書館事件
(おかざきしりつちゅうおうとしょかんじけん)は、
2010年3月頃に岡崎市立図書館の
蔵書検索システムにアクセス障害が発生し、
利用者の一人が逮捕された事件である。
利用者に攻撃の意図はなく、また、
根本的な原因が図書館側のシステムの不具合にあった
ことから論議を呼んだ。逮捕された人物が取調べの後、
Librahackというサイトを立ち上げて解説をしたことから、
Librahack事件とも呼ばれる。
下記が、実際の利用者の方が事件の詳細を解説したブログです。
要約した事件の内容が以下の通りです。
「時系列(要約)」
・図書館が公開していた蔵書検索サイトの使いづらさに不満を感じた
Aさん(仮称)が、自分専用のサイトの作成に着手。
・その際、図書館のサイトから、予約状況などの情報を、
自動で取得できる様に、スクレイピングプログラムを作成。
・図書館側のサーバーに負荷が掛からない様に考慮して、
プログラムは作成していた。
・図書館側でホームページにアクセス出来ないという事情が何度か発生。
サーバーのログを確認すると、
同じIPアドレスから大量のアクセスが行われている事を確認。
警察に相談の上、被害届けを提出。
・警察はWebサーバーのログを見て、Aさんを特定。
プログラムの仕様は考慮せず、
サーバが止まっているという事実と行為をもとに立件。
・実際には、図書館側のサーバーが、
1時間に400以上リクエストを送られると
他のリクエストの処理が不可能になる不具合を含んでおり、
それが原因であったことが後々発覚する。
・Aさんが逮捕される
(Aさんは、この時点で初めて図書館システムのアクセス障害を知る)
・Aさんは、自身が作成したプログラムは妥当な負荷対策が施されており、
図書館側のサーバーの不具合が原因であると訴え続ける。
・不起訴で釈放される
(勾留期間:20日間)
・Aさんは、図書館側と共同声明を発表
図書館側がサーバーの不具合である事を認める
(逮捕から半年以上経過)
この様に、相手を攻撃する意図が全く無く、一定の負荷対策を行った上で、
スクレイピングをしたとしても逮捕されてしまうという事実がある以上、
生半可な知識で無闇に使って良い技術では無さそうですね・・・
なお、Aさんは事件について、以下の様にも綴っています。
逮捕されたことについて不満はございません。
限られた予算(税金)で運営されている公共施設のサービスに、
大手企業のサービスと同じような感覚でアクセスしてしまった、
相手サーバのパフォーマンスを自分勝手に予測し、レスポンスに気を配らなかった、
相手サーバからのレスポンスHTTP500を細かくハンドリングせず単にスキップだけしていた、
固定IPのレンタルサーバ(3月14日から3月31日、cronで起動)と、プロバイダより割り振られるIPの自宅や実家
(4月2日から4月15日、Thinkpadを持ち運んで自宅と
実家から手動で、日毎にどちらか一方から)、
合計3カ所からアクセスしていた、
などなど私に配慮が足りないことが多かったからです。
知識がある方でも配慮が足りなかったと述べられている以上、
最低でも、このAさんが書いている事は、
100%理解できる様にならないといけないですね。
(「HTTP500を細かくハンドリングせず…」辺りから意味が分からないです笑)
勿論、スクレイピング自体は、
GoogleやYahoo!などのサーチエンジンにも利用されているほど、
一般的な技術なので、使い方を間違えなければ、
本当に便利なものだと思います。
ちょっと今はこの分野は、私の中での優先順位が低いので、
ゆくゆく勉強していきたいと思ってます!
以上、データベースって奥が深い!