INTEGRITY Dokumentace

Časté dotazy

Níže najdete odpovědi na nejčastější dotazy týkající se Browser Run (dříve Browser Rendering).

Pokud máte dotazy ohledně cen, navštivte FAQ o cenách. S dotazy ohledně limitů používání navštivte FAQ k limitům. Pokud zde nenajdete odpověď, kterou hledáte, připojte se k nám na Discord ↗.


Chyby a řešení problémů

Chyba: Cannot read properties of undefined (reading 'fetch')

Tato chyba obvykle nastává, protože vaše spuštění Puppeteer nezískává browser binding. Chybu vyřešíte tak, že svůj browser binding předáte do puppeteer.launch.

Chyba: 429, vyčerpán časový limit prohlížeče

Tato chyba (Unable to create new browser: code: 429: message: Browser time limit exceeded for today) znamená, že jste dosáhli denního limitu instancí prohlížeče v plánu Workers Free. Účty s plánem Workers Free mají využití prohlížeče omezeno na 10 minut denně. Jakmile tento limit překročíte, další pokusy o vytvoření budou až do dalšího dne podle UTC vracet chybu 429.

Chcete-li tuto chybu vyřešit, přejděte na plán Workers Paid který umožňuje více než 10 minut používání denně a má vyšší limity. Pokud jste nedávno upgradovali a tato chyba se přesto stále zobrazuje, zkuste svého Workera znovu nasadit, aby se vaše využití správně přiřadilo k novému plánu.

Chyba: 422 unprocessable entity

A 422 Unprocessable Entity chyba obvykle znamená, že Browser Run nedokázal dokončit akci kvůli problému na straně webu.

K tomu může dojít, pokud:

Tuto chybu nejčastěji způsobuje vypršení časového limitu. Přehled jednotlivých časovačů a jejich limitů najdete v Přehled časových limitů Quick Actions.

Proč obsah mé stránky chybí nebo je neúplný?

Pokud ve vašich snímcích obrazovky, souborech PDF nebo získaném obsahu chybí prvky, které se zobrazují při prohlížení stránky v prohlížeči, stránka se pravděpodobně nestihla načíst dříve, než Browser Run zachytil výstup.

Stránky s velkým množstvím JavaScriptu a jednostránkové aplikace (SPA) často načítají obsah dynamicky až po zpracování počátečního HTML. Browser Run ve výchozím nastavení čeká na domcontentloaded, která se spustí dříve, než JavaScript dokončí vykreslení stránky.

Chcete-li to opravit, použijte goToOptions.waitUntil parametr s jednou z těchto hodnot:

Hodnota Kdy použít
networkidle0 Stránka musí být zcela neaktivní (žádné síťové požadavky po dobu 500 ms). Nejlépe se hodí pro stránky, které načtou veškerý obsah najednou.
networkidle2 Stránka může mít až 2 aktivní připojení (například pro analytiku nebo websockety). Nejlépe se hodí pro většinu dynamických stránek.

Příklad Quick Actions:

{
	"url": "https://example.com",
	"goToOptions": {
		"waitUntil": "networkidle2"
	}
}

Pokud obsah stále chybí:

Úplný přehled najdete v Časové limity Quick Actions.


Začínáme a vývoj

Proč spouštět prohlížeče v cloudu místo lokálně?

Spouštění prohlížeče lokálně funguje pro vývoj a úlohy malého rozsahu, ale pro produkční zátěž má praktické limity.

S Browser Run běží relace prohlížeče na infrastruktuře Cloudflare, takže vaše automatizace funguje bez lokálního počítače. Nemusíte udržovat instalaci Chrome ani spuštěný virtuální stroj, relace se spouští na vyžádání a po dokončení se ukončí.

Můžete také použít Cloudflare Queues ke zpracování dávek URL adres asynchronně, což umožňuje procházet ve velkém měřítku bez nutnosti spravovat vlastní infrastrukturu fronty.

Relace prohlížeče se otevírají na globální síti Cloudflare v blízkosti příchozího požadavku. Browser Run je Workers binding, takže se přímo integruje s Durable Objects, Queues a zbytkem vývojářské platformy Cloudflare.

Podporuje lokální vývoj všechny funkce Browser Run?

Zatím ne. Lokální vývoj má v současné době následující omezení:

