コンテンツにスキップ

遅延アクション

Bot ManagementおよびWorkersのサブスクリプションを持つ顧客は、ボットからのリクエストに遅延を導入するために以下のテンプレートを使用できます。

このテンプレートは、最小遅延と最大遅延を設定し、ボットスコアが30未満でURIパスが/exampleURIで始まるリクエストに遅延を適用します。

Workers テンプレート
// 設定可能な変数
const PATH_START = '/exampleURI';
const DELAY_FROM = 5; // 秒単位
const DELAY_TO = 10; // 秒単位
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
let url = new URL(request.url);
let botScore = request.cf.botManagement.score
if (url.pathname.startsWith(PATH_START) && botScore < 30) {
// DELAY_FROM秒からDELAY_TO秒の間のランダムな遅延
const delay = Math.floor(Math.random() * (DELAY_TO - DELAY_FROM + 1)) + DELAY_FROM;
await new Promise(resolve => setTimeout(resolve, delay * 1000));
// 元のリクエストを取得
return fetch(request);
}
else {
// 遅延なしで元のリクエストを取得
return fetch(request);
}
}