← AI Crawl Control / ai-crawl-control / features / pay-per-crawl / use-pay-per-crawl-as-site-owner
Расширенная настройка
Отключение Pay Per Crawl по шаблону URI
Вы можете предоставить бесплатный доступ к одним страницам и взимать плату за другие:
- Разрешить бесплатный доступ к главные страницы, страницы категорий или навигация чтобы помочь краулерам обнаружить платный контент.
- Исключите функциональные страницы, такие как эндпоинты входа, поиска или API которые не содержат платного контента.
- Начните работу с Pay Per Crawl на небольшой раздел вашего сайта перед раскрытием.
- Предоставьте бесплатный доступ к рекламные материалы или архивный контент при этом взимая плату за премиум-статьи.
Чтобы начать, используйте Configuration Rules чтобы исключить определённые шаблоны URI из платного доступа.
-
Перейдите в Правила > Обзор в Cloudflare dashboard.
Перейдите в Обзор ↗ -
Выберите Создать правило > Configuration Rule.
-
Когда входящие запросы соответствуют: Задайте шаблон URI.
- Поле:
URI Full - Оператор:
wildcard - Значение:
https://*example.com/public/*
- Поле:
-
Выберите Отключение Pay Per Crawl > Add
-
Выберите Развернуть.
Примеры шаблонов:
- Бесплатная главная страница:
URI Fullравноhttps://example.com/ - Бесплатный каталог:
URI Fullподстановочный знакhttps://*example.com/public/*
Динамическое ценообразование
Цена, указанная в настройках Pay Per Crawl, по умолчанию применяется ко всей зоне, но вы можете настроить дифференцированную политику ценообразования, выбрав Включите динамическое ценообразование и включения в HTTP-ответы вашего источника crawler-price заголовок. Например:
crawler-price: USD 3.14Если crawler-price заголовок присутствует в ответе, будет использована указанная в нём цена вместо цены по умолчанию, заданной в настройках Pay Per Crawl для зоны.
Заголовок запроса для динамического ценообразования
Pay Per Crawl adds a cf-pay-per-crawl заголовок к каждому запросу к источнику. Этот заголовок указывает действующий режим ценообразования и может использоваться источником, чтобы решить, включать ли crawler-price заголовок вместе с ответом.
cf-pay-per-crawl: protocol=cloudflare, pricing=in-bandНа данный момент единственное возможное значение для protocol индикатор означает cloudflare. Для pricing индикатор: значение может быть одним из следующих:
zone-default: Если для зоны не включено ценообразование in-band.in-band: Если для зоны включено динамическое ценообразование.bypass: Если запрос не подлежит оплате (например, это не бот).
Используйте Workers для динамического ценообразования
Если вы предпочитаете оставить свой источник без изменений, вы можете использовать Worker, чтобы добавить crawler-price заголовок в ответах. Например, в Worker можно выбирать цену на основе свойств входящего запроса (включая данные, добавленные глобальной сетью Cloudflare) или самого содержимого.
Следующий скрипт Worker реализует простой пример политики, которая выбирает цену на основе запрошенного пути URL и при этом использует преимущества Cloudflare Cache:
function getContentPriceUSD(request, response) {
const requestPath = new URL(request.url).pathname;
if (requestPath.startsWith("/premium-content/")) {
return 3.14;
}
if (requestPath.startsWith("/free-content/")) {
return 0.0;
}
return null; // Use the default price set in the zone configuration.
}
export default {
async fetch(request, env, ctx) {
// Obtain the response first (and allow it to be cached if possible).
let response = await fetch(request, { cf: { cacheEverything: true } });
// Indicates the pricing mode in effect ("bypass", "zone-default", "in-band").
const cfPayPerCrawl = request.headers.get("CF-Pay-Per-Crawl") || "";
// If in-band pricing is enabled, use the request/response to select a price.
if (cfPayPerCrawl.match(/\bpricing=in-band\b/)) {
const contentPrice = getContentPriceUSD(request, response);
if (contentPrice !== null) {
// Make the response mutable, to allow setting the price header.
response = new Response(response.body, response);
response.headers.set("Crawler-Price", `USD ${contentPrice.toFixed(2)}`);
}
}
return response;
}
};