Během lokálního vývoje můžete Chrome spustit také ve viditelném (headful) režimu a vizuálně tak ladit automatizační skripty (experimentální funkce). Nastavte X_BROWSER_HEADFUL proměnnou prostředí před spuštěním vývojového serveru:

X_BROWSER_HEADFUL=true npx wrangler dev

Jak mohu vykreslit ověřené stránky pomocí Quick Actions?

Pokud stránka, kterou vykreslujete, vyžaduje ověření, můžete přihlašovací údaje předat jednou z následujících metod. Tyto parametry fungují se všemi Rychlé akce koncové body.

HTTP Basic Auth:

{
	"authenticate": {
		"username": "user",
		"password": "pass"
	}
}

Ověřování pomocí souborů cookie:

{
	"cookies": [
		{
			"name": "session_id",
			"value": "abc123",
			"domain": "example.com",
			"path": "/",
			"secure": true,
			"httpOnly": true
		}
	]
}

Autentizace pomocí tokenu:

{
	"setExtraHTTPHeaders": {
		"Authorization": "Bearer your-token"
	}
}

Kompletní funkční příklady všech tří metod najdete v Pořiďte snímek obrazovky ověřené stránky.

Bude Browser Run detekován pomocí Bot Management?

Ano, Cloudflare vždy identifikuje požadavky Browser Run jako provoz od botů. Ochranu proti botům Cloudflare ve výchozím nastavení nevynucuje, je to volba zákazníka.

Pokud se pokoušíte skenovat vlastní zónu a chcete, aby Browser Run mohl k vašemu webu přistupovat volně, aniž by tomu bránila konfigurace ochrany proti botům, můžete vytvořit pravidlo WAF skip rule pro přidat Browser Run na allowlist.

Mohu Browser Run zařadit na seznam povolených na svém webu?

Abyste mohli Browser Run zařadit na seznam povolených na vlastním webu, musíte mít plán Enterprise, protože vlastní pravidla WAF vyžadují přístup k Bot Management pole.

Browser Run používá různé ID pro detekci botů v závislosti na metodě. Použijte ID, které odpovídá metodě, kterou chcete zařadit na seznam povolených.

  1. V dashboardu Cloudflare přejděte na Bezpečnostní pravidla vašeho účtu a domény.

    Přejděte na Bezpečnostní pravidla ↗
  2. Chcete-li vytvořit nové prázdné pravidlo, vyberte Vytvořit pravidlo > Custom rules.

  3. Zadejte popisný název pravidla do Název pravidla, jako je Allow Browser Run.

  4. V části Když příchozí požadavky odpovídají, použijte Pole rozbalovací nabídku pro výběr ID detekce botů. Pro Operátor, vyberte equals. Pro Hodnota, zadejte ID detekce botů pro metodu, kterou chcete povolit.

  5. V části Poté proveďte akci, v Vyberte akci rozbalovací nabídce vyberte Přeskočit.

  6. V části Umístit na, vyberte pořadí pravidla v Vybrat pořadí je rozbalovací nabídka, kterou nastavte na První. Nastavení pořadí na První umožňuje uplatnit toto pravidlo dříve než následující pravidla.

  7. Chcete-li pravidlo uložit a nasadit, vyberte Nasadit.

Střídá Browser Run IP adresy u odchozích požadavků?

Ne. Požadavky Browser Run pocházejí z globální sítě Cloudflare a rotaci IP adres pro jednotlivé požadavky nelze nastavit. Veškerý provoz vykreslování pochází z rozsahů IP adres Cloudflare a požadavky obsahují automatické hlavičky, jako je cf-biso-request-id a cf-biso-devtools aby je origin servery mohly identifikovat.

Existuje limit počtu požadavků, které zvládne jedna relace prohlížeče?

Neexistuje pevný limit počtu požadavků na relaci prohlížeče. Jeden prohlížeč zvládne zpracovat více požadavků, pokud zůstává v mezích dostupného výpočetního výkonu a paměti.

Mohu v Browser Run používat vlastní písma?

Ano. Pokud vaše webová stránka nebo PDF vyžaduje písmo, které není předinstalované, můžete vlastní písma načíst v době vykreslování pomocí addStyleTag. To funguje s Rychlé akce, Puppeteer, a Playwright. Pokyny a příklady najdete v Vlastní písma.

