Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

制限

最終更新 Markdown で表示Agent セットアップ

Browser Run の制限は、Cloudflare Workers のプラン に基づきます。

料金については、Browser Run の料金 を参照してください。

Workers Free

機能 制限
ブラウザ時間 1 日あたり 10 分
アカウントあたりの同時ブラウザ数(Browser Sessions のみ) 1 アカウントあたり 3
新しいブラウザインスタンス(Browser Sessions のみ) 20 秒に 1 回
ブラウザのタイムアウト 60 秒 2
総リクエスト数(Quick Actions のみ) 3 10 秒に 1 回

/crawl エンドポイントの制限

/crawl エンドポイント には、Workers Free プランのユーザー向けの追加制限があります。

機能 制限
1 日あたりのクロールジョブ数 1 日あたり 5
1 クロールあたりの最大ページ数 100 ページ

Workers Paid

機能 制限
ブラウザ時間 制限なし(料金を参照
アカウントあたりの同時ブラウザ数(Browser Sessions のみ) 1 アカウントあたり 200(料金を参照
1 秒あたりの新しいブラウザインスタンス数(Browser Sessions のみ) 1 秒あたり 3
ブラウザのタイムアウト 60 秒 2
1 秒あたりの総リクエスト数(Quick Actions のみ) 3 1 秒あたり 30

FAQ

Browser Run の同時実行とセッション分離は、どう管理しますか?

同時実行の 制限 に達している場合や、同時ブラウザー利用を最適化したい場合は、次のヒントを参考にしてください。

  • タブまたは共有ブラウザーで最適化する: タスクごとに新しいブラウザーを起動する代わりに、同じブラウザーインスタンスで複数のタブを開く、または複数の操作を実行することを検討してください。
  • セッションを再利用する: 毎回新しいブラウザーを起動せずセッションを再利用すると、構成を最適化し、起動時間を短縮できます。テストの分離(クリーンな環境に依存するテストなど)を維持したい場合は、Cookie とキャッシュをほかのセッションから分離する シークレット(incognito)ブラウザーコンテキスト の利用をおすすめします。

それでも同時実行の制限に達する場合は、上限の引き上げを申請 できます。

ブラウザのタイムアウトを延長できますか?

デフォルトでは、ブラウザインスタンスは 60 秒間操作がないとタイムアウトします。ブラウザをより長く開いたままにするには、keep_alive オプション を使います。タイムアウトは最大 10 分まで延長できます。

セッションの最長時間はありますか?

セッションがアクティブな限り、ブラウザセッションに固定の最長寿命はありません。意図しない利用を防ぐため、Browser Run はデフォルトで 1 分間操作がないとセッションを閉じます。この非アクティブタイムアウト は最大 10 分まで延長できます。

セッションをより長く開いたままにするには、設定した非アクティブ期間内に少なくとも 1 回コマンドを送信して、セッションをアクティブに保ちます(例: 10 分ごと)。Browser Run が新しいリリースをロールアウトするときも、セッションは閉じます。

Workers Free プランからアップグレードしたのに、1 日 10 分の制限に達します。どうすればよいですか?

最近 Workers Paid プラン にアップグレードしたあとも、1 日 10 分の制限に達する場合は、Worker を再デプロイしてください。利用量が新しいプランに正しく紐づきます。

ブラウザの利用量が想定より多いのはなぜですか?

1 日の制限に達したり、想定より多い利用量が見えたりする場合、最も多い原因は、ブラウザセッションが正しく閉じられていないことです。browser.close() で明示的に閉じないセッションは開いたままになり、タイムアウトするまでブラウザ時間を消費します(デフォルトは 60 秒。keep_alive オプションを使うと最大 10 分)。

利用量を抑えるには:

  • ブラウザセッションの利用が終わったら、必ず browser.close() を呼び出します。
  • ブラウザのコードを try/finally ブロックで囲み、エラーが起きても browser.close() が呼ばれるようにします。
  • puppeteer.history() または playwright.history() で最近のセッションを確認し、NormalClosure ではなく BrowserIdle で閉じたセッションがないかを調べます。アイドルタイムアウトで閉じたセッションは、ブラウザを明示的に閉じていないことを示します。

利用量とセッションの終了理由は、Cloudflare ダッシュボードの Browser Run ページで確認できます。

Browser Run を開く ↗

詳細は ブラウザの終了理由 を参照してください。

トラブルシューティング

エラー: 429 Too many requests

短時間にリクエストが多すぎると、Browser Run は HTTP ステータスコード 429 Too many requests で応答します。アカウントのレート制限は、上記の Workers FreeWorkers Paid のセクションで確認できます。

次の例は、Retry-After の値を読み取り、その遅延のあとにリクエストを再試行して、レート制限を適切に扱う方法です。

const response = await fetch('https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/content', {
    method: 'POST',
    headers: {
        'Content-Type': 'application/json',
        'Authorization': 'Bearer <your-token>',
    },
    body: JSON.stringify({ url: 'https://example.com' })
});

if (response.status === 429) {
const retryAfter = response.headers.get('Retry-After');
console.log(`Rate limited. Waiting ${retryAfter} seconds...`);
await new Promise(resolve => setTimeout(resolve, retryAfter \* 1000));

    // Retry the request
    const retryResponse = await fetch(/* same request as above */);

}
import puppeteer from "@cloudflare/puppeteer";

try {
	const browser = await puppeteer.launch(env.MYBROWSER);

	const page = await browser.newPage();
	await page.goto("https://example.com");
	const content = await page.content();

	await browser.close();
} catch (error) {
	if (error.status === 429) {
		const retryAfter = error.headers.get("Retry-After");
		console.log(
			`Browser instance limit reached. Waiting ${retryAfter} seconds...`,
		);
		await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000));

		// Retry launching browser
		const browser = await puppeteer.launch(env.MYBROWSER);
	}
}

エラー: 429 Browser time limit exceeded for today

この Error processing the request: Unable to create new browser: code: 429: message: Browser time limit exceeded for today エラーは、Workers Free プランの 1 日あたりのブラウザ制限に達したことを示します。Workers Free プランのアカウント は、Browser Run の利用が 1 日あたり 10 分に制限されます。この制限を超えると、次の UTC 日まで 429 エラーが返ります。

Cloudflare ダッシュボードの Workers plans ページで Workers Paid プランにアップグレードすると、制限を引き上げられます

Workers plans を開く ↗

最近アップグレードしたあとも 1 日 10 分の制限に達する場合は、Worker を再デプロイしてください。利用量が新しいプランに正しく紐づきます。

Footnotes

  1. ブラウザは、タスク完了時、または 60 秒間操作がないとき(ブラウザのタイムアウトを延長していない場合)に閉じます。そのため実際には、多くのワークフローで高い同時ブラウザ数は不要です。 2

  2. デフォルトでは、ブラウザは 60 秒間操作がないとタイムアウトします。keep_alive オプション を使うと、最大 10 分まで延長できます。すぐにブラウザインスタンスを解放するには、browser.close() を呼び出します。 2

  3. 1 秒あたりのレート制限を超えると、429 レスポンスが返ります。429 Too many requests エラーのトラブルシューティング を参照してください。 2

役に立ちましたか?