INTEGRITY Dokumentace

Začínáme

Cloudflare Browser Run (dříve Browser Rendering) umožňuje programově ovládat headless prohlížeč, takže můžete například pořizovat snímky obrazovky, generovat soubory PDF a provádět automatizované úlohy v prohlížeči. Tento průvodce vám pomůže vybrat správnou metodu integrace a začít s prvním projektem.

Browser Run nabízí dvě kategorie metod integrace:

Případ použití Doporučeno Proč
Jednoduchý snímek obrazovky, PDF nebo extrakce dat Rychlé akce Bez nasazení kódu; jediný požadavek HTTP
Automatizace prohlížeče Playwright, Puppeteer, nebo CDP Plná kontrola nad prohlížečem pomocí skriptování
Portování stávajících skriptů Puppeteer, Playwright, nebo CDP Minimální změny kódu oproti standardním knihovnám
Extrakce dat poháněná AI JSON endpoint Strukturovaná data pomocí promptů v přirozeném jazyce
Procházení celého webu Endpoint pro procházení Extrakce obsahu z více stránek s asynchronními výsledky
Prohlížení pomocí AI agenta Playwright MCP nebo CDP s klienty MCP LLM ovládají prohlížeče přes MCP
Odolné scrapování Stagehand AI nachází prvky podle záměru, ne podle selektorů
Přímé ovládání prohlížeče z libovolného prostředí CDP Přístup přes WebSocket z lokálních počítačů, CI/CD nebo externích serverů

Rychlé akce

Quick Actions lze používat přes REST API nebo přímo z Cloudflare Workeru pomocí browser bindingu.

Předpoklady

Příklad: pořízení snímku obrazovky

curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<accountId>/browser-rendering/screenshot' \
  -H 'Authorization: Bearer <apiToken>' \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://example.com"
  }' \
  --output "screenshot.png"

Předpoklady

Příklad: pořízení snímku obrazovky z workeru

1. Vytvořte projekt Worker

Vytvořte nový projekt Worker s názvem browser-quick-action spuštěním:

npm create cloudflare@latest -- browser-quick-action

Při nastavení vyberte následující možnosti:

  • Pro S čím byste chtěli začít?, vyberte Hello World example.
  • Pro Jakou šablonu chcete použít?, vyberte Worker only.
  • Pro Jaký jazyk chcete použít?, vyberte TypeScript.
  • Pro Chcete používat git pro správu verzí?, vyberte Yes.
  • Pro Chcete nasadit svou aplikaci?, vyberte No (před nasazením provedeme ještě několik změn).

2. Konfigurace vazby prohlížeče

Aktualizujte Konfigurační soubor Wrangler s prohlížečem binding:

{
  "$schema": "./node_modules/wrangler/config-schema.json",
  "name": "browser-quick-action",
  "main": "src/index.ts",
  // Set this to today's date
  "compatibility_date": "2026-08-28",
  "browser": {
    "binding": "BROWSER"
  }
}
name = "browser-quick-action"
main = "src/index.ts"
# Set this to today's date
compatibility_date = "2026-08-28"

[browser]
binding = "BROWSER"

3. Napište kód Workeru

Nahraďte obsah src/index.ts následujícím:

export default {
	async fetch(request, env) {
		return await env.BROWSER.quickAction("screenshot", {
			url: "https://example.com",
		});
	},
};
interface Env {
	BROWSER: BrowserRun;
}

export default {
	async fetch(request, env): Promise<Response> {
		return await env.BROWSER.quickAction("screenshot", {
			url: "https://example.com",
		});
	},
} satisfies ExportedHandler<Env>;

Tento Worker používá browser binding k pořízení snímku obrazovky example.com a vrací obrázek přímo v odpovědi.

4. Test

Spustit npx wrangler dev --remote k lokálnímu testování vašeho Workeru.

Navštivte svou lokální adresu URL a zobrazte si snímek obrazovky.

5. Nasaďte

Spustit npx wrangler deploy k nasazení Workeru do globální sítě Cloudflare.

Mezi další endpointy Quick Actions patří:

Podívejte se na úplný seznam Endpointy Quick Actions.

Browser Sessions

Předpoklady

  1. Zaregistrujte si účet Cloudflare ↗.
  2. Nainstalujte Node.js ↗.

Správce verzí Node.js

Použijte správce verzí Node, jako je Volta ↗ nebo nvm ↗ abyste se vyhnuli problémům s oprávněními a mohli měnit verze Node.js. Wrangler, o kterém se dozvíte dále v této příručce, vyžaduje verzi Node 16.17.0 nebo novější.

Příklad: přechod na adresu URL, pořízení snímku obrazovky a uložení do KV

1. Vytvořte projekt Worker

Cloudflare Workers poskytuje bezserverové prostředí pro spouštění kódu, ve kterém můžete vytvářet nové aplikace nebo rozšiřovat stávající, aniž byste museli konfigurovat nebo spravovat infrastrukturu. Vaše aplikace Worker slouží jako kontejner pro interakci s headless prohlížečem a provádění akcí, jako je pořizování snímků obrazovky.

Vytvořte nový projekt Worker s názvem browser-worker spuštěním:

npm create cloudflare@latest -- browser-worker

Při nastavení vyberte následující možnosti:

2. Instalace Puppeteer

Ve vašem browser-worker adresáři nainstalujte balíček Cloudflare fork Puppeteeru:

npm i -D @cloudflare/puppeteer

3. Vytvoření jmenného prostoru KV

Browser Run lze používat spolu s dalšími vývojářskými produkty. Může být potřeba relační databáze, R2 bucket k archivaci procházených stránek a souborů, Durable Object k udržení instance prohlížeče aktivní a jejímu sdílení mezi více požadavky, nebo Queues ke zpracování vašich úloh asynchronně.

