爬虫浏览器 - 浏览器 API
简化你的动态抓取作业。通过完全托管的浏览器运行并扩展你的 Puppeteer、Selenium 和 Playwright 脚本,内置验证码求解与自动化代理管理。
- 自动扩缩基础设施
- 通过 Chrome DevTools 实时监控
- 全球地理位置与 ASN 定向
- 从 JavaScript 密集型站点提取数据
全球 超20000 位客户信赖
基于云的动态抓取
Browser API 专为基于浏览器的数据采集工作流而设计,这类工作流需要完整页面渲染、类用户交互以及高级解锁能力。
轻松集成
通过 Puppeteer、Selenium 或 Playwright 连接,只需改动一个 endpoint。
内置调试
使用 Chrome DevTools 实时排障并监控你的抓取会话。
完全托管的浏览器
云端托管浏览器,内置代理轮换,针对大规模抓取优化。
const pw = require('playwright');
const SBR_CDP = 'wss://brd-customer-CUSTOMER_ID-zone-ZONE_NAME:[email protected]:9222';
async function main() {
console.log('Connecting to Browser API...');
const browser = await pw.chromium.connectOverCDP(SBR_CDP);
try {
const page = await browser.newPage();
console.log('Connected! Navigating to https://example.com...');
await page.goto('https://example.com');
console.log('Navigated! Scraping page content...');
const html = await page.content();
console.log(html);
} finally {
await browser.close();
}
}
main().catch(err => {
console.error(err.stack || err);
process.exit(1);
});
import asyncio
from playwright.async_api import async_playwright
SBR_WS_CDP = 'wss://brd-customer-CUSTOMER_ID-zone-ZONE_NAME:[email protected]:9222'
async def run(pw):
print('Connecting to Browser API...')
browser = await pw.chromium.connect_over_cdp(SBR_WS_CDP)
try:
page = await browser.new_page()
print('Connected! Navigating to https://example.com...')
await page.goto('https://example.com')
print('Navigated! Scraping page content...')
html = await page.content()
print(html)
finally:
await browser.close()
async def main():
async with async_playwright() as playwright:
await run(playwright)
if __name__ == '__main__':
asyncio.run(main())
const puppeteer = require('puppeteer-core');
const SBR_WS_ENDPOINT = 'wss://brd-customer-CUSTOMER_ID-zone-ZONE_NAME:[email protected]:9222';
async function main() {
console.log('Connecting to Browser API...');
const browser = await puppeteer.connect({
browserWSEndpoint: SBR_WS_ENDPOINT,
});
try {
const page = await browser.newPage();
console.log('Connected! Navigating to https://example.com...');
await page.goto('https://example.com');
console.log('Navigated! Scraping page content...');
const html = await page.content();
console.log(html)
} finally {
await browser.close();
}
}
main().catch(err => {
console.error(err.stack || err);
process.exit(1);
});
const { Builder, Browser } = require('selenium-webdriver');
const SBR_WEBDRIVER = 'https://brd-customer-CUSTOMER_ID-zone-ZONE_NAME:[email protected]:9515';
async function main() {
console.log('Connecting to Browser API...');
const driver = await new Builder()
.forBrowser(Browser.CHROME)
.usingServer(SBR_WEBDRIVER)
.build();
try {
console.log('Connected! Navigating to https://example.com...');
await driver.get('https://example.com');
console.log('Navigated! Scraping page content...');
const html = await driver.getPageSource();
console.log(html);
} finally {
driver.quit();
}
}
main().catch(err => {
console.error(err.stack || err);
process.exit(1);
});
from selenium.webdriver import Remote, ChromeOptions
from selenium.webdriver.chromium.remote_connection import ChromiumRemoteConnection
SBR_WEBDRIVER = 'https://brd-customer-CUSTOMER_ID-zone-ZONE_NAME:[email protected]:9515'
def main():
print('Connecting to Browser API...')
sbr_connection = ChromiumRemoteConnection(SBR_WEBDRIVER, 'goog', 'chrome')
with Remote(sbr_connection, options=ChromeOptions()) as driver:
print('Connected! Navigating to https://example.com...')
driver.get('https://example.com')
print('Navigated! Scraping page content...')
html = driver.page_source
print(html)
if __name__ == '__main__':
main()
启用自主解锁能力
浏览器指纹识别
模拟真实用户的浏览器,打造类人的使用体验
验证码求解
分析并求解验证码及挑战-响应测试
管理特定 User Agent
自动模拟不同类型的浏览器与设备
设置引用来源 Headers
模拟来自热门或可信网站的访问流量
处理 Cookies
避免由 Cookie 相关因素导致的潜在封锁
自动重试与 IP 轮换
在后台持续重试请求,并轮换 IP
全球地理覆盖
访问任意国家、城市、州/省或 ASN 的本地化内容
JavaScript 渲染
从依赖动态元素的网站中提取数据
数据完整性校验
确保数据的准确性、一致性与可靠性
浏览器 API 定价
浏览器 API 的优势
降低基础设施开销
通过一个 API 即可完成浏览器环境搭建并自动扩缩,提供无限并发会话与工作负载,用于持续抓取
提升成功率
无需再构建解锁补丁;通过内置网络解锁器与超大规模住宅 IP 池,为访问任意公开网页数据提供长期保障
提升开发者生产力
只需一行代码即可在混合云中运行现有脚本,让开发者“聚焦关键”,从繁琐的抓取运维中解放出来
由屡获殊荣的代理网络提供支持
超40000万 monthly 个代理 IP、行业领先的技术,以及可按任意国家、城市、邮政编码、运营商和 ASN 定向的能力,使我们的高级 代理服务 成为开发者的首选。
浏览器基础设施自动扩缩
将你的交互式、多步骤抓取脚本连接到混合浏览器环境中,只需一行代码即可提供无限并发会话
兼容 Chrome DevTools
使用 Chrome DevTools 调试器,无缝监控并排查 Browser API 的性能问题
7x24 小时支持
获得全天候专家支持,快速解决问题并确保高质量数据交付。实时查看网络状态,实现完全透明
常见问题
什么是浏览器 API?
浏览器 API 是一款抓取浏览器,其工作方式与其他自动化浏览器类似,可通过 Puppeteer、Playwright 等常见高级 API 进行控制,但它是唯一内置网站解锁能力的浏览器。浏览器 API 会在底层自动管理所有网站解锁操作,包括:验证码求解、浏览器指纹识别、自动重试、Headers 选择、cookies、JavaScript 渲染等更多功能,帮助你节省时间与资源。
什么时候我需要使用浏览器来抓取?
在抓取数据时,当需要对页面进行 JavaScript 渲染或与网站交互(悬停、翻页、点击、截图等)时,开发者会使用自动化浏览器。此外,在需要一次性同时抓取多个页面的大规模数据采集项目中,浏览器也非常有用。
浏览器 API 是无头浏览器还是有头浏览器?
浏览器 API 是 GUI 浏览器(也称“有头”浏览器),带图形用户界面。不过,开发者会以无头的方式使用浏览器 API,通过 Puppeteer 或 Playwright 等 API 与浏览器交互;而浏览器 API 实际是在 Bright Data 的基础设施上以 GUI 浏览器形式运行。
用于抓取时,有头浏览器与无头浏览器有什么区别?
在选择自动化浏览器时,开发者可以在无头浏览器与 GUI/有头浏览器之间选择。“无头浏览器”指没有图形用户界面的网页浏览器。无头浏览器配合代理可用于抓取,但更容易被反机器人软件识别,导致大规模数据抓取变得困难。GUI 浏览器(如浏览器 API,也称“有头”)具有图形用户界面,反机器人软件更不容易检测到 GUI 浏览器。
为什么浏览器 API 比 Headless Chrome 或 Selenium 网页抓取 Python 更好?
浏览器 API 内置网站解锁功能,可自动为你处理封锁。浏览器 API 采用自动化解锁,并运行在 Bright Data 的服务器上,因此非常适合扩展网页数据抓取项目,无需搭建复杂的基础设施。
浏览器 API 是否兼容 Puppeteer 抓取?
是的,浏览器 API 与 Puppeteer 完全兼容。
Playwright 抓取是否兼容浏览器 API?
是的,浏览器 API 与 Playwright 完全兼容。
什么时候我应该使用浏览器 API 而不是 Bright Data 的其他代理产品?
浏览器 API 是一款针对数据抓取优化的自动化浏览器,集成了网络解锁器的自动化解锁能力。网络解锁器适用于一步请求;当开发者需要与网站交互以获取数据时,则需要浏览器 API。对于任何需要浏览器、可扩展能力以及自动化管理所有网站解锁动作的数据采集项目,浏览器 API 都是理想选择。