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

如何在未被检测的指纹浏览器上运行Crawl4AI

Emily Chen
Emily Chen

Advanced Data Extraction Specialist

09-Jul-2026

TL;DR:

  • Crawl4AI 已经支持 Chrome DevTools Protocol,因此将其指向 Scrapeless 只需两行代码更改。 设置 browser_mode="cdp"cdp_url 为 Scrapeless 的 WebSocket 端点,所有的 arun() 爬虫将在云浏览器上运行,而非本地 Chromium。
  • 本地 Crawl4AI 浏览器在三个方面泄露自动化信息: navigator.webdriver 标志、无头默认指纹和您自己的出口 IP。反机器人系统会同时检测这三项信息。
  • Scrapeless Scraping Browser 在服务器端回答这三项问题 — 实际自开发的 Chromium、一致的每会话指纹,没有 webdriver 迹象,且在195多个国家的住宅网络出口。
  • 您的爬虫逻辑保持不变。 提取策略、CrawlerRunConfig、分块和 markdown 输出的行为与本地完全相同;只有浏览器源发生变化。
  • 验证过的实时结果: 在 Scrapeless 云浏览器上进行的 Crawl4AI 爬虫返回了 HTTP 200 和超过 11,000 个字符的干净 markdown,另一个检查显示 navigator.webdriver 在美国住宅 IP 下为 false
  • 免费开始。 新的 Scrapeless 账户包括免费的 Scraping Browser 运行时 — 请在 app.scrapeless.com 注册。

介绍:为 Crawl4AI 提供一个可以读取干净的浏览器

Crawl4AI 通过 Playwright 驱动真实的 Chromium,将页面转换为适合 LLM 的 markdown。将其与您自己机器上的浏览器一起运行,每次爬虫都会继承那些使自动化变得显而易见的信号:它通过 the navigator.webdriver 属性 公布自己,使用无头默认字体和画布行为,并从声誉服务已经识别的 IP 中退出。

您可以在本地修补每一个问题,然后随着 Chromium 和检测器的升级持续修补。还有更短的路径。Crawl4AI 可以通过其 cdp_url 设置连接到任何支持 Chrome DevTools Protocol 的浏览器,而 Scrapeless Scraping Browser 就是通过一个 WebSocket URL 到达的 CDP 端点。将 Crawl4AI 指向它,指纹、行为表面和出口 IP 都转移到服务器端 — 爬虫代码保持不变。


您可以用它做什么

  • 爬取反机器人保护的页面 — 云浏览器在渲染期间清除挑战,因此 arun() 返回内容而不是中间页。
  • 本地化爬虫 — 固定 proxyCountry 使页面呈现出该市场访客所看到的样子。
  • 发送一致的指纹 — 传递一个 fingerprint 对象,让用户代理、平台、屏幕和时区在多个运行中保持一致。
  • 重用登录状态 — 传递 profileId 使得 cookies 和本地存储在爬虫之间持久。
  • 扩展超出您的笔记本电脑 — 会话在云中运行,因此 URL 批次不受限于本地 Chromium。
  • 保持提取过程不变 — CSS/XPath 策略、LLM 提取和 markdown 生成的行为完全相同。

为什么选择 Scrapeless Scraping Browser

Scrapeless Scraping Browser 是一个可定制的、抗检测的云浏览器,专为网络爬虫和 AI 代理设计。对于 Crawl4AI 特别来说,它提供了:

  • 真正自开发的 Chromium,精确运行页面 JavaScript,确保在 arun() 读取之前附加客户端渲染的内容。
  • 一致的每会话指纹 — 无 navigator.webdriver 迹象,无头默认设置没有信息泄露。
  • 在195多个国家的住宅出口,每次会话选择一个 proxyCountry 值。
  • 通过 profileId 保持会话持久性,使得经过身份验证的爬虫保持其状态。
  • 单一连接接口 — 每个选项都是同一 WebSocket 端点上的查询参数。

在免费的计划中获取您的 API 密钥,访问 app.scrapeless.com