Pro účely tohoto příkladu použijeme Úložiště KV k ukládání snímků obrazovky do mezipaměti.

Vytvořte dva namespaces, jeden pro produkci a jeden pro vývoj.

npx wrangler kv namespace create BROWSER_KV_DEMO
npx wrangler kv namespace create BROWSER_KV_DEMO --preview

Poznamenejte si ID pro další krok.

4. Konfigurace souboru Wrangler

Nakonfigurujte browser-worker projektu Konfigurační soubor Wrangler přidáním příznaku prohlížeče binding a Příznak kompatibility s Node.js. Bindings umožňují vašim Workerům interagovat se zdroji na vývojářské platformě Cloudflare. Váš prohlížeč binding nastavujete vy, tento návod používá název MYBROWSER. Browser bindings umožňují komunikaci mezi Workerem a headless prohlížečem, díky čemuž můžete provádět akce, jako je pořízení snímku obrazovky, generování PDF a další.

Aktualizujte Konfigurační soubor Wrangler s vazbou Browser Run API a jmennými prostory KV, které jste vytvořili:

{
	"$schema": "./node_modules/wrangler/config-schema.json",
	"name": "browser-worker",
	"main": "src/index.js",
	// Set this to today's date
	"compatibility_date": "2026-08-28",
	"compatibility_flags": ["nodejs_compat"],
	"browser": {
		"binding": "MYBROWSER"
	},
	"kv_namespaces": [
		{
			"binding": "BROWSER_KV_DEMO",
			"id": "22cf855786094a88a6906f8edac425cd",
			"preview_id": "e1f8b68b68d24381b57071445f96e623"
		}
	]
}
"$schema" = "./node_modules/wrangler/config-schema.json"
name = "browser-worker"
main = "src/index.js"
# Set this to today's date
compatibility_date = "2026-08-28"
compatibility_flags = [ "nodejs_compat" ]

[browser]
binding = "MYBROWSER"

[[kv_namespaces]]
binding = "BROWSER_KV_DEMO"
id = "22cf855786094a88a6906f8edac425cd"
preview_id = "e1f8b68b68d24381b57071445f96e623"

5. Kód

Aktualizujte src/index.js s kódem vašeho Workeru:

import puppeteer from "@cloudflare/puppeteer";

export default {
	async fetch(request, env) {
		const { searchParams } = new URL(request.url);
		let url = searchParams.get("url");
		let img;
		if (url) {
			url = new URL(url).toString(); // normalize
			img = await env.BROWSER_KV_DEMO.get(url, { type: "arrayBuffer" });
			if (img === null) {
				const browser = await puppeteer.launch(env.MYBROWSER);
				const page = await browser.newPage();
				await page.goto(url);
				img = await page.screenshot();
				await env.BROWSER_KV_DEMO.put(url, img, {
					expirationTtl: 60 * 60 * 24,
				});
				await browser.close();
			}
			return new Response(img, {
				headers: {
					"content-type": "image/jpeg",
				},
			});
		} else {
			return new Response("Please add an ?url=https://example.com/ parameter");
		}
	},
};

Aktualizujte src/index.ts s kódem vašeho Workeru:

import puppeteer from "@cloudflare/puppeteer";

interface Env {
	MYBROWSER: Fetcher;
	BROWSER_KV_DEMO: KVNamespace;
}

export default {
	async fetch(request, env): Promise<Response> {
		const { searchParams } = new URL(request.url);
		let url = searchParams.get("url");
		let img: Buffer;
		if (url) {
			url = new URL(url).toString(); // normalize
			img = await env.BROWSER_KV_DEMO.get(url, { type: "arrayBuffer" });
			if (img === null) {
				const browser = await puppeteer.launch(env.MYBROWSER);
				const page = await browser.newPage();
				await page.goto(url);
				img = (await page.screenshot()) as Buffer;
				await env.BROWSER_KV_DEMO.put(url, img, {
					expirationTtl: 60 * 60 * 24,
				});
				await browser.close();
			}
			return new Response(img, {
				headers: {
					"content-type": "image/jpeg",
				},
			});
		} else {
			return new Response("Please add an ?url=https://example.com/ parameter");
		}
	},
} satisfies ExportedHandler<Env>;

Tento Worker vytvoří instanci prohlížeče pomocí Puppeteer, otevře novou stránku, přejde na adresu uvedenou v parametru 'url', pořídí snímek obrazovky stránky, uloží tento snímek do KV, prohlížeč zavře a jako odpověď vrátí obrázek JPEG se snímkem obrazovky.

Pokud váš Worker běží v produkčním prostředí, uloží snímek obrazovky do produkčního KV namespace. Pokud spouštíte wrangler dev, uloží snímek obrazovky do vývojářského KV namespace.

Pokud stejný url je vyžádáno znovu, použije se místo toho verze uložená v mezipaměti KV, pokud jí nevypršela platnost.

6. Test

Spustit npx wrangler dev k lokálnímu testování vašeho Workeru.

Chcete-li vyzkoušet vytvoření prvního snímku obrazovky, přejděte na následující URL:

<LOCAL_HOST_URL>/?url=https://example.com

7. Nasaďte

Spustit npx wrangler deploy k nasazení Workeru do globální sítě Cloudflare.

Chcete-li vytvořit první snímek obrazovky, přejděte na následující URL:

<YOUR_WORKER>.<YOUR_SUBDOMAIN>.workers.dev/?url=https://example.com

Další kroky

Pokud máte požadavky na nové funkce nebo jste narazili na chyby, sdílejte zpětnou vazbu přímo s týmem Cloudflare, a to prostřednictvím Komunita vývojářů Cloudflare na Discordu ↗.