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

基礎 / 認証方式

API Key と Native Access の違いと使い分け

Bright Data では、同じプロダクトでも API AccessNative Access の 2 系統で接続できます。課金レートはどちらを選んでも同じなので、判断軸は「どの実装に最短で組み込めるか」と「運用をどこで制御したいか」です。

このページでは、認証ガイド を前提に、実装寄りの観点で両方式を比較します。最初に全体像をつかみ、最後に curl、Python、Node.js の最小例まで確認すると、どちらで着手すべきか迷いにくくなります。

一次情報: Authentication | Bright Data Docs

まず結論

観点API AccessNative Access
認証情報Authorization: Bearer <API_KEY>username:password
代表接続先https://api.brightdata.com/requestbrd.superproxy.io:33335
向いている形API 統合、ETL、バッチ、JSON 処理既存クローラ、ブラウザ、プロキシ対応ツール
主な返り値JSON、HTML、raw bodyHTML や生レスポンス
運用単位API キー単位で権限・期限を管理zone と proxy password を中心に管理
最短導入先新規アプリ、SDK、サーバー処理Playwright、Selenium、curl --proxy、既存収集基盤
  • 新規実装なら、まずは API Access を優先するのが基本です。
  • 既存のプロキシ前提ツールを載せ替えるなら、Native Access のほうが変更範囲を抑えられます。
  • Browser API や Web Unlocker のように、ユースケース次第で両方の入り口を持てる製品は、チーム事情で選んで問題ありません。

API Access を選ぶ場面

API Access は、Bearer トークンを HTTP ヘッダーに付ける方式です。JSON をそのままアプリケーションに流し込めるため、Bright Data を「外部 API のひとつ」として扱えます。

特に次の条件に当てはまるなら、API Access で始めるのが自然です。

  • 収集結果を Node.js、Python、ワークフローエンジンでそのまま処理したい
  • zone、URL、出力形式、ジョブ ID をアプリケーションコード側で明示したい
  • SERP API、Browser API、Crawl API、Scrapers、Discover、Deep Lookup を横断して使いたい
  • USER / OPS 権限の API キーを分け、職務分離をしやすくしたい

API Access の利点

利点実務で効く場面
ヘッダー認証なので扱いが単純GitHub Actions、Cloud Run、Lambda などに載せやすい
JSON レスポンスを扱いやすい取得結果を ETL や DB へ直結しやすい
API キー単位で期限を設定できる90 日ローテーションや失効運用を作りやすい
SDK と CLI の文脈に乗せやすいPython SDK や JavaScript SDK に展開しやすい

API Access の注意点

  • 既存ツールが --proxy 前提なら、API 化のために呼び出し側を書き換える必要があります。
  • Refresh でキーを再生成すると旧キーは即時無効化されます。段階切替をしたい場合は、最初から複数キーで運用します。
  • 失敗時の再試行やキューイングは、アプリ側で持つ設計になりやすいです。詳しくは 基礎 / 運用 を参照してください。

Native Access を選ぶ場面

Native Access は、Bright Data をプロキシとして使う方式です。host:port + username:password を設定できるツールなら、そのまま接続できることが多く、既存資産のリフトに向きます。

次の条件に当てはまるなら、Native Access が近道です。

  • すでに Playwright、Puppeteer、Selenium、独自クローラがあり、HTTP プロキシだけ差し込みたい
  • 出力は HTML やネットワークレスポンスをそのまま受け取り、後段で独自パースしたい
  • プロキシ認証の Runbook が既に社内で整っている

Native Access の利点

利点実務で効く場面
実装変更が小さい既存クローラを短時間で移行しやすい
ブラウザや CLI との相性がよいPlaywright、Selenium、curl --proxy で試しやすい
zone を軸に管理しやすいワークロードごとに zone を分けやすい

Native Access の注意点

  • PRODUCT_NAME は zone 作成時の名前で、後から変更できません。命名を先に決める必要があります。
  • Residential network と Web Unlocker を KYC なしで使うケースでは、証明書の考慮が必要です。
  • 権限管理は API キーのような細かい PermissionLevel ではなく、zone とパスワードの管理が中心になります。

詳細比較

認証情報の持ち方

項目API AccessNative Access
シークレットAPI キーProxy password
形式Bearer トークンbrd-customer-<ACCOUNT_ID>-zone-<PRODUCT_NAME>:<PROXY_PASSWORD>
再生成時の影響旧キーが即時無効新パスワードへ切替が必要
監査しやすさキー単位で役割を切りやすいzone 単位の運用に寄る

