字体预加载
Home
avatar

翻过墙

翻过墙

BotBrowser-自动化浏览器

BotBrowser 是一个开源的自动化浏览器工具,基于Chromium内核构建。它提供了强大的自动化能力,支持网页操作、数据抓取、表单填写、截图等功能,是Web自动化的理想选择。

主要特性

🤖 自动化能力

  • 网页操作: 点击、输入、滚动、拖拽等操作
  • 元素定位: 支持XPath、CSS选择器、ID等多种定位方式
  • 等待机制: 智能等待页面加载和元素出现
  • 事件处理: 支持各种浏览器事件监听和处理

📊 数据抓取

  • 内容提取: 自动提取网页文本、图片、链接等
  • 表格数据: 支持表格数据的结构化提取
  • API调用: 支持RESTful API的自动化调用
  • 数据导出: 支持CSV、JSON、Excel等格式导出

🔧 高级功能

  • 多标签页: 支持多标签页同时操作
  • Cookie管理: 自动管理浏览器Cookie和会话
  • 代理支持: 支持HTTP、SOCKS代理
  • 截图录制: 支持页面截图和操作录制

🌐 跨平台支持

  • 桌面端: Windows、macOS、Linux
  • 服务端: 支持无头模式运行
  • Docker: 支持容器化部署
  • 云服务: 支持云端自动化

项目地址

BotBrowser - Github BotBrowser - 文档

安装配置

1. 下载安装

# 从GitHub下载最新版本
# 访问 https://github.com/botbrowser/botbrowser/releases

# Windows用户
# 下载 .exe 安装包

# macOS用户
# 下载 .dmg 安装包

# Linux用户
# 下载 .AppImage 或 .deb 包

2. Python SDK安装

# 安装Python SDK
pip install botbrowser

# 或者从源码安装
git clone https://github.com/botbrowser/botbrowser-python.git
cd botbrowser-python
pip install -e .

3. Docker部署

# 拉取镜像
docker pull botbrowser/botbrowser:latest

# 运行容器
docker run -d \
  --name botbrowser \
  -p 9222:9222 \
  -v /tmp/botbrowser:/data \
  botbrowser/botbrowser:latest

# 使用Docker Compose
version: '3'
services:
  botbrowser:
    image: botbrowser/botbrowser:latest
    ports:
      - "9222:9222"
    volumes:
      - ./data:/data
    environment:
      - DISPLAY=:99

基础配置

1. 浏览器配置

# 基础配置示例
from botbrowser import BotBrowser

browser = BotBrowser(
    headless=False,  # 是否无头模式
    window_size=(1920, 1080),  # 窗口大小
    user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
    proxy="http://proxy.example.com:8080",  # 代理设置
    timeout=30  # 超时时间
)

2. 自动化脚本

# 简单的自动化脚本
async def login_example():
    browser = BotBrowser()
    
    # 打开网页
    await browser.goto("https://example.com/login")
    
    # 填写表单
    await browser.fill("#username", "your_username")
    await browser.fill("#password", "your_password")
    
    # 点击登录按钮
    await browser.click("#login-btn")
    
    # 等待页面加载
    await browser.wait_for_selector(".dashboard")
    
    # 截图
    await browser.screenshot("login_success.png")
    
    await browser.close()

3. 数据抓取

# 数据抓取示例
async def scrape_data():
    browser = BotBrowser()
    
    await browser.goto("https://example.com/products")
    
    # 提取产品信息
    products = await browser.query_selector_all(".product-item")
    
    data = []
    for product in products:
        name = await product.query_selector(".product-name").text_content()
        price = await product.query_selector(".product-price").text_content()
        data.append({
            "name": name,
            "price": price
        })
    
    # 导出数据
    import json
    with open("products.json", "w") as f:
        json.dump(data, f, ensure_ascii=False, indent=2)
    
    await browser.close()

高级功能

1. 智能等待

# 智能等待示例
async def smart_wait():
    browser = BotBrowser()
    
    await browser.goto("https://example.com")
    
    # 等待元素出现
    await browser.wait_for_selector("#dynamic-content", timeout=10000)
    
    # 等待元素消失
    await browser.wait_for_selector("#loading", state="hidden")
    
    # 等待网络请求完成
    await browser.wait_for_load_state("networkidle")
    
    # 等待JavaScript执行完成
    await browser.wait_for_function("document.readyState === 'complete'")

