2019.07.14私たちが何気なく使っているwebスクレイピングですが、著作権などの法律の観点から違法と判断されることがよくあります。自分は悪気がなかったとしても結果的に相手に迷惑をかけてしまっていたりすることが多いため、気をつけなければいけません。今回はスクレイピングとその違法性、またそれを回避するためにはどうすればいいのかについて解説していきます。scraping)とは、ウェブサイトから情報を抽出するコンピュータソフトウェア技術のこと。ウェブ・クローラーあるいはウェブ・スパイダーとも呼ばれる。通常このようなソフトウェアプログラムは低レベルのHTTPを実装することで、もしくはウェブブラウザを埋め込むことによって、WWWのコンテンツを取得する。Wikipediaつまり、私たちが使っているwebサイトからそこに書いてある文字を取ってきて自分達で使えるようにすることをいいます。HTMLを解析して必要なところだけを取ってくることができます。スクレイピングはWebサイトなら基本的になんでもとってこれます。便利ですし使い方によっては業務効率を格段にあげることができます。テクニック集「取得できない値は無い」JavaScript対応@追記あり6/12スクレイピングの法律的規則スクレイピングは著作権違法?先ほどもご紹介したようにスクレイピングとは、他者が作成したネット記事などの「著作物」を勝手に取得することをいいます。ここで気になってくるのが著作権の問題です。そもそも人様が作ったサイトや書いた文章を勝手に持ってきていいものなのでしょうか。このスクレイピングによって他人の著作物を収集することは著作権の侵害に当たらないのでしょうか。基本的にスクレイピングは法律的に認められている著作権法47条の7によるとこのように書かれています。著作物は、電子計算機による情報解析(多数の著作物その他の大量の情報から、当該情報を構成する言語、音、影像その他の要素に係る情報を抽出し、比較、分類その他の統計的な解析を行うことをいう。以下この条において同じ。)を行うことを目的とする場合には、必要と認められる限度において、記録媒体への記録又は翻案(これにより創作した二次的著作物の記録を含む。)を行うことができる。情報解析を行う者の用に供するために作成されたデータベースの著作物については、この限りでない。情報解析目的であるならばスクレイピングをしても法律的に問題ないということです。スクレイピングをしたサイトの利用規約がスクレイピングを禁止していたり、そのサイト内の内容を商業目的で、利用することを禁止していた場合には違反になります。会員登録が必要なサイト(FacebookやTwitterなど)は登録時に利用規約があるのでそれに従わなければ違反になってしまうので気をつけてください。スクレイピングが違法になるケーススクレイピングが違法になるケースは一定数存在します。便利だからといってむやみに使わないように注意してください。どんなものが違法になるのか、その事例を紹介します。上にも書いた通り、情報解析目的であれば著作権法の侵害にはなりません。スクレピングしたデータをそのままインターネット上で配信することは違法行為となります。スクレイピングで取得したデータは自分で何かしらのオリジナリティのある工夫を加える必要があります。動産不法侵入または偽計業務妨害罪の場合これはスクレイピングをしていると起こる相手サーバーへの負荷のことを意味します。スクレイピングをすると、短時間になんどもサーバーへのアクセスを行います。これにより相手のサーバーに負荷がかかるため、これが犯罪になってしまうことがあります。スクレイピングを行う際はアクセスの間隔を1秒以上開けるようにするといったような対処法をとりましょう。スクレイピングで有名になった事件これに関してはLibrahack事件という有名な事件があります。この事件はスクレイピングをするときにしっかりと時間を開けて行なっていたにもかかわらず、サーバーの不具合により高負荷と判断され逮捕されてしまった事件です。この事件は明らかに誤認逮捕であると言われていますが、警察、検察の技術をあまり理解していなかったこともあり、このような結果になってしまいました。スクレイピングを行う際はこのようなことも頭に入れながら行なっていくべきでしょう。不法行為責任の場合ウェブサイトにはGoogleなどのクローラからアクセスを制限するための措置としてrobot.txtというものがあります。これはクローラーのようなロボットがWEBページのへのアクセスすることを制限するためのファイルです。サイトの重要なページにクローラーの訪問数を増やすことで、SEO改善に繋げることができるため設定しているサイトも多いです。このrobot.txtに書いてある内容を破ってクローリングを行なった場合は、民法上の不法行為に該当する可能性があるので注意が必要です。robot.txtの説明はこちらをご覧ください。最近さまざまなニュースキュレーションサイトが出てきていますが、SmartNewsもこの一つです。スクレイピング+ニュース+便利な機能によって付加価値を生み出しています。高度な機械学習技術を用いてニュースのカテゴリの分類を行うことで、その該当するニュースがどこにあるのかを探しやすくしたり、違い棚というUIを用いることでユーザーが多くの情報を吸収できるような仕組みが作られています。実際私もSmartNewsでよくニュースを見ます。日経新聞のサイトに直接いくよりもこのSmartNewsを使った方が便利ですし、短い時間でたくさんのことを吸収できます。スクレイピングは使い方と付加価値次第でとても便利なツールになります。法律的、技術的にどこまでできるのかを事前に確認しながら利用していくようにしましょう。スクレイピングをバレないようにするための4つの方法じゃあ実際、どうやってスクレイピングを行なっていけばいいのでしょうか。それは、人間らしく見せることです。webサイトにユーザーがアクセスする時に、人間がアクセスする場合と機械がアクセスする場合では全くことなる動きをします。人間だと1つのサイトを読むのに数秒かかります。ネットサーフィンをしていたらわかるとは思いますが、サイトを読む時ってまずページを読み込む時間とか、表示されたあとでスクロールして文字を読んでいく作業がありますよね。一方で、機械にやらせると1ページ1秒もかからず読み込んでしまい、その後もすぐに次のページを読み込んでいきます。これは相手のサーバー側が頻繁にアクセスしてくると知れば、対策されてしまいますし、そうすると自分の存在がバレてしまいます。やりすぎると最悪IPアドレスを特定されてブロックされちゃいます。いう自体の対策としては、機械を人間っぽくみせる仕組みを付け加えることが必要なんです。次は人間っぽく魅せる技を紹介しましょう。プロキシサーバーを使用するプロキシサーバーを使用して、スクレイピングを行うことによりアクセス経路を隠すことができます。企業で使われている社内ネットワークなどはこのプロキシサーバーを用いられています。使用するためにはプロキシサーバーを契約する必要があるのですが、実は日本ではあまりこれに関する情報がありません。オススメはLminatiのプロキシサーバーです。IPの$500、40GB以上のパッケージがオススメです。Lminatiは数あるプロキシサーバーの中でも最も高品質で安く、コスパが良いため有名です。詳しくはこちらで解説しています。あわせて読みたい【比較】プロキシ(Proxy)サーバーのオススメ3選【日本有料版】エンジニアの人はもちろん、IT関連の勉強をしている人はプロキシという言葉を聞いたことがあると思います。スクレイピングを使用したり、サービ...HTTPヘッダの書き換え1つ目の対策法はHTTPヘッダを書き換えるというものです。通常、webサイトにアクセスするときには、HTTPヘッダというものが必ず送られています。私たちが普通にブラウザからアクセスするときのHTTPヘッダと機械がアクセスしたときのHTTPヘッダはかなり違うものになっています。これを書き換えることにより、人間っぽさを出すことができます。Chromeの検証機能を使ってはてなブログにアクセスしたときのHTTPヘッダを確認してみたいと思います。HTTPヘッダの確認に関しては以下のサイトを参考にしてやってみてください。ja,en-US;q=0.9,en;q=0.8こんな感じになっているのではないでしょうか?一方でスクレイピングの代表的なモジュールであるurllibを用いてアクセスしたときのHTTPヘッダはこちらです。Python-urllib/3.4がっつりurlibと書かれていますね。機械がやってるのはバレバレです。このHTTPヘッダを書き換えて先ほど普通にアクセスした状態に見せかけます。Beautifulsoupを使ってpythonでスクレイピングを行うときは「requests」という便利なモジュールが用意されています。このrequestsモジュールを使うことでHTTPヘッダの値を書き換えられ、人間がアクセスしたかのようにみせることができます。headers)このようなコードを書くことでHTTPヘッダを書き換えた状態でスクレイピングを行うことができます。タイミングを工夫するスクレイピングをコンピュータの早さに任せてしまうと、とても早いリクエストをサーバーに送り続けてしまいます。ページをクリックしてから次のクリックまでの妥当な秒数は2~3秒くらいだと言われています。そのくらいの間を保ってスクレイピングをしていくことで、相手のサーバーリソースに負荷をかけにくくします。これはpythonのtimeモジュールを使えば簡単に実装できます。#引数には秒数を入れてくださいたったこの1行を書くだけで犯罪者にならなくてすむので、念のため絶対にやっておきましょう。ハニーポットに気をつけるハニーポットとは、webサイト提供者側が、自身のwebサイトをスクレイピングされるのを防ぐために仕掛けるトラップのようなものです。はてなブログでログインをしようと思ったとき、メールアドレスとパスワードをフォームに打ち込むことでログインをすることができます。私たちの目から見えない隠しフォームというのが存在する可能性があるみたいです。下手に書いたコードだと、自分が作ったスクレイピングツールがこのフォームに入力をしてしまうため、人間ではなく機械がスクレイピングを行なっていることがばれてしまいます。この隠しフォームのことをハニーポットといいます。スクレイピング初心者がやるとこの隠しフォームに適当な値を入れて送ってしまうことも多いそうです。フォームは本来値が入ってはいけないことになっているので、値が入った状態で送ってきたユーザーを悪意のあるユーザーとみなしブロックします。膨大なデータの個人情報を扱っているfacebookなどでは、セキュリティ管理がとてもシビアな課題となっているため、このような対策が取られています。これらを全て守っていても犯罪になるケースもあります。過去の事例をしっかりと違法にならないように注意しましょう。Edgeという、日本でいう価格コムのようなビジネスをやっているメタオークションサイトがありました。この会社はいろんなオークションサイトの価格情報を引っ張ってきて、最も価格が安い商品を紹介する、というビジネスをやっていました。価格情報をもってくるためにスクレイピングを使用していました。Edgeからの1日10000以上のアクセスを受けてとても迷惑でした。eBay側もIPアドレスをブロックするなど様々な対策をしたものの、プロキシサーバーを用いて別のIPアドレスを使ってアクセスすることでこれを回避しました。ブロックされるごとに新しいプロキシサーバーを使ってスクレイピングをし続けました。Edgeは動産侵入法で訴えられ、金で解決して終わったそうです。WikipediaAT&Tの情報セキュリティ事例AT&Tというアメリカ最大手の電話会社があります。AuernheimerはiPadでAT&Tのサイトにアクセスすることで、ユーザーのメールアドレスを集められることを発見しました。Mediaというメディアに送ったところ、メディアが重大ニュースとして取り上げられてしまいました。その後Auernheimerはコンピュータアクセス謀議で有罪隣73000ドルの支払いを命じられました。重要なデータはスクレピングできる状況であったとしてもしないほうが安全だと思っています。これはAT&Tにセキュリティの脆弱性を通知する前に、メディアに伝えてしまったのが問題だと言われています。セキュリティの脆弱性を発見した場合でも、メディアに直接報告するのではなく、相手企業のセキュリティ責任者に伝えてあげるほうが賢明のようです。セキュリティの欠陥があったのを教えてくれてありがとう!ってなると思います。Parkerという作家が訴訟を起こした事件です。Parkerは、自分の書籍の1章をUsenetの掲示板で公開していました。あるときにその公開を取りやめたにも関わらず、ウェブサイトの一部を検索結果として表示されており、著作権法違反になるのではないかと訴訟を起こした事件でした。結局Google側が勝訴したようです。他にも似たような事例がありましたが、キャッシュに関しての事例は著作権法違反にはならないようです。Naviは、データサイエンティスト・AI・機械学習エンジニアの転職とプログラミングスクールの日本最大級の特化型メディアです。データサイエンスナビ。