プログラマー向けモードで表示中ビジネスユーザー向けへ
Bright Data 学習ポータル
UC-WEB-001Web AccessLv2

保護サイトの安定収集基盤

ブロック/レート制限/CAPTCHA を吸収し、アプリ連携に耐えるデータ取得基盤を作る。

Web UnlockerWeb Access APIs

KPI 例

  • 取得成功率
  • 429 発生率
  • P95 レイテンシ

保護の強いサイトを通常の HTTP クライアントで直接取りにいくと、403、429、CAPTCHA、IP ブロックが混ざって発生しやすくなります。このユースケースでは、取得ロジックを自前で複雑化するのではなく、Web Unlocker を取得の入口として固定し、後段の解析や保存を安定させることを狙います。

誰の課題か

  • 価格監視、競合調査、公開情報収集を担当するデータエンジニア
  • HTML は自前で解析したいが、取得の成功率が安定しないチーム
  • 既存の ETL やバッチに、取得部分だけを API で差し込みたい開発者

典型的な痛みは、同じ URL でも日によって取得できたりできなかったりすることです。特に、失敗時の切り分けが「対象サイトの仕様」なのか「自前実装の弱さ」なのか見えにくい場合、取得の入口を製品として切り分ける価値が出ます。

推奨製品セット

製品役割このページでの使い方
Web Unlocker保護の強いページの取得入口URL を渡して HTML / raw body を受け取る
API Accessサーバー実装向けの認証方式Authorization: Bearer <API_KEY>/request を呼ぶ
Native Access既存クローラ移行向けの認証方式host:port + username:password のプロキシ設定で接続する
  • 新規実装なら、まずは API Access を優先します。
  • 既存のブラウザやクローラを最短で移行したいなら、Native Access も候補です。
  • 課金レートは API Access / Native Access で同じです。違いは実装と運用の置き場所です。

最小実装イメージ

API Access で 1 URL を取得

curl -X POST https://api.brightdata.com/request \
  -H "Authorization: Bearer $BRIGHTDATA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "zone": "web_unlocker1",
    "url": "https://example.com/protected-page",
    "format": "raw"
  }'
  • zone には Web Unlocker 用に作成した zone 名を入れます。
  • まずは format: "raw" で取得し、後段の HTML 解析を自前に寄せると責務が分かりやすくなります。

Python で共通関数に閉じ込める

import os
import requests
 
API_KEY = os.getenv("BRIGHTDATA_API_KEY")
ZONE = os.getenv("BRIGHTDATA_ZONE", "web_unlocker1")
ENDPOINT = "https://api.brightdata.com/request"
 
def fetch_raw(url: str) -> str:
    response = requests.post(
        ENDPOINT,
        headers={
            "Authorization": f"Bearer {API_KEY}",
            "Content-Type": "application/json",
        },
        json={
            "zone": ZONE,
            "url": url,
            "format": "raw",
        },
        timeout=60,
    )
    response.raise_for_status()
    return response.text
 
html = fetch_raw("https://example.com/protected-page")
print(html[:500])

この段階では、抽出ロジックよりも「どの zone で」「どの URL を」「どの頻度で」呼ぶかをコード上で固定することが重要です。

運用ポイント

  • zone は検証用と本番用で分けます。unlocker_devunlocker_prod のように責務で切ると、失敗率とコストを追いやすくなります。
  • API キーは USER または OPS 権限を使い、ADMIN をジョブ実行に使わない構成にします。
  • 403 や 429 が出たら、まず対象 URL、zone、直前の成功率を並べて確認します。再試行だけで押し切るより、製品選定や呼び出し頻度を見直すほうが先です。
  • 既存クローラを移行する場合は、API 化と Native Access 移行を同時にやらず、どちらか片方に寄せたほうが切り分けしやすくなります。
  • 取得対象の利用規約や社内ルールの確認は別工程にせず、URL の登録手順に組み込みます。

関連リンク