🎯 一款可定制、具备反检测功能的云浏览器,由自主研发的 Chromium驱动,专为网页爬虫AI 代理设计。👉立即试用
返回博客

如何通过Scrapeless Cloud Browser提升Crawl4AI

Michael Lee
Michael Lee

Expert Network Defense Engineer

20-Oct-2025

在本教程中,您将学习:

  • 什么是Crawl4AI,它为网页抓取提供了什么
  • 如何将Crawl4AI与Scrapeless浏览器集成

让我们开始吧!


第一部分:什么是Crawl4AI?

概述

Crawl4AI是一个开源网页爬虫和抓取工具,旨在与大型语言模型(LLMs)、AI代理和数据管道无缝集成。它可以实现高速、实时的数据提取,同时灵活且易于部署。

面向AI驱动网页抓取的关键特性包括:

  • 为LLMs而生: 生成结构化的Markdown,优化于增强检索生成(RAG)和微调。
  • 灵活的浏览器控制: 支持会话管理、代理使用和自定义钩子。
  • 启发式智能: 使用智能算法优化数据解析
  • 完全开源: 无需API密钥;可以通过Docker和云平台进行部署。

官方文档中了解更多信息。

使用案例

Crawl4AI非常适合大型数据提取任务,如市场研究、新闻聚合和电子商务产品收集。它可以处理动态、以JavaScript为主的网站,并为AI代理和自动化数据管道提供可靠的数据源。


第二部分:什么是Scrapeless浏览器?

Scrapeless浏览器是一个基于云的无服务器浏览器自动化工具。它基于深度定制的Chromium内核,支持全球分布的服务器和代理网络。这使得用户可以无缝地运行和管理多个无头浏览器实例,从而轻松构建与网络交互的AI应用和AI代理。


第三部分:为什么将Scrapeless与Crawl4AI结合?

Crawl4AI在结构化网页数据提取方面表现出色,并支持基于LLM的解析和模式抓取。然而,当面对先进的反机器人机制时,它仍然可能面临挑战,例如:

  • 本地浏览器被Cloudflare、AWS WAF或reCAPTCHA阻止
  • 大规模并发抓取时的性能瓶颈,浏览器启动缓慢
  • 复杂的调试过程使得问题追踪困难

Scrapeless Cloud Browser完美解决了这些痛点:

  • 一键反机器人绕过: 自动处理reCAPTCHA、Cloudflare旋转门/挑战、AWS WAF等。与Crawl4AI的结构化提取能力相结合,显著提高成功率。
  • 无限并发扩展: 每个任务在几秒内启动50–1000+个浏览器实例,消除了本地抓取性能限制,最大化Crawl4AI效率。
  • 40%–80%的成本降低: 与类似云服务相比,总成本降至仅20%–60%。按需付费定价,即使对于小规模项目也很实惠。
  • 可视化调试工具: 使用会话回放实时URL监控来实时观看Crawl4AI任务,快速识别故障原因,减少调试开销。
  • 零成本集成:Playwright(由Crawl4AI使用)原生兼容,只需一行代码即可将Crawl4AI连接到云——无需重构代码。
  • 边缘节点服务(ENS): 多个全球节点提供启动速度和稳定性快2–3倍于其他云浏览器,加速Crawl4AI执行。
  • 隔离环境与持久会话: 每个Scrapeless配置文件在其自己的环境中运行,具有持久登录和身份隔离,防止会话干扰并提高大规模稳定性。
  • 灵活的指纹管理: Scrapeless可以生成随机浏览器指纹或使用自定义配置,有效降低检测风险并提高Crawl4AI的成功率。

第四部分:如何在Crawl4AI中使用Scrapeless?

Scrapeless提供的云浏览器服务通常会返回一个CDP_URL。Crawl4AI可以使用此URL直接连接到云浏览器,而无需在本地启动浏览器。

以下示例演示了如何将Crawl4AI与Scrapeless Cloud Browser无缝集成以进行高效抓取,同时支持自动代理轮换自定义指纹配置文件重用


