← AI Crawl Control / ai-crawl-control / features / pay-per-crawl / use-pay-per-crawl-as-site-owner
Pokročilá konfigurace
Vypnutí Pay Per Crawl podle vzoru URI
Možná budete chtít u některých stránek nabídnout bezplatný přístup, zatímco u jiných budete účtovat poplatek:
- Povolit bezplatný přístup k domovské stránky, stránky kategorií nebo navigace aby prohledávačům pomohl objevit placený obsah.
- Vylučte funkční stránky, například přihlašovací, vyhledávací nebo API endpointy které neobsahují zpoplatněný obsah.
- Začněte s Pay Per Crawl na malou část svého webu před rozbalením.
- Nabídněte bezplatný přístup k propagační nebo archivovaný obsah a zároveň zpoplatnit prémiové články.
Pro začátek použijte Configuration Rules a vylučte konkrétní vzory URI ze zpoplatnění.
-
Přejděte na Pravidla > Přehled na Cloudflare dashboardu.
Přejděte na Přehled ↗ -
Vyberte Vytvořit pravidlo > Configuration Rule.
-
Když příchozí požadavky odpovídají: Nastavte vzor URI.
- Pole:
URI Full - Operátor:
wildcard - Hodnota:
https://*example.com/public/*
- Pole:
-
Vyberte Vypnutí Pay Per Crawl > Přidat
-
Vyberte Nasadit.
Příklady vzorů:
- Bezplatná domovská stránka:
URI Fullse rovnáhttps://example.com/ - Bezplatný adresář:
URI Fullzástupný znakhttps://*example.com/public/*
Dynamická tvorba cen
Cena, kterou zadáte v nastavení Pay Per Crawl, se ve výchozím stavu vztahuje na celou zónu, ale diferencovanou cenovou politiku můžete zavést výběrem Povolte dynamické stanovení cen a aby HTTP odpovědi vašeho originu obsahovaly crawler-price hlavička. Například:
crawler-price: USD 3.14Když crawler-price hlavička přítomna v odpovědi, použije se cena, kterou určuje, místo výchozí ceny nastavené v nastavení Pay Per Crawl pro danou zónu.
Hlavička požadavku pro dynamické stanovení cen
Pay Per Crawl přidává cf-pay-per-crawl hlavičku ke každému požadavku na origin. Tato hlavička udává aktuálně platný cenový režim a origin ji může použít k rozhodnutí, zda zahrnout crawler-price hlavičku spolu s odpovědí.
cf-pay-per-crawl: protocol=cloudflare, pricing=in-bandV současnosti je jedinou možnou hodnotou pro protocol indikátor je cloudflare. Pro pricing indikátor, hodnota může být jedna z následujících:
zone-default: Pokud zóna nemá povolené in-band ceny.in-band: Pokud má zóna povolené dynamické ceny.bypass: Pokud požadavek nepodléhá platbě (například se nejedná o robota).
Použijte Workers pro dynamické stanovení cen
Pokud chcete zachovat svůj origin beze změny, můžete pomocí Workeru přidat crawler-price hlavičku v odpovědích. Z Workeru můžete například zvolit cenu na základě vlastností příchozího požadavku (včetně informací přidaných globální sítí Cloudflare) nebo na základě samotného obsahu.
Následující skript Worker implementuje jednoduchou ukázkovou politiku, která vybírá cenu podle požadované cesty URL a přitom stále využívá 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;
}
};