目次
- 1. その「取得」、法律的に大丈夫ですか?
- その1:著作権法(第30条の4)
- その2:不法行為(民法第709条)
- その3:偽計業務妨害・威力業務妨害(刑法)
- 2. 技術的な防衛ライン:robots.txtとsitemap.xml
- robots.txtの確認方法
- 3. Webサイト側の防御システム(WAF / Anti-Bot)
- IPブロッキング
- 動的コンテンツ(SPA / Ajax)
- CAPTCHAとCloudflare
- 4. 安全なデータ取得のための実践ガイド
- ① APIを探す
- ② クロール頻度を下げる(Sleepを入れる)
- ③ 連絡先をUser-Agentに記載する
- ④ プロキシローテーション(最終手段)
- 5. まとめ:「泥棒」ではなく「お客様」であれ
企業公式サイト(コーポレートサイト)は、企業の「今」を知るための一次情報の宝庫です。 しかし、そこからデータを自動収集(スクレイピング)する場合、技術的なスキル以上に「法的な知識」と「倫理観」が問われます。
「公開されている情報だから何でも取っていい」は、現代のインターネット社会では通用しません。 安易なスクレイピングが引き起こす法的トラブルや、IPアドレスブロックなどのリスクを回避するために、Webエンジニアやデータアナリストが知っておくべき「鉄の掟」を解説します。
1. その「取得」、法律的に大丈夫ですか?
スクレイピングに関連する日本の法律は主に3つあります。
その1:著作権法(第30条の4)
2018年の法改正により、「情報解析」を目的とする場合に限り、著作権者の許諾なく著作物を利用(複製・保存)することが認められました。これはAI開発やデータ分析にとっては大きな追い風です。
しかし、注意点があります。
- 「享受」が目的ではダメ:解析ではなく、取得した文章や画像をそのまま自サイトに掲載して閲覧させる行為(コピーサイト作成)は、依然として著作権侵害です。
- 販売も注意:取得したデータをそのまま販売することは、データベースの著作権などの侵害になる可能性があります。
その2:不法行為(民法第709条)
Webサイトの利用規約(Terms of Service)に「スクレイピング禁止」と明記されている場合、それに違反して大量アクセスを行うと、不法行為として損害賠償を請求されるリスクがあります。
その3:偽計業務妨害・威力業務妨害(刑法)
これが最も恐ろしいケースです。 秒間何百回ものリクエストを送りつけ、サーバーをダウンさせたり著しく遅延させたりした場合、**サイバー攻撃(DoS攻撃)**とみなされ、刑事事件に発展する可能性があります。
過去には「岡崎市立中央図書館事件(Librahack事件)」のように、技術者が逮捕される事案も発生しています。
2. 技術的な防衛ライン:robots.txtとsitemap.xml
スクレイピングを行う前に、必ず**robots.txt**を確認するのがインターネット市民としてのマナー(というよりルール)です。
robots.txtの確認方法
対象のドメインのルートにアクセスします。
例: https://www.example.com/robots.txt
User-agent: *
Disallow: /admin/
Disallow: /private-data/
Crawl-delay: 10
Disallow: ここに書かれているパスへのクロールは拒否されています。絶対にアクセスしてはいけません。Crawl-delay: 指定された秒数(上記なら10秒)の間隔を空けてアクセスする必要があります。
Pythonの urllib.robotparser を使えば、プログラム内で自動的にこのルールを守らせることができます。
import urllib.robotparser
rp = urllib.robotparser.RobotFileParser()
rp.set_url("https://www.example.com/robots.txt")
rp.read()
target_url = "https://www.example.com/admin/page"
if rp.can_fetch("*", target_url):
print("アクセスOK")
else:
print("アクセス禁止エリアです")
3. Webサイト側の防御システム(WAF / Anti-Bot)
企業サイト側も、無断スクレイピングに対して防備を固めています。
IPブロッキング
短時間に大量のアクセスを行うと、ファイアウォール(WAF)がIPアドレスをブラックリストに登録します。一度ブロックされると、そのIPからは二度とアクセスできなくなります。特にAWSやGCPなどのクラウドのIP帯域は、最初から警戒されていることが多いです。
動的コンテンツ(SPA / Ajax)
ReactやVue.jsで作られたSPA(Single Page Application)は、初期HTMLにはデータが含まれておらず、JavaScriptで後からデータを読み込みます。
従来の BeautifulSoup などのHTMLパーサーでは空のデータしか取れません。
対策としては、Selenium や Playwright のようなヘッドレスブラウザを使う必要がありますが、これは処理が重く、サーバー負荷も高くなるため、より慎重なアクセス制御が求められます。
CAPTCHAとCloudflare
CloudflareなどのCDNは、ボット特有の挙動(マウス移動がない、User-Agentが怪しい、TLSフィンガープリントがデフォルト)を検知すると、CAPTCHA(「私はロボットではありません」)を表示します。これを突破するのは技術的に非常に困難であり、回避しようとすることは推奨されません。
4. 安全なデータ取得のための実践ガイド
では、どうすれば安全にデータを収集できるのでしょうか。
① APIを探す
これが最善策です。公式サイトのフッターや開発者ページを探し、公式APIが提供されていないか確認しましょう。APIであれば、利用規約の範囲内で堂々とデータを取得できます。
② クロール頻度を下げる(Sleepを入れる)
time.sleep(1) が最低ラインです。サイトの規模やサーバーの応答速度によっては、3秒〜5秒の間隔を空けることが推奨されます。
「早く集めたい」という欲望は、IPブロックという「永遠の遅延」を招くだけです。
③ 連絡先をUser-Agentに記載する
リクエストヘッダのUser-Agentに、自分の連絡先(メールアドレスやWebサイトのURL)を含めましょう。
User-Agent: MyCorporateBot/1.0 (+https://corpsta.com/contact)
これにより、万が一サーバー管理者が異常を検知した際、いきなり法的手段に出るのではなく、連絡をくれる可能性があります。
④ プロキシローテーション(最終手段)
どうしても大規模な収集が必要な場合、Bright Data や Oxylabs といった有料のプロキシネットワークを利用し、アクセス元のIPを分散させる手法があります。しかし、これは「ブロック回避」のための攻撃的な手法とも取れるため、利用規約や法的な正当性を十分確認した上で行うべきです。
5. まとめ:「泥棒」ではなく「お客様」であれ
Web上のデータは、技術力さえあれば簡単に取得できてしまいます。しかし、「できる」ことと「やっていい」ことは別です。
企業公式サイトから情報をいただく(Take)際、私たちは相手のサーバーリソースという資産を消費しています。 礼儀(アクセスマナー)を守り、法律(ルール)を遵守すること。それが、持続可能なデータビジネスの前提条件です。
もし自社でのスクレイピングに不安があるなら、すでに適法にデータを収集・蓄積している企業データベースサービスを購入するのが、結果的に最も低コストで低リスクな選択肢になることも多いのです。