Skip to content

Commit d3453df

Browse files
authored
Merge branch 'production' into faq-audit-blurry-screenshots
2 parents 4b40832 + 2d8ea5b commit d3453df

File tree

21 files changed

+190
-42
lines changed

21 files changed

+190
-42
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
---
2+
title: Report logo misuse to Cloudflare directly from the Brand Protection dashboard
3+
description: You can now use the Brand Protection logo dashboard to report abuse on the Cloudflare network
4+
date: 2025-10-31
5+
---
6+
7+
The Brand Protection logo query dashboard now allows you to use the **Report to Cloudflare** button to submit an Abuse report directly from the Brand Protection logo queries dashboard. While you could previously report new domains that were impersonating your brand before, now you can do the same for websites found to be using your logo wihtout your permission. The abuse reports wiull be prefilled and you will only need to validate a few fields before you can click the submit button, after which our team process your request.
8+
9+
Ready to start? Check out the [Brand Protection docs](/security-center/brand-protection/).
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
---
2+
title: Workers WebSocket message size limit increased from 1 MiB to 32 MiB
3+
description: The maximum WebSocket message size limit for all Workers has been increased from 1 MiB to 32 MiB.
4+
products:
5+
- workers
6+
- durable-objects
7+
- browser-rendering
8+
date: 2025-10-31
9+
---
10+
11+
Workers, including those using [Durable Objects](/durable-objects/) and [Browser Rendering](/browser-rendering/workers-bindings/), may now process WebSocket messages up to 32 MiB in size. Previously, this limit was 1 MiB.
12+
13+
This change allows Workers to handle use cases requiring large message sizes, such as processing Chrome Devtools Protocol messages.
14+
15+
For more information, please see the [Durable Objects startup limits](/durable-objects/platform/limits/#SQLite-backed-Durable-Objects-general-limits).
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
title: Deepgram
3+
pcx_content_type: get-started
4+
---
5+
6+
[Deepgram](https://developers.deepgram.com/home) provides Voice AI APIs for speech-to-text, text-to-speech, and voice agents.
7+
8+
:::note
9+
10+
Deepgram is also available through Workers AI, see [Deepgram Workers AI](/ai-gateway/usage/websockets-api/realtime-api/#deepgram-workers-ai).
11+
12+
:::
13+
14+
## Endpoint
15+
16+
```txt
17+
https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/deepgram
18+
```
19+
20+
## URL Structure
21+
22+
When making requests to Deepgram, replace `https://api.deepgram.com/` in the URL you are currently using with `https://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/deepgram/`.
23+
24+
## Prerequisites
25+
26+
When making requests to Deepgram, ensure you have the following:
27+
28+
- Your AI Gateway Account ID.
29+
- Your AI Gateway gateway name.
30+
- An active Deepgram API token.
31+
32+
## Example
33+
34+
### SDK
35+
36+
```ts title="TS"
37+
import { createClient, LiveTranscriptionEvents } from "@deepgram/sdk";
38+
39+
40+
const deepgram = createClient("{deepgram_api_key}", {
41+
global: {
42+
websocket: {
43+
options: {
44+
url: "wss://gateway.ai.cloudflare.com/v1/{account_id}/{gateway_id}/deepgram/",
45+
_nodeOnlyHeaders: {
46+
"cf-aig-authorization": "Bearer {CF_AIG_TOKEN}"
47+
}
48+
}
49+
}
50+
}
51+
});
52+
53+
54+
const connection = deepgram.listen.live({
55+
model: "nova-3",
56+
language: "en-US",
57+
smart_format: true,
58+
});
59+
60+
connection.send(...);
61+
```

src/content/docs/browser-rendering/index.mdx

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,13 +19,33 @@ import {
1919

2020
<Description>
2121

22-
Browser automation for [Cloudflare Workers](/workers/) and [quick browser actions](/browser-rendering/rest-api/).
22+
Run headless Chrome on [Cloudflare's global network](/workers/) for browser automation, web scraping, testing, and content generation.
2323

2424
</Description>
2525

2626
<Plan type="workers-all" />
2727

28-
Browser Rendering enables developers to programmatically control and interact with headless browser instances running on Cloudflare’s global network. This facilitates tasks such as automating browser interactions, capturing screenshots, generating PDFs, and extracting data from web pages.
28+
Browser Rendering enables developers to programmatically control and interact with headless browser instances running on Cloudflare’s global network.
29+
30+
## Use Cases
31+
32+
Browser Rendering supports a wide range of use cases, including:
33+
- Extract rendered HTML or convert webpages to Markdown using the [content endpoint](/browser-rendering/rest-api/content-endpoint/) and [markdown endpoint](/browser-rendering/rest-api/markdown-endpoint/)
34+
- Create website thumbnails and social previews using the [screenshot endpoint](/browser-rendering/rest-api/screenshot-endpoint/)
35+
- Generate PDFs from webpages and HTML content using the [pdf endpoint](/browser-rendering/rest-api/pdf-endpoint/)
36+
- Archive complete webpage states with the [snapshot endpoint](/browser-rendering/rest-api/snapshot/) that captures both HTML and screenshots
37+
- Build web scrapers that target specific elements or extract all links using the [scrape endpoint](/browser-rendering/rest-api/scrape-endpoint/) and [links endpoint](/browser-rendering/rest-api/links-endpoint/)
38+
- Parse and structure webpage data into JSON format using the [json endpoint](/browser-rendering/rest-api/json-endpoint/)
39+
40+
Browser Rendering is also ideal for agentic workflows. Use [Puppeteer](/browser-rendering/platform/puppeteer/), [Playwright](/browser-rendering/platform/playwright/), [Playwright MCP](/browser-rendering/platform/playwright-mcp/), or [Stagehand](/browser-rendering/platform/stagehand/) to power AI agents that interact with web pages and extract data where APIs do not exist.
41+
42+
## Key features
43+
44+
- **Scale to thousands of browsers**: Instant access to a global pool of browsers with low cold-start time, ideal for high-volume screenshot generation, data extraction, or automation at scale
45+
- **Global by default**: Browser sessions run on Cloudflare's edge network, opening close to your users for better speed and availability worldwide
46+
- **Easy to integrate**: [REST APIs](/browser-rendering/rest-api/) for common actions, while [Puppeteer](/browser-rendering/platform/puppeteer/) and [Playwright](/browser-rendering/platform/playwright/) provide familiar automation libraries for complex workflows
47+
- **Session management**: [Reuse browser sessions](/browser-rendering/workers-bindings/reuse-sessions/) across requests to improve performance and reduce cold-start overhead
48+
- **Flexible pricing**: Pay only for browser time used with generous free tier ([view pricing](/browser-rendering/platform/pricing/))
2949

3050
## Integration Methods
3151

@@ -36,19 +56,6 @@ You can integrate Browser Rendering into your applications using one of the foll
3656

3757
Choose the method that best fits your use case. For example, use the [REST API endpoints](/browser-rendering/rest-api/) for straightforward tasks from external applications and use [Workers Bindings](/browser-rendering/workers-bindings/) for complex automation within the Cloudflare ecosystem.
3858

39-
## Use Cases
40-
41-
Browser Rendering can be utilized for various purposes, including:
42-
43-
- Fetch HTML content of a page.
44-
- Capture screenshot of a webpage.
45-
- Convert a webpage into a PDF document.
46-
- Take a webpage snapshot.
47-
- Scrape specified HTML elements from a webpage.
48-
- Retrieve data in a structured format.
49-
- Extract Markdown content from a webpage.
50-
- Gather all hyperlinks found on a webpage.
51-
5259
## Related products
5360

5461
<RelatedProduct header="Workers" href="/workers/" product="workers">
@@ -59,13 +66,13 @@ Build serverless applications and deploy instantly across the globe for exceptio
5966

6067
<RelatedProduct header="Durable Objects" href="/durable-objects/" product="durable-objects">
6168

62-
A globally distributed coordination API with strongly consistent storage.
69+
A globally distributed coordination API with strongly consistent storage. Using Durable Objects to [persist browser sessions](/browser-rendering/workers-bindings/browser-rendering-with-do/) improves performance by eliminating the time that it takes to spin up a new browser session.
6370

6471
</RelatedProduct>
6572

6673
<RelatedProduct header="Agents" href="/agents/" product="agents">
6774

68-
Build and deploy AI-powered agents that can autonomously perform tasks.
75+
Build AI-powered agents that autonomously navigate websites and perform tasks using [Playwright MCP](/browser-rendering/platform/playwright-mcp/) or [Stagehand](/browser-rendering/platform/stagehand/).
6976

7077
</RelatedProduct>
7178

@@ -78,8 +85,7 @@ Build and deploy AI-powered agents that can autonomously perform tasks.
7885
href="/browser-rendering/get-started/"
7986
icon="open-book"
8087
>
81-
Deploy your first Browser Rendering project using Wrangler and Cloudflare's
82-
version of Puppeteer.
88+
Choose between REST API and Workers Bindings, then deploy your first project.
8389
</LinkTitleCard>
8490

8591
<LinkTitleCard
@@ -99,11 +105,11 @@ Build and deploy AI-powered agents that can autonomously perform tasks.
99105
</LinkTitleCard>
100106

101107
<LinkTitleCard
102-
title="Learning Path"
103-
href="/learning-paths/workers/concepts/"
108+
title="Playwright API"
109+
href="/browser-rendering/platform/playwright/"
104110
icon="pen"
105111
>
106-
New to Workers? Get started with the Workers Learning Path.
112+
Use Cloudflare's fork of Playwright for testing and automation.
107113
</LinkTitleCard>
108114

109115
<LinkTitleCard

src/content/docs/browser-rendering/platform/puppeteer.mdx

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,32 @@ await page.setUserAgent(
6868
```
6969

7070
:::note
71-
The `userAgent` parameter does not bypass bot protection. Requests from Browser Rendering will always be identified as a bot.
71+
The `userAgent` parameter does not bypass bot protection. Requests from Browser Rendering will always be identified as a bot.
72+
:::
73+
74+
## Element selection
75+
76+
Puppeteer provides multiple methods for selecting elements on a page. While CSS selectors work as expected, XPath selectors are not supported due to security constraints in the Workers runtime.
77+
78+
Instead of using Xpath selectors, you can use CSS selectors or `page.evaluate()` to run XPath queries in the browser context:
79+
80+
```ts
81+
const innerHtml = await page.evaluate(() => {
82+
return (
83+
// @ts-ignore this runs on browser context
84+
new XPathEvaluator()
85+
.createExpression("/html/body/div/h1")
86+
// @ts-ignore this runs on browser context
87+
.evaluate(document, XPathResult.FIRST_ORDERED_NODE_TYPE).singleNodeValue
88+
.innerHTML
89+
);
90+
});
91+
```
92+
93+
:::note
94+
95+
`page.evaluate()` can only return primitive types like strings, numbers, and booleans. Returning complex objects like `HTMLElement` will not work.
96+
7297
:::
7398

7499
## Session management

src/content/docs/cloudflare-one/faq/cloudflare-tunnels-faq.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,6 @@ Before contacting the Cloudflare support team:
8181

8282
3. Gather any relevant error/access logs from your server.
8383

84-
4. (Locally-managed tunnels only) Set [`--loglevel`](/cloudflare-one/networks/connectors/cloudflare-tunnel/configure-tunnels/cloudflared-parameters/run-parameters/#loglevel) to `debug`, so the Cloudflare support team can get more info from the `cloudflared.log` file.
84+
4. If needed set [`--loglevel`](/cloudflare-one/networks/connectors/cloudflare-tunnel/configure-tunnels/cloudflared-parameters/run-parameters/#loglevel) to `debug`, so the Cloudflare support team can get more info from the `cloudflared.log` file.
8585

8686
5. Include your [Cloudflare Tunnel diagnostic logs](/cloudflare-one/networks/connectors/cloudflare-tunnel/troubleshoot-tunnels/diag-logs/) (`cloudflared-diag-YYYY-MM-DDThh-mm-ss.zip`).

src/content/docs/cloudflare-one/networks/connectors/cloudflare-tunnel/do-more-with-tunnels/local-management/create-local-tunnel.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ Use the rpm package manager to install `cloudflared` on compatible machines.
5555
1. Add Cloudflare's repository:
5656

5757
```sh
58-
curl -fsSL https://pkg.cloudflare.com/cloudflared-ascii.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
58+
curl -fsSl https://pkg.cloudflare.com/cloudflared.repo | sudo tee /etc/yum.repos.d/cloudflared.repo
5959
```
6060

6161
2. Update repositories and install cloudflared:

src/content/docs/cloudflare-one/networks/connectors/cloudflare-tunnel/private-net/warp-to-warp.mdx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,16 @@ This guide covers how to:
3434
3. Enable **Allow WARP to WARP connection**. This allows Cloudflare to route traffic to the <GlossaryTooltip term="CGNAT IP">CGNAT IP</GlossaryTooltip> space.
3535
4. In your [Split Tunnel configuration](/cloudflare-one/team-and-resources/devices/warp/configure-warp/route-traffic/split-tunnels/), ensure that traffic to `100.96.0.0/12` is going through WARP:
3636

37-
- If using **Exclude** mode, delete `100.64.0.0/10` from the list and re-add `100.64.0.0/11` and `100.112.0.0/12`.
38-
- If using **Include** mode, add `100.96.0.0/12` to your list.
37+
- If using **Exclude** mode, delete `100.64.0.0/10` from the list and add the following IP addresses:
38+
39+
- `100.64.0.0/12`
40+
- `100.81.0.0/16`
41+
- `100.82.0.0/15`
42+
- `100.84.0.0/14`
43+
- `100.88.0.0/13`
44+
- `100.112.0.0/12`
45+
46+
- If using **Include** mode, add `100.96.0.0/12` and `100.80.0.0/16` to your list.
3947

4048
This will instruct WARP to begin proxying any traffic destined for a `100.96.0.0/12` IP address to Cloudflare for routing and policy enforcement.
4149

src/content/docs/cloudflare-one/traffic-policies/egress-policies/host-selectors.mdx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,11 +102,13 @@ To configure your Zero Trust organization to use Host selectors with Egress poli
102102
- `100.82.0.0/15`
103103
- `100.84.0.0/14`
104104
- `100.88.0.0/13`
105-
- `100.96.0.0/11`
105+
- `100.112.0.0/12`
106+
107+
And remove `100.64.0.0/10` IP address.
106108

107109
</TabItem> <TabItem label="Include IPs and domains">
108110
1. Add the required [Zero Trust domains](/cloudflare-one/team-and-resources/devices/warp/configure-warp/route-traffic/split-tunnels/#cloudflare-zero-trust-domains) or [IP addresses](/cloudflare-one/team-and-resources/devices/warp/configure-warp/route-traffic/split-tunnels/#cloudflare-zero-trust-ip-addresses) to your Split Tunnel include list.
109-
2. [Add a route](/cloudflare-one/team-and-resources/devices/warp/configure-warp/route-traffic/split-tunnels/#add-a-route) to include the IP address `100.80.0.0/16`.
111+
2. [Add a route](/cloudflare-one/team-and-resources/devices/warp/configure-warp/route-traffic/split-tunnels/#add-a-route) to include `100.80.0.0/16` and `100.96.0.0/12` IP addresses.
110112

111113
</TabItem> </Tabs>
112114

src/content/docs/cloudflare-one/traffic-policies/packet-filtering/best-practices/minimal-ruleset.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ This is a suggested list and not an exhaustive list. Review your environment and
2929
**Match**: `(ip.proto eq "hopopt") or (not ip.proto in {"esp" "tcp" "udp" "gre" "icmp"})` <br/>
3030
**Action**: Block <br/>
3131

32+
The recommended rules are part of the managed rules.
33+
3234
## Traffic and port types
3335

3436
The information below covers traffic type, how the port is used, and reasons for blocking the port.

0 commit comments

Comments
 (0)