ハトリのエンジニア塾

六本木ヒルズで働く学生エンジニア。技術発信や就職活動について書いていきます。

【スクレイピングと著作権②】どこから違法?法律的観点から注意すべき点!事例つきで解説

f:id:hatorihatorihatorik:20180803172000p:plain

 

こんにちは。以前スクレイピングのことについて調べたんですが、もっと気になったので調べてみました。前回書いた記事はこちらです。

 

www.torikun.com

 

この続きを書きます。前回はどこまでが違法なのか、なにをやってよくてなにをやっちゃだめなのか、っていう視点で書いていきました。スクレピングはとても著作権法や動産侵入法などさまざまな法律と密接に関係していて、かなりめんどくさいし規模が大きくなればなるほど気軽にできるものじゃないですよね。

 

今回は、じゃあ具体的にどうやってスクレイピングをやれば捕まらなくてすむの?っていう話を書いていきたいと思います。実際にスクレピング関連の訴訟事例を紹介していきます。

知らぬ間に犯罪者にならないために気をつけること

気をつけることはただ一つです!!

 

 

 

それは、、

 

 

 

人間らしくみせること!

 

 

webサイトにアクセスする時って人間と機械では全くことなる動きをします。人間だと1つのサイトを読むのに数秒かかるところを機械にやらせると1秒もかからず読み込んでしまいます。これは相手側のサーバーに対策されるとバレてしまいますし、やりすぎると最悪IPアドレスを特定されてブロックされちゃいます。こうならないようにするためには、機械を人間っぽくみせる仕組みが必要です。人間っぽく魅せる技を紹介します。

HTTPヘッダを書き換える

1つ目の対策法はHTTPヘッダを書き換えるというものです。通常webサイトにアクセスするときに、HTTPヘッダというものが必ず送られています。私たちが普通にブラウザからアクセスするときのHTTPヘッダと機械がアクセスしたときのHTTPヘッダはかなり違うものになっています。これを書き換えることで人間ぽさを出すことができます。

 

まずは、Google Chromeの検証機能を使ってはてなブログにアクセスしたときのHTTPヘッダを確認してみましょう。

 

以下のサイトを参考にしてやってみてください

https://marubon.info/method-confirm-http-header-2345/

 

ここで取得できるあたいは人によって異なってきますが、

 

 --> GET / HTTP/1.1

Host: hatenablog.com

Connection: keep-alive

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/547.36 (KHTML, like Gecko) Chrome

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

Accept-Encoding: gzip, deflate

Accept-Language: ja,en-US;q=0.9,en;q=0.8

 

こんな感じになっているでしょうか?

 

一方でurllibを用いてアクセスしたときのHTTPヘッダは以下のようになります。


Accept-Encoding: identity
User-Agent: Python-urllib/3.4

 

urllibっていうのはpythonでurlを扱うときのモジュールなので、機械がやってるのはバレバレ何ですよね。

 

これはまずいので、書き換えて先ほど普通にアクセスした状態に見せかけます。
Beautifulsoupを使ってpythonスクレイピングを行うときはrequestsモジュールという便利なモジュールが用意されています。これを使うとHTTPヘッダの値を書き換えられ、人間がアクセスしたかのようにみせることができます。

 

import requests
from bs4 import BeautifulSoup

session = requests.session()
headers = {“User-Agent”: “Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5)”
"AppleWebKit/537.36 (KHTML, like Gecko) Chrome"
"Accept": "text/html,application/xhtml+xml,application/xml;" "q=0.9,image/webp,image/apng,*/*;q=0.8"}

url = ("http://hatenablog.com/")
req = session.get(url, headers = headers)

 

このようなコードを書くことでHTTPヘッダを書き換えた状態でスクレイピングを行うことができます。

タイミングを工夫する

コンピュータの早さに任せてしまうととても早いリクエストを送り続けてしまいます。ページをクリックしてから次のクリックまでの妥当な秒数(2~3秒くらい)の間を保ってスクレイピングをしていくことで、相手のサーバーリソースに負荷をかけにくくします。これはpythonのtimeモジュールを使えば簡単に実装できます。

 

