エラーと制限
各エラーコードの意味と再試行の可否。相手の拒否を空の結果ではなく拒否として返す理由。
形
{
"error": {
"code": "VALIDATION_FAILED",
"message": "Invalid request body",
"request_id": "req_…",
"retryable": false,
"details": { }
}
}分岐に使うのは retryable です。これ以外の項目は安定した契約ではありません。
コード
| コード | 意味 | 再試行 |
|---|---|---|
VALIDATION_FAILED | リクエストがスキーマに合わない | 不可 ― リクエストを直す |
UNAUTHORIZED | キーが無い、または不明 | 不可 |
QUOTA_EXCEEDED | プランの上限に達した | 期間のリセット後 |
NO_CAPACITY | 空きのブラウザワーカーが無い | 可(バックオフして) |
NO_IP_AVAILABLE | 指定した国に健全なアドレスが無い | 可 ― 多くはリージョンの暖機中 |
INVALID_URL | SSRF防御に阻まれた、または不正な形式 | 不可 |
BROWSER_FAILED | ページが読み込めなかった | 可(1回) |
RATE_LIMITED | 送りすぎ。自分側か、相手ドメイン側か | 可(間隔を空けて) |
拒否は「空の結果」ではありません
相手が 403 や 429 を返したとき、それはレスポンスのHTTPステータスとして報告されます。「中身が空の成功」にはしません。
この区別は見た目より重要です。空の結果は「そこには何も無い」と読めるので、 セレクタを疑いに行くことになります。実際のメッセージは「速度を落とせ」でした。
拒否は日時とともに記録し、そこで停止し、その情報源をスケジュールに戻しません。
礼儀は設定ではなく強制です
同一ドメイン宛のリクエストは、こちらがどれだけ速く送っても間隔が空けられます。 robots.txt は取得して従います。crawl-delay も含みます。禁止されたパスは、取得を試みずに INVALID_URL を返します。
これを解除する設定はありません。サポートに依頼しても解除できません。 一度拒否された取得元は二度と読めず、その損失はその情報源を必要としているすべてのお客様に及ぶからです。
最終更新