获取您的Scrapeless令牌

登录Scrapeless并获取您的API Token

1. 快速开始

以下示例展示了如何快速便捷地将 Crawl4AI 连接到 Scrapeless 云浏览器:

要获取更多功能和详细说明,请参见 入门指南

Copy
scrapeless_params = {
    "token": "从 https://www.scrapeless.com 获取您的令牌",
    "sessionName": "Scrapeless 浏览器",
    "sessionTTL": 1000,
}

query_string = urlencode(scrapeless_params)
scrapeless_connection_url = f"wss://browser.scrapeless.com/api/v2/browser?{query_string}"

AsyncWebCrawler(
    config=BrowserConfig(
        headless=False,
        browser_mode="cdp",
        cdp_url=scrapeless_connection_url
    )
)

在配置完成后,Crawl4AI 通过 CDP(Chrome 开发者工具协议) 模式连接到 Scrapeless 云浏览器,无需本地浏览器环境即可进行网页抓取。用户可以进一步配置 代理、指纹、会话重用 和其他功能,以满足高并发和复杂反爬虫场景的需求。

2. 全球自动代理轮换

Scrapeless 支持来自 195 个国家 的住宅 IP。用户可以使用 proxycountry 配置目标区域,使请求从特定位置发送。IP 会自动轮换,有效避免封锁。

Copy
import asyncio
from urllib.parse import urlencode
from Crawl4AI import CrawlerRunConfig, BrowserConfig, AsyncWebCrawler

async def main():
    scrapeless_params = {
        "token": "您的令牌",
        "sessionTTL": 1000,
        "sessionName": "代理演示",
        # 设置代理的目标国家/地区,通过该地区的 IP 地址发送请求。您可以指定国家代码(例如,美国的 US,英国的 GB,ANY 表示任何国家)。查看所有支持的选项的国家代码。
        "proxyCountry": "ANY",
    }
    query_string = urlencode(scrapeless_params)
    scrapeless_connection_url = f"wss://browser.scrapeless.com/api/v2/browser?{query_string}"
    async with AsyncWebCrawler(
        config=BrowserConfig(
            headless=False,
            browser_mode="cdp",
            cdp_url=scrapeless_connection_url,
        )
    ) as crawler:
        result = await crawler.arun(
            url="https://www.scrapeless.com/en",
            config=CrawlerRunConfig(
                wait_for="css:.content",
                scan_full_page=True,
            ),
        )
        print("-" * 20)
        print(f'状态码: {result.status_code}')
        print("-" * 20)
        print(f'标题: {result.metadata["title"]}')
        print(f'描述: {result.metadata["description"]}')
        print("-" * 20)
asyncio.run(main())

3. 自定义浏览器指纹

为了模仿真实用户行为,Scrapeless 支持随机生成浏览器指纹,并允许自定义指纹参数。这有效降低了被目标网站检测到的风险。

Copy
import json
import asyncio
from urllib.parse import quote, urlencode
from Crawl4AI import CrawlerRunConfig, BrowserConfig, AsyncWebCrawler

async def main():
    # 自定义浏览器指纹
    fingerprint = {
        "userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/134.1.2.3 Safari/537.36",
        "platform": "Windows",
        "screen": {
            "width": 1280, "height": 1024
        },
        "localization": {
            "languages": ["zh-HK", "en-US", "en"], "timezone": "Asia/Hong_Kong",
        }
    }

    fingerprint_json = json.dumps(fingerprint)
    encoded_fingerprint = quote(fingerprint_json)

    scrapeless_params = {
        "token": "您的令牌",
        "sessionTTL": 1000,
        "sessionName": "指纹演示",
        "fingerprint": encoded_fingerprint,
    }
    query_string = urlencode(scrapeless_params)
    scrapeless_connection_url = f"wss://browser.scrapeless.com/api/v2/browser?{query_string}"
    async with AsyncWebCrawler(
        config=BrowserConfig(
            headless=False,
            browser_mode="cdp",
            cdp_url=scrapeless_connection_url,
        )
    ) as crawler:
        result = await crawler.arun(
            url="https://www.scrapeless.com/en",
            config=CrawlerRunConfig(
                wait_for="css:.content",
                scan_full_page=True,
            ),
        )
        print("-" * 20)
        print(f'状态码: {result.status_code}')
        print("-" * 20)
        print(f'标题: {result.metadata["title"]}')
        print(f'描述: {result.metadata["description"]}')
        print("-" * 20)