2. 事件监听

# 事件监听示例
async def event_listener():
    browser = BotBrowser()
    
    # 监听网络请求
    async def handle_request(request):
        print(f"Request: {request.url}")
    
    browser.on("request", handle_request)
    
    # 监听响应
    async def handle_response(response):
        if response.status == 404:
            print(f"404 Error: {response.url}")
    
    browser.on("response", handle_response)
    
    await browser.goto("https://example.com")

3. 多标签页管理

# 多标签页示例
async def multi_tabs():
    browser = BotBrowser()
    
    # 创建新标签页
    page1 = await browser.new_page()
    page2 = await browser.new_page()
    
    # 并行操作多个标签页
    await asyncio.gather(
        page1.goto("https://example1.com"),
        page2.goto("https://example2.com")
    )
    
    # 切换标签页
    await browser.bring_to_front(page1)
    
    # 关闭标签页
    await page1.close()

使用场景

1. 数据抓取

# 数据抓取场景
适用场景:
  - 电商数据抓取
  - 新闻内容采集
  - 社交媒体监控
  - 价格比较分析
功能:
  - 批量数据提取
  - 定时任务执行
  - 数据清洗处理
  - 结果导出分析

2. 自动化测试

# 自动化测试场景
适用场景:
  - Web应用测试
  - 回归测试
  - 性能测试
  - 兼容性测试
功能:
  - 测试用例执行
  - 测试报告生成
  - 错误截图保存
  - 持续集成支持

3. 业务流程自动化

# 业务流程自动化
适用场景:
  - 订单处理
  - 客户服务
  - 内容发布
  - 系统监控
功能:
  - 流程自动化
  - 异常处理
  - 日志记录
  - 结果通知

性能优化

1. 资源管理

# 资源优化配置
browser = BotBrowser(
    # 禁用图片加载
    images_enabled=False,
    
    # 禁用CSS
    css_enabled=False,
    
    # 禁用JavaScript
    javascript_enabled=False,
    
    # 设置缓存
    cache_enabled=True,
    
    # 限制并发请求
    max_concurrent_requests=10
)

2. 内存优化

# 内存优化示例
async def memory_optimized():
    browser = BotBrowser()
    
    try:
        # 定期清理内存
        await browser.evaluate("""
            if (window.gc) {
                window.gc();
            }
        """)
        
        # 清理缓存
        await browser.clear_cache()
        
    finally:
        await browser.close()

3. 并发控制

# 并发控制示例
import asyncio
from asyncio import Semaphore

async def controlled_scraping(urls, max_concurrent=5):
    semaphore = Semaphore(max_concurrent)
    
    async def scrape_url(url):
        async with semaphore:
            browser = BotBrowser()
            try:
                await browser.goto(url)
                # 执行抓取逻辑
                return await extract_data(browser)
            finally:
                await browser.close()
    
    tasks = [scrape_url(url) for url in urls]
    return await asyncio.gather(*tasks)

常见问题

Q: 如何处理反爬虫机制?

A: 使用随机User-Agent、代理IP、请求间隔、Cookie管理等方式绕过反爬虫检测。

Q: 如何提高抓取效率?

A: 使用并发控制、资源优化、智能等待、缓存机制等方法提高效率。

Q: 如何处理动态加载内容?

A: 使用wait_for_selector、wait_for_function等方法等待动态内容加载完成。

Q: 如何保存登录状态?

A: 使用Cookie管理、会话保存、状态持久化等方式保存登录状态。

总结

BotBrowser 是一个功能强大的自动化浏览器工具,具有以下优势:

  • 完全免费开源
  • 功能强大
  • 易于使用
  • 跨平台支持
  • 性能优异
  • 扩展性强

BotBrowser 特别适合需要Web自动化的开发者和企业用户。

使用BotBrowser时请遵守网站的robots.txt和使用条款,合理使用自动化功能。

BotBrowser 自动化 开源 浏览器 工具 免费