关于 alterlab
alterlab 是面向 Claude、Cursor 和 Windsurf 等 MCP 客户端的网站抓取服务,可返回网页内容、结构化数据和截图。它按需逐级选择抓取方式,并支持反爬处理与 JavaScript 渲染。
主要功能
- 01抓取网页并输出多种格式
- 02按配置抽取结构化数据
- 03渲染 JavaScript 页面
- 04自动升级抓取方式
- 05生成截图、PDF 与 OCR 文本
- 06管理登录会话并抓取受限页面
适用场景
- 01提取商品、文章或职位信息
- 02采集由 JavaScript 渲染的页面
- 03为页面生成截图或 PDF
- 04抓取需要登录的网页内容
MCP 相关
该 MCP 服务向客户端提供抓取、结构化抽取、截图、成本估算、异步任务和会话管理工具。客户端通过配置 API key 连接服务。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
AlterLab MCP Server
让 Claude、Cursor 和 Windsurf 能够抓取任意网站、提取结构化数据并截取屏幕截图,同时自动绕过反机器人机制。
免费开始 → 注册即享 1 美元免费额度 — 最多可抓取 5,000 次。
一行安装
Claude Code
claude mcp add alterlab -- npx -y alterlab-mcp-server@latest
然后设置 API 密钥:export ALTERLAB_API_KEY=sk_live_...,或将其添加到 .claude.json(请参阅下方的完整设置)。
Cursor
# Add to .cursor/mcp.json — see full config below
Smithery
npx -y @smithery/cli install alterlab-mcp-server --client claude
为什么选择 AlterLab,而不是 WebFetch 或 Browser MCP?
Claude 内置的 WebFetch 工具和开源浏览器 MCP 服务在大多数真实网站上都会失效。它们无法绕过 Cloudflare、渲染 JavaScript 单页应用或提取结构化数据。
AlterLab 以一个 MCP 服务取代失效的抓取工具,真正有效:
| 功能 | WebFetch / fetch() | Browser MCP | AlterLab MCP |
|---|---|---|---|
| 绕过反机器人机制(Cloudflare、DataDome、Akamai) | 否 | 部分支持 | 是 — 自动绕过 |
| JavaScript 渲染(React、Angular、Vue 单页应用) | 否 | 是(较慢) | 是 — 无头 Chromium |
| 提取结构化数据(JSON、Schema.org) | 否 | 否 | 是 — 内置配置 |
| 智能层级升级(优先使用成本最低的方法) | 不适用 | 不适用 | 是 — 节省 60-80% |
| 轮换住宅代理(195+ 个国家/地区) | 否 | 否 | 是 |
| 截取屏幕截图和生成 PDF | 否 | 仅屏幕截图 | 是 — 两者都支持 |
| 从图像中提取 OCR 文本 | 否 | 否 | 是 |
| 每次请求的费用 | 免费(但会失败) | 免费(但速度较慢) | 低至 $0.0002 |
AlterLab 如何进行网页抓取?
AlterLab 使用多层抓取架构,会自动选择能够获取每个 URL 的成本最低的方法:
- Curl($0.0002/次请求)— 用于静态页面、RSS 源和公共 API 的直接 HTTP 请求
- HTTP($0.0003/次请求)— 通过轮换 TLS 指纹访问防护适中的网站
- Stealth($0.002/次请求)— 通过模拟浏览器访问受 Cloudflare/DataDome 保护的网站
- Light JS($0.0025/次请求)— 从服务端渲染的 HTML 中轻量提取 JS
- Browser($0.004/次请求)— 使用完整的无头 Chromium 处理 JavaScript 密集型单页应用
自动模式从第 1 层开始,仅在遇到拦截时升级。大多数网站都能通过第 1-2 层获取,因此根据目标网站不同,1 美元可完成 1,000 到 5,000 次抓取。
安装
在 Claude Desktop / Claude Code 中安装
将以下内容添加到 Claude 配置文件中(Claude Code 使用 ~/.claude.json,Claude Desktop 请在设置中配置):
{
"mcpServers": {
"alterlab": {
"command": "npx",
"args": ["-y", "alterlab-mcp-server@latest"],
"env": {
"ALTERLAB_API_KEY": "sk_live_your_key_here"
}
}
}
}
在 Cursor 中安装
将以下内容添加到项目根目录下的 .cursor/mcp.json:
{
"mcpServers": {
"alterlab": {
"command": "npx",
"args": ["-y", "alterlab-mcp-server@latest"],
"env": {
"ALTERLAB_API_KEY": "sk_live_your_key_here"
}
}
}
}
在 Windsurf 中安装
将以下内容添加到 Windsurf MCP 设置中(~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"alterlab": {
"command": "npx",
"args": ["-y", "alterlab-mcp-server@latest"],
"env": {
"ALTERLAB_API_KEY": "sk_live_your_key_here"
}
}
}
}
通过 Smithery 安装
npx -y @smithery/cli install alterlab-mcp-server --client claude
获取 API 密钥
- 免费注册 — 注册后可获得价值 $1 的免费余额
- 前往 Dashboard → API Keys 并复制密钥
- 将密钥粘贴到 MCP 配置中的
ALTERLAB_API_KEY字段
工具
alterlab_scrape — 抓取任意网页
抓取 URL,并以 Markdown、文本、HTML 或 JSON 格式返回内容。自动通过逐级升级处理反机器人保护。默认返回 Markdown,针对大模型上下文窗口进行了优化。
"Scrape https://www.amazon.com/dp/B0BSHF7WHW and summarize the product"
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
url | string | 必填 | 要抓取的 URL |
mode | auto | html | js | pdf | ocr | auto | 抓取模式 |
method / body / content_type / headers | enum / string / enum / object | GET | 支持 POST(费用为 1.5 倍)和自定义目标标头 |
formats | (text|json|json_v2|html|markdown|rag|content|raw)[] | ["markdown"] | 输出格式 |
extraction_schema / extraction_prompt | object / string | — | 大模型提取(+$0.001) |
extraction_profile / extraction_template | enum | — | auto、product、article、job_posting、faq、recipe、event、ecommerce_homepage、directory_listing(template 是已弃用的别名) |
extraction_provider / extraction_model | enum / string | — | BYOK 大模型选择 |
evidence、promote_schema_org、filter_content | boolean | — | 提取行为 |
cache、cache_ttl、force_refresh | boolean / number / boolean | — | 响应缓存(cache_ttl 为 60-86400) |
render_js | boolean | "auto" | API 默认值 | 无头浏览器(强制使用 Browser 层级,$0.004) |
use_proxy、proxy_country | boolean, string | — | 高级代理(+$0.0002)和地理定位 |
use_own_proxy、use_system_proxy、proxy_integration_id | boolean, boolean, string | — | 自带代理选择 |
skip_tls_verification | boolean | — | 省略(推荐)= 验证,遇到无效证书时回退;true 跳过验证,false 要求证书有效 |
wait_for、wait_until、wait_condition | string | — | 选择器 / 加载事件等待 |
actions | object[](最多 20 项) | — | 浏览器操作:wait、wait_for、click、fill、press、scroll、infinite_scroll、screenshot、evaluate |
screenshot、generate_pdf、ocr | boolean | — | 附加功能(+$0.0002 / +$0.0004 / +$0.001) |
scroll_to_load、scroll_count、enable_scroll | boolean / 1-10 / boolean | — | 懒加载处理 |
include_iframes、flatten_shadow_dom、block_images、remove_cookie_banners | boolean | — | 渲染选项 |
section_filter | object | — | 筛选 json_v2 分区 |
session_id、cookies、session_headers | UUID, object, object | — | 已通过身份验证的抓取 |
sticky_session、sticky_session_ttl | string, 300-7200 | — | 在多次调用间复用 Cookie 和出口 IP(付费计划) |
location | {country, language} | — | 地理定位 |
cost_controls | object | — | force_tier、max_tier、max_credits、prefer_cost、prefer_speed、fail_fast、time_budget(也可在顶层使用 prefer_cost、prefer_speed、fail_fast) |
embeddings | object | — | enabled、model、chunk_size、chunk_overlap(+$0.001/页) |
sync_policy | auto | wait_until_deadline | auto | 长时间抓取时的等待行为 |
timeout、max_response_bytes、include_raw_html | number, number, boolean | 90、5 MB、false | 限制和原始输出 |
estimate_first | boolean | false | 先免费估算费用 |
未公开:source(仪表板跟踪标签)、sync(此工具始终为同步)、webhook_url(请使用 alterlab_batch/alterlab_crawl Webhook)。如果抓取耗时超过约 85 秒的同步窗口,工具会返回 job_id;请使用 alterlab_get_job 获取结果。
alterlab_extract — 提取结构化数据
使用预置配置或自定义 JSON Schema,从 HTML、文本或 Markdown 内容中提取结构化字段。返回整洁的 JSON,方便用于数据库、电子表格或后续处理。
"Extract the product name, price, and rating from this Amazon page"
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
content | string (max 500,000) | 必填 | 你已有的 HTML、文本或 Markdown 内容(此工具不会获取 URL) |
content_type | html | text | markdown | html | content 的类型 |
extraction_profile / extraction_template | enum | — | 配置:auto、product、article、job_posting、faq、recipe、event、ecommerce_homepage、directory_listing |
extraction_schema | object | — | 用于结构化输出的自定义 JSON Schema |
extraction_prompt | string | — | 自然语言提取指令 |
extraction_provider / extraction_model | enum / string | — | BYOK 大模型选择 |
formats | enum[] | ["json"] | 输出格式 |
source_url、evidence | string, boolean | — | 上下文 URL 和来源信息 |
cache、cache_ttl | auto | skip | only、number | auto | 提取结果缓存 |
如需一步完成抓取和提取,请将 extraction_schema 与 alterlab_scrape 配合使用。
提取配置:
- 产品 — 名称、价格、货币、评分、评论、可用性、图片、描述
- 文章 — 标题、作者、发布日期、正文、主图
- 职位发布 — 标题、公司、地点、薪资、描述、要求
- 常见问题 — 问答对
- 食谱 — 食材、步骤、准备时间、份数
- 活动 — 名称、日期、地点、描述、组织者
alterlab_screenshot — 截取任意页面
截取任意 URL 的整页屏幕截图。直接在对话中返回 PNG 图片,无需复制 URL,也无需下载文件。
"Take a screenshot of our landing page at https://alterlab.io"
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
url | string | 必填 | 要截图的 URL |
wait_for | string | — | 截图前等待的 CSS 选择器 |
wait_until | enum | networkidle | networkidle、domcontentloaded 或 load |
timeout | number | 90 | 超时时间,单位为秒(1-300) |
use_proxy、proxy_country | boolean, string | — | 高级代理和地理定位 |
session_id、cookies | UUID, object | — | 截取需要登录才能访问的页面 |
location | {country, language} | — | 地理定位 |
alterlab_estimate_cost — 抓取前估算费用
在执行抓取前,查看预计费用。返回预测等级、每次请求的费用和置信度。
"How much would it cost to scrape linkedin.com?"
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
url | string | 必填 | 要估算的 URL |
mode | enum | auto | 抓取模式 |
method | GET | POST | GET | POST 的费用为 1.5 倍 |
render_js | boolean | "auto" | false | 计入 JS 渲染费用 |
use_proxy、use_own_proxy | boolean | false | 计入代理费用 / BYOP 折扣 |
screenshot、generate_pdf、ocr | boolean | — | 计入附加功能费用 |
alterlab_get_job — 获取异步任务
获取返回了 job_id 的抓取任务的状态和结果(即超出同步等待时限的抓取任务)。参数:job_id(string,必填)。
alterlab_check_balance — 查看账户余额
查看账户余额、累计充值金额和累计支出金额。无需参数。
"Check my AlterLab balance"
alterlab_list_sessions — 列出已存储的会话
列出所有用于身份验证抓取的已存储会话。会话包含特定域名的 Cookie,可用于抓取登录墙后的内容。
"List my stored sessions"
alterlab_create_session — 创建会话
使用已登录浏览器中的 Cookie 创建新的已存储会话。会话会安全存储,可在多个抓取请求中重复使用。
"Create an Amazon session with these cookies: session-id=abc123, session-token=xyz789"
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
name | string | 必填 | 易于识别的名称(例如,“我的 Amazon 账户”) |
domain | string | 必填 | 域名(例如,“amazon.com”) |
consent | boolean | 必填 | 必须为 true:明确同意存储 Cookie(否则 API 会拒绝创建) |
cookies | Record<string,string> | cookie objects[] | — | Cookie,可以是键值对,也可以是 {name, value, domain, path, ...} 对象 |
headers | Record<string,string> | — | 自定义请求头(例如,User-Agent) |
expires_at, notes | string | — | 到期时间(ISO 8601)和备注 |
auto_refresh_enabled, notify_before_expiry, notify_on_failure | boolean | true | 健康检查和通知 |
organization_id, shared | UUID, boolean | — | 组织共享 |
alterlab_validate_session — 验证会话
检查已存储的会话是否仍处于活动状态,以及其 Cookie 是否有效。
"Is my Amazon session still valid?"
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
session_id | string (UUID) | 必填 | 要验证的会话 ID |
alterlab_delete_session — 删除会话
永久删除已存储的会话及其 Cookie。
"Delete session abc-123-def"
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
session_id | string (UUID) | 必填 | 要删除的会话 ID |
身份验证抓取
AlterLab MCP 支持抓取需要身份验证的页面。这使 AI Agent 能够访问用户专属内容,例如订单历史记录、账户面板和会员专享价格。
工作原理
- 使用
alterlab_create_session,通过已登录浏览器中的 Cookie 创建会话 - 将
session_id传递给alterlab_scrape,以抓取经过身份验证的页面 - 使用列出、验证和删除工具管理会话
示例:查看 Amazon Prime 价格
User: "What's my Prime member price for this product?"
Claude: [calls alterlab_list_sessions → finds Amazon session]
Claude: [calls alterlab_scrape with session_id for authenticated pricing]
Claude: "The Prime member price is $24.99 (public price: $34.99)"
内联 Cookie 与已存储会话
- 已存储会话(
session_id):适合反复访问同一域名。创建一次,即可在多个请求中重复使用。 - 内联 Cookie(
cookies):适合不需要保存会话的一次性身份验证请求。
使用 AlterLab MCP 可以做什么?
研究与分析
让 Claude 实时抓取和分析网站:
- “抓取这次 Google 搜索的前 5 条结果并总结”
- “提取这个 Amazon 类目页面中的所有商品价格”
- “比较这 3 个竞争对手的定价页面”
使用真实数据生成代码
让 Cursor 或 Windsurf 在开发过程中获取实时数据:
- “抓取这个 API 文档页面,并据此生成 TypeScript 类型”
- “提取这个网站的配色方案并创建 Tailwind 配置”
- “截取这个设计的屏幕截图,并用 React 重现”
内容与 SEO
使用 Claude 大规模分析内容:
- “抓取这篇博客文章并提出 SEO 改进建议”
- “提取这个帮助中心中的所有常见问题条目并创建结构化数据集”
- “将我们的落地页与竞争对手的页面进行比较,找出差距”
监控与提醒
构建能够监控网络的 Agent 工作流:
- “查看这个商品是否已补货”
- “每天抓取这个页面,并在价格低于 $50 时提醒我”
- “监控这个招聘网站是否有新的高级工程职位”
定价 — 按需付费的网页抓取
无订阅,无月度最低消费。充值后,随时按需使用。
基础抓取费用
| 层级 | 方法 | 每次请求费用 | 适用场景 |
|---|---|---|---|
| Curl | 直接 HTTP | $0.0002 | 静态页面、RSS 源、公共 API |
| HTTP | TLS 指纹识别 | $0.0003 | 有基本机器人检测的网站 |
| Stealth | 浏览器模拟 | $0.002 | 受 Cloudflare、DataDome、PerimeterX 保护的网站 |
| Light JS | JSON 提取 | $0.0025 | 需要结构化数据的服务端渲染页面 |
| Browser | 无头 Chromium | $0.004 | 完整 JavaScript SPA(React、Angular、Vue) |
可选附加项
| 附加项 | 额外费用 | 说明 |
|---|---|---|
| JavaScript 渲染 | 强制使用 Browser 层级 | 无单独附加项:render_js 按 Browser 层级计费($0.004) |
| PDF 生成 | +$0.0004 | 生成渲染后页面的 PDF |
| 大模型提取 / 嵌入 | +$0.001 | extraction_schema / extraction_prompt、embeddings |
| POST 请求 | x1.5 | method: "POST" 的费用为对应层级价格的 1.5 倍 |
| 自有代理(BYOP) | -20% | use_own_proxy 可享受层级价格折扣 |
| 搜索 | $0.001 / $0.004 | duckduckgo / google 和 bing 引擎 |
| 截图 | +$0.0002 | 整页 PNG 截图 |
| 高级代理 | +$0.0002 | 可定位地理位置的住宅代理(195 个以上国家/地区) |
| OCR 文本提取 | +$0.001 | 提取页面图片中的文本 |
$1 = 5,000 次轻量抓取。 新账户注册后可获得 $1 免费余额。
环境变量
| 变量 | 必需 | 默认值 | 说明 |
|---|---|---|---|
ALTERLAB_API_KEY | 是 | — | 你的 API 密钥(免费获取) |
ALTERLAB_API_URL | 否 | https://api.alterlab.io | API 基础 URL(用于自托管或开发) |
常见问题
如何为 Claude、Cursor 或 Windsurf 添加网页抓取功能?
安装 AlterLab MCP 服务。对于 Claude Code,运行 claude mcp add alterlab -- npx -y alterlab-mcp-server@latest,并设置你的 ALTERLAB_API_KEY。对于 Claude Desktop、Cursor 或 Windsurf,将 JSON 配置块添加到 MCP 设置文件中。配置完成后,你的 AI 助手便可在对话中直接抓取任意 URL、提取结构化数据并截取屏幕截图。
Claude 能抓取受 Cloudflare 或反机器人保护的网站吗?
可以。AlterLab 会自动处理 Cloudflare、DataDome、PerimeterX、Akamai 和其他反机器人系统。它采用多层级方案,从费用最低的方法开始,仅在遇到拦截时才升级。你无需进行任何配置——反机器人绕过完全自动化。
什么是 MCP 服务?它如何与 Claude 配合使用?
MCP(Model Context Protocol)是 Anthropic 制定的开放标准,用于将 AI 助手连接到外部工具和数据源。MCP 服务是一个小型程序,可提供网页抓取等工具,供 Claude、Cursor 或 Windsurf 在对话中调用。AlterLab MCP 服务为你的 AI 助手提供 23 种工具:抓取、提取、截图、爬取、搜索、映射、批量抓取、会话管理、Beta 功能等。
AlterLab 与 Firecrawl、ScrapingBee 或 Apify MCP 服务有何不同?
AlterLab 的单次请求费用低至 $0.0002,比大多数抓取 API 便宜 5 到 20 倍,因为只有网站确实需要时才会使用昂贵的浏览器渲染。智能层级升级意味着你只需为每个网站所需的处理方式付费,而非最高档费用。AlterLab 还内置了结构化数据提取功能,并提供预置配置文件(商品、文章、招聘信息等)。
我可以通过 Claude 抓取 Amazon、Walmart 等电商网站吗?
可以。AlterLab 可处理所有主流电商网站的反机器人保护。使用 alterlab_extract 工具并设置 extraction_profile: "product",即可获取结构化 JSON:商品名称、价格、货币、评分、评价数量、库存情况和图片,可直接用于分析、比较或数据管道。
Cursor 能抓取文档并据此生成代码吗?
可以。在 Cursor 中安装 AlterLab MCP 后,你可以让它抓取 API 文档、库文档或任何参考页面,并根据实时内容生成 TypeScript 类型、API 客户端或组件代码。这比依赖可能已经过时的大模型训练数据更可靠。
AlterLab MCP 能处理使用大量 JavaScript 的网站(React、Angular、Vue)吗?
可以。使用 render_js: true 或设置 mode: "js",即可启用完整的无头 Chromium 渲染。AlterLab 会渲染完整页面,包括所有 JavaScript,等待动态内容加载,然后从完全渲染后的 DOM 中提取内容。这适用于 React、Angular、Vue、Next.js 以及任何其他 JavaScript 框架。
哪种输出格式最适合 AI 和大模型的上下文窗口?
使用 markdown(默认格式)。它能保留文档结构 — 标题、表格、列表、链接 — 同时比原始 HTML 小 60-80%。Claude、GPT-4 和其他大模型处理 markdown 的效果明显优于 HTML。AlterLab 的 markdown 输出专为大模型上下文窗口优化。
有速率限制吗?
免费套餐账户有速率限制。充值任意金额即可解除速率限制。MCP 服务会针对临时速率限制错误(429)自动进行指数退避重试。
我可以使用此 MCP 服务进行大规模抓取吗?
可以。并行抓取时,使用 alterlab_batch 在单个请求中抓取最多 100 个 URL — 比顺序调用快得多。要抓取整个域名,请使用 alterlab_crawl。你还可以构建按顺序抓取多个 URL 的 Agent 工作流,或使用 n8n 集成实现工作流自动化。
错误处理
MCP 服务会返回实用的错误消息,并建议后续操作:
| 错误 | 结果 | 建议操作 |
|---|---|---|
| 401 未授权 | API 密钥无效 | 检查 ALTERLAB_API_KEY 是否设置正确 |
| 402 额度不足 | 余额过低 | 运行 alterlab_check_balance,然后充值 |
| 403 禁止访问 | 网站阻止了请求 | 尝试 render_js: true + use_proxy: true |
| 429 速率受限 | 请求过多 | 自动退避重试 |
| 504 网关超时 | 抓取耗时过长 | 增加 timeout,简化请求 |
Agent 工作流 — 能够抓取网页的 AI Agent
AlterLab MCP 可将任何 AI Agent 转变为能够访问网页的 Agent。你的 Agent 无需依赖过时的训练数据,而是可以在运行期间从任何网站获取实时信息。
AI Agent 的使用场景
- 研究 Agent — 抓取多个来源、交叉核对事实,并生成带引用的报告
- 数据管道 Agent — 按计划提取结构化的产品、价格或职位数据
- 竞争情报 — 监控竞争对手页面、跟踪价格变化、检测新功能
- 内容生成 — 抓取真实数据,让大模型输出基于事实而非幻觉
- 潜在客户信息补充 — 抓取公司网站,用实时数据补充 CRM 记录
- 合规监控 — 检查监管页面、服务条款和政策更新
兼容的 AI 框架和客户端
适用于任何支持 MCP(Model Context Protocol)的工具:
- Claude Desktop / Claude Code — Anthropic 的 AI 助手
- Cursor — AI 驱动的代码编辑器
- Windsurf — Codeium 的 AI IDE
- Cline — VS Code AI 助手
- GitHub Copilot — 通过 MCP 配置使用
- 自定义 Agent — 任何使用 MCP SDK(Python、TypeScript、Go)的框架
- n8n — 通过 n8n-nodes-alterlab 实现工作流自动化
贡献
git clone https://github.com/RapierCraft/alterlab-mcp-server.git
cd alterlab-mcp-server
npm install
npm run build
Support
License
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。