crawl-me-not/examples/sveltekit-hooks.server.ts

32 lines
895 B
TypeScript

import { shouldBlockCrawler, extractUserAgent } from 'crawl-me-not';
import type { Handle } from '@sveltejs/kit';
export const handle: Handle = async ({ event, resolve }) => {
const userAgent = extractUserAgent(event.request.headers);
const result = shouldBlockCrawler(userAgent, {
blockAI: true,
blockSEO: false,
debug: true
});
if (result.isBlocked) {
console.log(`Blocked ${result.crawlerType} crawler: ${result.userAgent}`);
return new Response('Access denied', {
status: 403,
headers: {
'Content-Type': 'application/json',
'X-Blocked-Reason': `${result.crawlerType} crawler detected`
}
});
}
return resolve(event);
};
// If you need to compose multiple handles:
// import { sequence } from '@sveltejs/kit/hooks';
//
// export const handle = sequence(
// crawlerBlockingHandle,
// // your other handles...
// );