asyncio.run(main())

4. 配置重用

Scrapeless 为每个个人资料分配独立的浏览器环境,从而实现持久登录和身份隔离。用户只需提供 profileId 即可重用之前的会话。

Copy
import asyncio
from urllib.parse import urlencode
from Crawl4AI import CrawlerRunConfig, BrowserConfig, AsyncWebCrawler

async def main():
    scrapeless_params = {
        "token": "你的令牌",
        "sessionTTL": 1000,
        "sessionName": "个人资料演示",
        "profileId": "你的profileId", # 在scrapeless上创建个人资料
    }
    query_string = urlencode(scrapeless_params)
    scrapeless_connection_url = f"wss://browser.scrapeless.com/api/v2/browser?{query_string}"
    async with AsyncWebCrawler(
        config=BrowserConfig(
            headless=False,
            browser_mode="cdp",
            cdp_url=scrapeless_connection_url,
        )
    ) as crawler:
        result = await crawler.arun(
            url="https://www.scrapeless.com",
            config=CrawlerRunConfig(
                wait_for="css:.content",
                scan_full_page=True,
            ),
        )
        print("-" * 20)
        print(f'状态码: {result.status_code}')
        print("-" * 20)
        print(f'标题: {result.metadata["title"]}')
        print(f'描述: {result.metadata["description"]}')
        print("-" * 20)
asyncio.run(main())

视频

常见问题

问:我如何记录和查看浏览器执行过程?
答: 只需将 sessionRecording 参数设置为 "true"。整个浏览器执行过程将自动记录。在会话结束后,您可以在 会话历史记录 列表中重放和查看完整的活动,包括点击、滚动、页面加载和其他细节。默认值为 "false"

Copy
scrapeless_params = {
    # ... 
    "sessionRecording": "true",
}

问:我如何使用随机指纹?
答: Scrapeless 浏览器服务会自动为每个会话生成一个随机的浏览器指纹。用户也可以使用 fingerprint 字段设置自定义指纹。

问:我如何设置自定义代理?
答: 我们内置的代理网络支持 195 个国家/地区。如果用户想使用自己的代理,可以使用 proxyURL 参数指定代理 URL,例如:http://user:pass@ip:port
(注意:自定义代理功能目前仅对企业和企业增值订阅用户可用。)

Copy
scrapeless_params = {
    # ... 
    "proxyURL": "proxyURL",
}

总结

将 Scrapeless 云浏览器与 Crawl4AI 结合为开发人员提供了一个稳定且可扩展的网页抓取环境:

  • 无需安装或维护本地 Chrome 实例;所有任务直接在云中运行。
  • 降低被封锁和 CAPTCHA 中断的风险,因为每个会话是隔离的,并支持随机或自定义指纹。
  • 改善调试和可重现性,支持自动会话录制和回放。
  • 支持在 195 个国家/地区 之间自动代理轮换。
  • 利用全球 边缘节点服务,提供比其他类似服务更快的启动速度。

此合作为 Scrapeless 和 Crawl4AI 在网页数据抓取领域标志着一个重要的里程碑。展望未来,Scrapeless 将专注于云浏览器技术,为企业客户提供高效、可扩展的数据提取、自动化和 AI 代理基础设施支持。凭借其强大的云能力,Scrapeless 将继续为金融、零售、电子商务、SEO 和营销等行业提供定制和场景化解决方案,帮助企业在数据智能时代实现真正的自动化增长。

在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。

最受欢迎的文章

目录