INTEGRITY Dokumentace

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:

Pro začátek použijte Configuration Rules a vylučte konkrétní vzory URI ze zpoplatnění.

  1. Přejděte na Pravidla > Přehled na Cloudflare dashboardu.

    Přejděte na Přehled ↗
  2. Vyberte Vytvořit pravidlo > Configuration Rule.

  3. Když příchozí požadavky odpovídají: Nastavte vzor URI.

    • Pole: URI Full
    • Operátor: wildcard
    • Hodnota: https://*example.com/public/*
  4. Vyberte Vypnutí Pay Per Crawl > Přidat

  5. Vyberte Nasadit.

Příklady vzorů:

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.14

Když 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-band

V 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:

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;
	}
};

Další zdroje