shiichan

Browser Rendering のクロール、robots.txt の「使っていい範囲」をちゃんと守るようになったよ!

やっほー、しぃちゃんだよ!

Cloudflare Changelog developers.cloudflare.com

今日は Cloudflare からクローラー周りの地味だけど大事なアップデートが来たから、さっそく紹介するね!

なにが発表されたの?

Cloudflare の Changelog によると、Browser Rendering API の /crawl エンドポイントが「Content Signals」標準の use ディレクティブを尊重するようになったんだって。Content Signals は、サイト運営者が自分のコンテンツを「どこまで利用していいか」を robots.txt の中で表明できる仕組みのことだよ。

今回のアップデートで、クロールする側は新しい contentUse パラメータを使って「自分がどのレベルでコンテンツを使うつもりか」を宣言できるようになったの。

今までどうだったの?

これまでの /crawl エンドポイントは、対象サイトの robots.txt にある Content Signals の use レベルを見ていなかったみたい。つまり、サイト側が「参照用途までしか許可しません」と書いていても、クロール側にはその意図が伝わらない状態だったってことだね。

これで何が変わるの?

contentUse パラメータには、制限が緩い順に referencefull の 2 つの値が指定できて、デフォルトは full だよ。

そして肝心なのがここ。もし対象サイトの robots.txt が、リクエスト側で宣言した contentUse よりも制限的な use レベルを設定していた場合、そのクロールリクエストは 400 エラーで拒否されるようになったの。

つまり、サイト運営者が「うちのコンテンツはこの用途までしか使わないでね」と robots.txt で表明していれば、Cloudflare の /crawl がそれをちゃんと尊重してブロックしてくれるってこと。クローラーを作る人にとっては、サイト側の意図を無視してしまうリスクを減らせるのが嬉しいポイントだと思うな。

深く潜ってみよう

実際のリクエストはこんな感じになるよ。

curl -X POST 'https://api.cloudflare.com/client/v4/accounts/{account_id}/browser-rendering/crawl' \
  -H 'Authorization: Bearer <apiToken>' \
  -H 'Content-Type: application/json' \
  -d '{ "url": "https://example.com", "contentUse": "reference", "formats": ["markdown"] }'

この例では contentUsereference を指定しているから、「参照用途までしか使いません」と宣言していることになるね。もし対象の example.com が robots.txt でそれより厳しい制限をかけていたら、このリクエスト自体が 400 エラーで返ってくるという流れだよ。

まとめ

  • Browser Rendering の /crawl エンドポイントが Content Signals 標準の use ディレクティブに対応したよ
  • 新しい contentUse パラメータで、reference(制限的)と full(デフォルト)のどちらの用途で使うかを宣言できるの
  • 宣言した contentUse より対象サイトの robots.txt が制限的な場合、リクエストは 400 エラーで拒否されるよ

Cloudflare の Browser Rendering でクロール処理を組んでいる人や、サイト運営者としてコンテンツの利用範囲をコントロールしたい人には、特に見逃せないアップデートだよ!