API Access は、人・環境・ジョブ単位でキーを分ける設計に向いています。Native Access は、接続先のアプリがプロキシをどう扱うかに強く依存します。

レスポンス設計

項目API AccessNative Access
返却の受け口HTTP API のレスポンスプロキシ経由の元レスポンス
JSON 化のしやすさ高いツール側に依存
非同期ジョブとの相性高い低い
Webhook 連携API 側のジョブ設計でしやすい別途自前実装が必要

非同期処理や Webhook を使う設計なら、ほぼ API Access 一択です。逆に、1 ページずつ人間がブラウザで確認しながら進めるような検証では Native Access が便利です。

運用責任の置き場所

項目API AccessNative Access
権限制御ADMIN / FINANCE / OPS / LIMIT / USERzone と接続情報で制御
有効期限API キーに設定可能パスワード再生成ベース
導入主体アプリ開発チームクローラ運用チーム

判断フロー

以下の順に考えると、選択を誤りにくくなります。

  1. 既存実装がプロキシ前提か、HTTP API 前提かを確認する
  2. 結果を JSON として扱いたいか、HTML を自前で処理したいかを決める
  3. キー期限や権限分離を API キー単位で管理したいか確認する
  4. 非同期ジョブや Webhook を将来使うなら API Access を優先する
  5. 短期の移行なら Native Access、中長期の統合基盤なら API Access を検討する

API Access を選ぶべきサイン

Native Access を選ぶべきサイン

  • 既存 Playwright スクリプトの proxy 設定だけ変えたい
  • ブラウザを人間が操作しながら調査する
  • 社内の監視・ログ基盤が既にプロキシ接続を中心に設計されている

実装例 1: curl で API Access

最初の 1 回を通すなら、/request エンドポイントに zoneurl を渡すのがわかりやすいです。

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",
    "format": "raw"
  }'
  • web_unlocker1 は例です。実際には自分の zone 名を使います。
  • format を変えると、後段での扱い方が変わります。

実装例 2: Python で API Access

運用コードの最小形です。requests で十分始められます。

import os
import requests
 
response = requests.post(
    "https://api.brightdata.com/request",
    headers={
        "Authorization": f"Bearer {os.environ['BRIGHTDATA_API_KEY']}",
        "Content-Type": "application/json",
    },
    json={
        "zone": "web_unlocker1",
        "url": "https://example.com",
        "format": "raw",
    },
    timeout=60,
)
 
response.raise_for_status()
print(response.text[:400])
  • API Access は、例外処理、再試行、メトリクスの挿入がしやすい形です。
  • 本格運用では、HTTP 429 や timeout を見てバックオフします。

実装例 3: Node.js で API Access

Node.js では fetch だけでも十分です。

const response = await fetch("https://api.brightdata.com/request", {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${process.env.BRIGHTDATA_API_KEY}`,
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    zone: "web_unlocker1",
    url: "https://example.com",
    format: "raw"
  })
});
 
if (!response.ok) {
  throw new Error(`Bright Data request failed: ${response.status}`);
}
 
const body = await response.text();
console.log(body.slice(0, 400));
  • バックエンド API やジョブワーカーへそのまま組み込みやすい書き方です。
  • ロードマップ Lv2 では、この形を土台に SERP API や Browser API へ広げます。

Native Access の最小確認

比較のため、Native Access 側の最小確認も載せておきます。既存クローラの延長で試すならこちらです。

curl --proxy brd.superproxy.io:33335 \
  --proxy-user "brd-customer-$ACCOUNT_ID-zone-$PRODUCT_NAME:$PROXY_PASSWORD" \
  -k https://geo.brdtest.com/welcome.txt
  • ACCOUNT_IDhl_ で始まる顧客 ID です。
  • PRODUCT_NAME は zone 名で、作成後は変更できません。
  • 証明書要件がある環境では、-k に頼らず正規に証明書を配備します。

チーム別のおすすめ

チーム先に選ぶ方式理由
アプリ開発API Accessバックエンドに組み込みやすい
データ基盤API AccessJSON と非同期ジョブに寄せやすい
既存クローラ運用Native Access実装変更を最小化しやすい
ブラウザ自動化Native Access か Browser API既存コード量と運用責任で決める

迷ったときの実務ルール

  • 新規プロジェクトなら API Access で始める
  • 既存資産の短期移行なら Native Access を優先する
  • zone は用途別に分け、検証・本番を混ぜない
  • API キーは USEROPS で発行し、ADMIN を埋め込まない
  • 3 か月後に非同期や Webhook が必要になりそうなら、最初から API Access に寄せる

次に読む