抓取浏览器
简化动态抓取操作。在完全托管的浏览器上运行和扩展您的 Puppeteer、Selenium 和 Playwright 脚本,并使用内置的验证码解算器进行自动化代理管理。
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 Scraping Browser...');
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 Scraping Browser...')
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()
u2028
async def main():
async with async_playwright() as playwright:
await run(playwright)
u2028
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 Scraping Browser...');
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 Scraping Browser...');
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'
u2028
def main():
print('Connecting to Scraping Browser...')
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)
u2028
if __name__ == '__main__':
main()
基于云的动态抓取
- 运行 Puppeteer、Selenium 或 Playwright 脚本
- 自动化代理管理和网页解锁
- 使用 Chrome DevTools 监控并排除故障
- 完全托管的浏览器,专门针对抓取进行了优化
利用自动解锁
浏览器指纹
模拟真实用户的浏览器,以呈现人性化的体验
CAPTCHA 识别
分析并解决 CAPTCHA 及挑战应答测试
管理特定用户代理
自动模拟不同类型的浏览器和设备
设置来源(Referrer)头
模拟来自热门或可信网站的流量请求
处理 Cookies
防止因 Cookies 设置导致的潜在封禁
自动重试与 IP 轮换
在后台持续重试请求并切换 IP
全球地理覆盖
从任意国家、城市、州或 ASN 获取本地化内容
JavaScript 渲染
对依赖动态元素的网站进行数据提取
数据完整性验证
确保数据的准确性、一致性与可靠性
抓取浏览器定价
抓取浏览器的优势
削减基础架构管理费用
通过单一 API 设置并自动扩展浏览器环境,打开无限多个并发会话,处理无限工作负载,以便持续抓取
提高成功率
停止构建解锁补丁,通过内置解锁器和超庞大的住宅 IP 池访问任何公共网页数据,不会过时
提高开发者的工作效率
只需一行代码即可在混合云中运行现有脚本,让开发者“高度专注于”重要任务,省去抓取操作的麻烦
由屡获殊荣的代理网络提供支持
代理 IP 超过 1 亿、一流的技术以及针对任何国家/地区、城市、邮政编码、运营商和自治系统号(ASN)的定位能力使我们的高级代理服务成为开发者的首选。
自动扩展浏览器基础架构
将您的交互式多步抓取脚本连接到混合浏览器环境中,只需一行代码就能同时打开无限多个并发会话
兼容 Chrome DevTools
使用 Chrome DevTools 调试程序无缝监控抓取浏览器的性能并排除故障
全天候支持
获取全天候专家支持,快速解决问题,确保高质量的数据交付。实时完全透明地了解网络状态
常见问题
什么是抓取浏览器?
抓取浏览器的工作原理与其他自动化浏览器相似,可以通过 Puppeteer、Playwright 等常见的高级 API 来控制。但它是唯一内置网站解封功能(Website Unblocking)的浏览器。抓取浏览器会在后台自动处理所有网站解封操作,包括:CAPTCHA 识别、浏览器指纹、自动重试、请求头选择、处理 cookies、JavaScript 渲染等等,帮助你节省时间和资源。
在什么情况下需要使用浏览器进行抓取?
当进行数据抓取时,如果需要页面的 JavaScript 渲染或与网站进行交互(例如悬停、翻页、点击、截图等),开发者就会使用自动化浏览器。此外,当需要对多个页面同时进行大规模数据抓取时,使用浏览器也非常有帮助。
抓取浏览器是无头浏览器还是有头浏览器?
抓取浏览器是 GUI 浏览器(也称“有头”(headfull)浏览器),带有图形用户界面。不过,对于开发者而言,抓取浏览器的使用方式与无头浏览器相似,借助 Puppeteer 或 Playwright 等 API 与浏览器交互。只不过抓取浏览器是在 Bright Data 的基础设施上以图形界面方式打开。
有头浏览器和无头浏览器在抓取时有什么区别?
在选择自动化浏览器时,开发者可以选择无头(headless)或有头(GUI/headfull)浏览器。无头浏览器指没有图形界面的浏览器,通常结合代理使用来抓取数据。但由于容易被反爬(bot protection)软件识别,大规模数据抓取会更困难。有头(GUI)浏览器(例如抓取浏览器,也称“headfull”)有图形用户界面,更不容易被反爬软件检测到。
为什么说抓取浏览器比 Headless Chrome 或使用 Python 的 Selenium 抓取更好?
抓取浏览器自带内置网站解封功能,可以自动处理抓取过程中的限制。抓取浏览器在 Bright Data 的服务器上以自动化解封方式打开,非常适合大规模的网页数据抓取项目,无需耗费大量基础设施资源。
抓取浏览器能与 Puppeteer 抓取配合使用吗?
可以,抓取浏览器完全兼容 Puppeteer。
Playwright 抓取可以与抓取浏览器配合使用吗?
可以,抓取浏览器同样完全兼容 Playwright。
在什么情况下应该使用抓取浏览器而不是 Bright Data 的其他代理产品?
抓取浏览器是专为数据抓取优化的自动化浏览器,集成了 Web Unlocker 的自动化解封功能。当只需要一次性请求时,Web Unlocker 就能满足需求;但当需要在抓取过程中与网站进行充分交互时(比如点击、翻页),就需要使用抓取浏览器。同时,对于任何需要浏览器操作、大规模抓取以及自动管理所有解封操作的项目来说,它也是理想选择。