time.sleep(2)

 

たったこの1行を書くだけで犯罪者にならなくてすむので、念のため絶対にやっておきましょう。

ハニーポットに気をつける

ハニーポットとは、webサイト提供者側が、自身のwebサイトをスクレイピングされるのを防ぐために仕掛けるトラップのようなものです。


例えば、はてなブログでログインをしようと思ったとき、メールアドレス+パスワードをフォームに打ち込むことでログインをすることができます。
しかし、私たちの目から見えない隠しフォームというのが存在する可能性があります。下手に書いたコードだとこのフォームに入力をしてしまうため、人間じゃなくて機械がやっていることがばれてしまいます。これをハニーポットといいます。

f:id:hatorihatorihatorik:20180716165017p:plain

 

スクレイピング初心者がやるとこの隠しフォームに適当な値を入れて送ってしまうことも多いそうです。フォームは本来値が入ってはいけないことになっているので、値が入った状態で送ってきたユーザーを悪意のあるユーザーとみなしブロックします。

 

膨大なデータの個人情報を扱っているfacebookなどでは、セキュリティ管理がとてもシビアな課題となっているためこのような対策が取られているようです。

 

対策法は以上になります。しかしこれらを全て守っていても犯罪になるケースもあります。過去の事例をしっかりと違法にならないように注意しましょう。

スクレイピングと法律(海外の事例)

eBayとBidder’s Edgeの事例

Bidder’s Edgeという価格コムみたいなビジネスをやっているメタオークションサイトがあります。この会社はいろんなオークションサイトの価格情報を引っ張ってきて、最も価格が安い商品を紹介するビジネスをやっていました。もちろん価格情報をもってくるためにスクレイピングを使用。当時オークションプラットフォーム最大手のeBayは1日10000を超えるアクセスを受けてとても迷惑でした。


eBay側もIPアドレスをブロックするなど様々な対策をしたものの、プロキシサーバーを用いて別のIPアドレスを使ってアクセスすることでこれを回避。ブロックされるごとに新しいプロキシサーバーを使ってスクレイピングをし続けました。

 

結局Bidder’s Edgeは動産侵入法で訴えられ、金で解決して終わったそうです。

 

参考: eBay v. Bidder's Edge - Wikipedia

AT&Tの事例

AT&Tというアメリカ最大手の電話会社があります。Andrew AuernheimeriPadAT&Tのサイトにアクセスすることで、ユーザーのメールアドレスを集められることを発見しました。
メールアドレスを発見できたという情報をGawker Mediaというメディアに送ったところ、メディアが重大ニュースとして取り上げられてしまいました。その後Auernheimerはコンピュータアクセス謀議で有罪隣73000ドルの支払いを命じられました。

 

おそらく、個人情報、営業機密、政府機密などの重要なデータはスクレピングできる状況であったとしてもしないほうが賢明でしょう。また、これはAT&Tにセキュリティの脆弱性を通知する前に、メディアに伝えてしまったのが問題だと言われています。
セキュリティの脆弱性を発見した場合でも、メディアに直接報告するのではなく、相手企業のセキュリティ責任者などに伝えてあげるほうが賢明です。むしろセキュリティの欠陥があったのを教えてくれてありがとう!ってなります!

caselaw.findlaw.com

Googleのサイトキャッシュ機能と著作権

Gordon Roy Parkerという作家が訴訟を起こした事件です。もともとParkerは、自分の書籍の1章をUsenetの掲示板で公開していました。しかし、あるときにその公開を取りやめたにも関わらず、ウェブサイトの一部を検索結果として表示されており、著作権法違反になるのではないかと訴訟を起こしました。

 

結局Google側が勝訴しました。他にも似たような事例がありましたが、キャッシュに関しての事例は著作権法違反にはならないそうです。

 

japan.cnet.com