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