先决条件

  • Python 3.10 或更高版本,需含 asyncio
  • 安装 Crawl4AI (pip install crawl4ai
  • 一个 Scrapeless 账户及 API 令牌 — 请在 app.scrapeless.com 注册

下面的示例已经通过实际的 Scrapeless 会话验证。完整的连接细节请参见 Crawl4AI 集成文档


安装

Crawl4AI 自带 Playwright/CDP 支持,因此该集成不需要额外的浏览器包。

bash Copy
pip install crawl4ai python-dotenv
export SCRAPELESS_TOKEN=your_api_token_here   # 免费密钥请访问 https://app.scrapeless.com

配置连接

Scrapeless 端点是 wss://browser.scrapeless.com/api/v2/browser,每个选项都是一个查询参数。构建 URL 一次并传递给 BrowserConfig

python Copy
import os
from urllib.parse import urlencode

def scrapeless_cdp_url() -> str:
    params = {
        "token": os.environ["SCRAPELESS_TOKEN"],
        "sessionName": "Crawl4AI",
        "sessionTTL": 180000,      # 毫秒
        "proxyCountry": "US",
    }
    return f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"

基本的云浏览器爬取

设置 browser_mode="cdp" 并传递 cdp_url。其他一切——爬虫生命周期、CrawlerRunConfig、Markdown 结果——都是标准的 Crawl4AI。

python Copy
import asyncio
import os
from urllib.parse import urlencode
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig

def scrapeless_cdp_url() -> str:
    params = {
        "token": os.environ["SCRAPELESS_TOKEN"],
        "sessionName": "Crawl4AI",
        "sessionTTL": 180000,      # 毫秒
        "proxyCountry": "US",
    }
    return f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"

async def main() -> None:
    async with AsyncWebCrawler(
        config=BrowserConfig(
            headless=True,
            browser_mode="cdp",
            cdp_url=scrapeless_cdp_url(),
        )
    ) as crawler:
        result = await crawler.arun(
            url="https://www.scrapeless.com/en",
            config=CrawlerRunConfig(wait_for="css:body", scan_full_page=True),
        )
        print("status:", result.status_code)
        print("title:", result.metadata.get("title"))
        print("markdown chars:", len(result.markdown.raw_markdown))

asyncio.run(main())

此爬取的实时运行返回了 status: 200,页面标题为 Effortless Web Scraping Toolkit - Scrapeless,以及超过 11,000 个字符的干净 Markdown——这是 Crawl4AI 在本地产生的相同结果对象,通过云浏览器获取。

在免费计划中获取您的 API 密钥:app.scrapeless.com

发送一致的指纹

fingerprint 对象保持浏览器的广告身份一致——用户代理、平台、屏幕、语言和时区都一致,这是反机器人评分检查的内容。将其 JSON 编码,然后作为一个查询参数传递。W3C WebDriver 规范要求符合标准的自动化设置 webdriver 标志;云浏览器不携带它,因此一致的指纹没有与之相矛盾的证据。

python Copy
import json
from urllib.parse import quote, urlencode

def fingerprint_cdp_url() -> str:
    fingerprint = {
        "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
        "platform": "Windows",
        "screen": {"width": 1920, "height": 1080},
        "localization": {"languages": ["en-US", "en"], "timezone": "America/New_York"},
    }
    params = {
        "token": os.environ["SCRAPELESS_TOKEN"],
        "sessionTTL": 180000,
        "fingerprint": quote(json.dumps(fingerprint)),
    }
    return f"wss://browser.scrapeless.com/api/v2/browser?{urlencode(params)}"

将爬取路由通过选择的区域

proxyCountry 更改为 ISO 国家代码以选择住宅出口;在验证期间对 IP 回显端点的检查确认退出 IP 为美国住宅地址,navigator.webdriver 读取为 false

python Copy
params = {
    "token": os.environ["SCRAPELESS_TOKEN"],
    "sessionTTL": 180000,
    "proxyCountry": "DE",   # 或 "US", "JP", "ANY"
}

当本地 Chromium 停止时

在自己的 Chromium 上运行 Crawl4AI 适合开放的、未受保护的页面。问题出现在目标对浏览器评分的地方:一个从未将其内容附加到无头默认的客户端渲染的应用程序、一个在数据中心 IP 上停滞的挑战中间页,或者一个希望在访问过程中保持稳定身份的登录墙。每一个都是指纹、行为或 IP 问题——正是云浏览器处理服务器端的三类问题。将浏览器转移给 Scrapeless,将这些情况交给管理会话,而您的 arun() 调用和提取策略保持不变。


您获得的回馈

结果是标准的 Crawl4AI 对象——status_codemetadatamarkdownlinksmedia 和您配置的任何结构化提取。从在云浏览器上运行的一些真实观察:

  • navigator.webdriver 不存在,因此网站运行的第一个检查像真实的 Chrome 一样读取。
  • 这里的 sessionTTL 以毫秒为单位——Crawl4AI 的 CDP 模式直接传递该值,因此 180000 是三分钟,而不是 180。
  • 出口 IP 与 proxyCountry 匹配 — 地理限制页面会如本地访问者所见。
  • wait_for 仍然主导准备状态 — 使用 CSS 条件(css:body,内容选择器),确保 arun() 在客户端渲染附加后读取页面,而不是在之前。

结论:相同的爬虫,更干净的浏览器

Crawl4AI 决定提取内容;Scrapeless 决定浏览器在网站上的表现。集成有两个设置 — browser_mode="cdp"cdp_url — 其余的流程保持不变。将 proxyCountry 固定在一个住宅区域,传递一致的 fingerprint,并重用 profileId 进行认证爬取。有关如何将另一个 Python 爬虫库接入同一云浏览器,请参见 Scrapling 生产爬虫指南,并在 Scrapeless 定价页面 比较计划。


准备好构建您的 AI 驱动爬取管道了吗?

加入我们的社区以获取免费计划,并与构建 Crawl4AI 管道的开发者联系: Discord · Telegram

app.scrapeless.com 注册以获取免费的爬取浏览器运行时,并将 Crawl4AI 的 cdp_url 指向目标无法指纹识别的云浏览器。


常见问题

问:我需要更改我的 Crawl4AI 提取代码吗?
不需要。您只需更改浏览器的创建方式 — browser_mode="cdp" 加上 cdp_url — 爬虫生命周期、CrawlerRunConfig、提取策略和 markdown 输出保持完全不变。

问:为什么不直接在本地 Chromium 上运行 Crawl4AI?
本地 Chromium 在您的 IP 上运行,通过 navigator.webdriver 宣告自动化,并需要您维护隐蔽补丁。云浏览器是一个管理会话,带有捆绑的住宅出口和一致的指纹 — 相同的爬虫 API,无需维护。

问:我需要代理吗?
不需要。住宅出口是内置的 — 将 proxyCountry 设置为一个地区或 ANY。无需配置单独的代理。

问:sessionTTL 是以秒还是毫秒为单位?
在 Crawl4AI 的 CDP 模式中,值以毫秒的形式传递,因此 180000 意味着三分钟。时间设置要足够长以覆盖完整的爬取。

问:使用 Crawl4AI 进行网页爬取合法吗?
访问公开可用的数据通常是被允许的,但各地区和网站的规则各不相同。请查看目标网站的服务条款,遵守 robots 指令,并咨询法律顾问以处理敏感事务。

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

最受欢迎的文章

目录