And so the recommended way to use this service is to keep browsers alive as much as possible with Du
And so the recommended way to use this service is to keep browsers alive as much as possible with Durable Objects?


node_compat but in the getting started example (https://developers.cloudflare.com/browser-rendering/get-started/screenshots/#4-configure-wranglertoml) its compatibility_flags = [ "nodejs_compat" ]
.pdf() doesn't work but this does:fetch method), but at least in your documentation you instruct people to invoke that in a way that is not spec compliant.Request out of the parameters you specify (/v1/acquire) it (obviously) fails because /v1/acquire is not a valid URL.fetch function with a generic wrapper and then decide which instrumentation implementation to use based on the parameters passed into the fetch function, but that would be pretty brittle, because I would have to hardcode exactly what you would pass into the first request.@cloudflare/puppeteer?3e38dc7049f501248503b981bf442450@cloudflare/puppeteer package, I realised that while adding the spans is going to be very straightforward, it would be quite a bunch of work figuring out what to instrument. So if someone else wants to do that, I would be more than happy to help that. But I am going to focus on the core library in the copious spare time that I have workers.api.error.no_access_to_browser_worker, do we need to enable it?dev or deploy. Role is worker admin. Can dm the acc id459755459117711362. It can be used in a attack, but it is by no means what determines whether you are vulnerable or not
const browser = await puppeteer.launch(env.BROWSER);
const page = await browser.newPage();
const [res] = await Promise.all([
page.waitForResponse(res => res.url().includes('something') && res.request().method().toUpperCase() !== "OPTIONS", {timeout: 10 * 1000}),
page.goto('https://someurl.com', {waitUntil: "domcontentloaded"}),
]); const qoutePdf = await page.createPDFStream({
printBackground: true,
format: 'a4',
});
// Create web compatible readable stream
const { readable, writable } = new TransformStream();
const writer = writable.getWriter();
qoutePdf.on('data', (chunk) => {
writer.write(chunk);
});
qoutePdf.on('end', () => {
writer.close();
});
return new Response(readable, {
status: 200,
headers: {
'Content-Type': 'application/pdf',
},
});