Jak mohu řídit souběžnost a izolaci relací v Browser Run?

Pokud narážíte na limity souběžnosti limity, nebo chcete optimalizovat souběžné používání prohlížeče, zde je několik tipů:

Pokud stále narážíte na limity souběžnosti, můžete požádejte o vyšší limit ↗.


Správa relací

Mám pro každý úkol otvírat nový prohlížeč, nebo mám relaci znovu použít a otevřít karty

U většiny úloh je vhodnější znovu použít existující relaci prohlížeče a otevřít novou kartu, než pro každou úlohu spouštět nový prohlížeč. Browser Run počítá instance prohlížeče do vašeho souběžné prohlížeče a frekvence nových instancí prohlížeče omezení, ale karty v rámci existující relace se do žádného z těchto limitů nezapočítávají. Opakované použití relace navíc eliminuje náklady na studený start spojené se spuštěním nového prohlížeče.

Jeden prohlížeč může spustit mnoho karet, ale všechny karty sdílejí stejný proces prohlížeče a stejnou paměť. Náročné stránky (například stránky s velkými JavaScript balíčky, médii nebo složitým DOM) spotřebují na kartu více paměti, takže otevření příliš mnoha karet ve stejném prohlížeči může způsobit jeho pád. Otestujte svou zátěž a zjistěte bezpečný počet karet na prohlížeč. U lehkých stránek může vyhovovat i několik desítek karet, u náročných stránek jen pár.

Pokud relaci znovu používáte, ale přesto potřebujete izolaci mezi úlohami, použijte kontext prohlížeče v anonymním režimu (incognito). Anonymní kontexty izolují soubory cookie, local storage a mezipaměť od sebe navzájem i od výchozího kontextu, takže můžete spouštět samostatné úlohy na kartách v rámci stejného prohlížeče, aniž by mezi nimi docházelo k úniku dat.

import puppeteer from "@cloudflare/puppeteer";

const browser = await puppeteer.connect(env.MYBROWSER, sessionId);
// or await puppeteer.launch(env.MYBROWSER);

const context = await browser.createBrowserContext();
const page = await context.newPage();
import { connect } from "@cloudflare/playwright";

const browser = await connect(env.BROWSER, sessionId);
// or use the browser returned by acquire()

const context = await browser.newContext();
const page = await context.newPage();

Nový prohlížeč otevírejte jen tehdy, když potřebujete úplnou izolaci na úrovni procesu, jinou konfiguraci prohlížeče nebo když se prohlížeč stal nestabilním. U automatizovaných úloh pro snímky obrazovky, scraping a procházení je obvykle lepší volbou opakované použití relací a karet. Rychlé akce spravují relace a karty automaticky, takže se o jejich opakované použití nemusíte starat sami.


Zabezpečení a nakládání s daty

Ukládá nebo uchovává Cloudflare HTML obsah, který odesílám k vykreslení?

Pro Rychlé akce (kromě /crawl koncový bod), Puppeteer, Playwright, a CDP, Cloudflare zpracovává obsah pouze dočasně a neuchovává HTML zadané zákazníkem ani vygenerovaný výstup (například PDF nebo snímky obrazovky) déle, než je nutné pro provedení vykreslovací operace. Jakmile je odpověď vrácena, obsah se z vykreslovacího prostředí okamžitě odstraní.

Existují dvě výjimky, kdy jsou data uchovávána i po skončení relace:

Ukládá se odeslaný obsah dočasně do mezipaměti?

Pro Rychlé akce (kromě /crawl koncový bod), vygenerovaný obsah se ve výchozím nastavení ukládá do mezipaměti na pět sekund (lze nastavit až na jeden den pomocí cacheTTL parametr, nebo nastavte na 0 pro vypnutí ukládání do mezipaměti). Tato mezipaměť chrání před opakovanými požadavky na stejnou URL adresu ze strany stejného účtu. Samotný HTML obsah odeslaný zákazníkem se do mezipaměti neukládá.

Pro Puppeteer, Playwright, a CDP, nepoužívá se žádné ukládání do mezipaměti. Obsah existuje pouze v paměti po dobu operace vykreslování a po vrácení odpovědi je okamžitě zahozen.

Pro /crawl koncový bod, všechny výsledky úlohy procházení se po dokončení uchovávají v R2 po dobu 14 dní.