为什么传统的抓取和自动化会被阻止
Cloudflare、DataDome、PerimeterX和Akamai等反机器人系统已经远远超越了基于IP的检测。它们分析浏览器指纹、JavaScript执行环境、TLS握手和行为模式。运行无头Chrome的基本Puppeteer或Selenium设置很容易被检测到——navigator.webdriver标志、缺少浏览器插件和统一的渲染输出会立即暴露它。
Donut Browser为您的自动化提供真实的浏览器配置文件和真实的指纹。每个配置文件运行完整的浏览器引擎——不是打过补丁的headless Chrome——具有50多个伪装参数,可通过Pixelscan、IPHey和fingerprint.com的检测。免费的本地REST API和MCP服务器让您管理配置文件、代理和组。使用Pro计划,您还可以启动配置文件、获取Chrome DevTools Protocol端口、连接Puppeteer或Playwright进行完整的浏览器自动化——包括使用Claude和其他LLM的AI驱动工作流。
每个配置文件在运行之间保持持久会话。当你通过API停止并重新启动配置文件时,Cookie、本地存储和登录状态都会保留。这让你能够构建长期运行的工作流,积累浏览历史并长期维护账号会话——这是一次性无头浏览器实例无法做到的。
主要功能
程序化管理一切
运行在localhost:10108的完整REST API。程序化管理配置文件、代理、组和浏览器设置——对所有用户免费。Pro计划增加浏览器操控:启动配置文件、获取Chrome DevTools Protocol端口、连接自动化框架。基于令牌的身份验证保障API安全。
让AI驱动您的浏览器
内置MCP(Model Context Protocol)服务器,拥有30多个工具。免费工具涵盖配置文件管理、代理配置、VPN控制、指纹更新和扩展管理。Pro计划解锁浏览器操控工具——通过Claude或任何MCP兼容的LLM使用自然语言启动和控制配置文件。
抓取不被封锁
每个配置文件生成覆盖Canvas、WebGL、AudioContext、字体、屏幕尺寸、硬件规格和WebRTC的真实指纹。这些指纹通过Pixelscan、IPHey和fingerprint.com检查。即使在无头模式下也保持完整的指纹伪造。
每个抓取实例一个IP
为各个配置文件分配HTTP、HTTPS、SOCKS4或SOCKS5代理。每个配置文件在会话之间保持其代理。结合独特的指纹,实现每个自动化实例的完整身份隔离。
兼容您现有的脚本
通过API启动配置文件,获取Chrome DevTools Protocol端口,然后一行代码即可连接Playwright或Puppeteer。使用你现有的自动化脚本——不需要SDK或包装库。也支持Selenium。 需要Pro计划。
自动化而不被检测
通过API以无头模式启动配置文件,适用于服务器和CI/CD环境。无头配置文件使用与有头配置文件相同的指纹伪造,因此反机器人系统无法将它们与常规浏览器会话区分开来。 需要Pro计划。
使用本地API进行自动化
Donut Browser在端口10108提供本地REST API,让您程序化管理和控制浏览器配置文件。配置文件管理免费。使用Pro计划启动配置文件,连接Playwright或Puppeteer,在完整指纹保护下自动化。
import { chromium } from 'playwright';
// Step 1: List available profiles
const profilesRes = await fetch('http://localhost:10108/v1/profiles', {
headers: { 'Authorization': 'Bearer YOUR_API_TOKEN' },
});
const { profiles } = await profilesRes.json();
console.log(`Found ${profiles.length} profiles`);
// Step 2: Launch a profile and get the CDP port
const profileId = profiles[0].id;
const runRes = await fetch(`http://localhost:10108/v1/profiles/${profileId}/run`, {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({ headless: false }),
});
const { remote_debugging_port } = await runRes.json();
// Step 3: Connect Playwright to the running profile
const browser = await chromium.connectOverCDP(
`http://127.0.0.1:${remote_debugging_port}`
);
const context = browser.contexts()[0];
const page = context.pages()[0] || await context.newPage();
// Each profile has a unique fingerprint — automate without detection
await page.goto('https://example.com');
console.log(await page.title());核心功能 — 永久免费
入门所需的一切,无需创建账户
常见问题