mcpField
S
Scrape-LE

Scrape-LE

本地服务
letools.dev浏览器自动化11 天前更新

关于 Scrape-LE

Scrape-LE 在无头 Chromium 中检查 URL,帮助开发者在编写抓取程序前评估抓取条件。它报告页面信息,并检测 robots.txt 规则、速率限制、反爬信号和身份验证拦截。

主要功能

  1. 01在无头 Chromium 中加载 URL
  2. 02针对路径评估 robots.txt 规则
  3. 03检测速率限制和反爬信号
  4. 04报告身份验证拦截和页面错误
  5. 05截取完整页面截图

适用场景

  1. 01编写抓取程序前检查目标页面
  2. 02核对爬虫权限和抓取延迟规则
  3. 03诊断被拦截或要求登录的页面

MCP 相关

MCP 服务通过 stdio 提供 `analyze_robots_txt` 工具。它评估传入的 robots.txt 内容和路径,不会抓取 URL 或发起网络请求。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"nolindnaidoo-scrape-le": {
"command": "npx",
"args": [
"-y",
"scrape-le-mcp"
]
}
}
}
启动命令npx -y scrape-le-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmscrape-le-mcp2.6.0

工具

1

收录的工具列表 · 更新于 今天

参数类型必填说明
pathstring是要检查的路径,例如 "/admin"。接受完整 URL,并将其简化为路径。
agentstring否要模拟的爬虫,例如 "Googlebot" 或 "MyBot/1.0";按产品标识进行不区分大小写的匹配。省略时,返回通用规则的结果。
contentstring是robots.txt 文件的内容。
maxResultsinteger否返回的禁止访问路径数量上限(默认值为 500)。meta.truncated 报告是否有结果被丢弃。

详细介绍

Scrape-LE 徽标

Scrape-LE:轻松检查网站可抓取性

在无头 Chromium 中加载 URL,看看哪些因素会阻止你的抓取程序——在编写之前
反机器人服务商、速率限制、robots.txt 规则、登录墙、控制台错误、屏幕截图

从 VS Code Marketplace 安装 Open VSX 下载量 npm 上的 scrape-le-mcp npm 上的 scrape-le crates.io 上的 scrape-le LE Tools


VS Code 中的 Scrape-LE

觉得有用? 点赞或评分能帮助其他开发者找到它 — ★ GitHub · ★ Open VSX · ★ Marketplace

功能

运行 Scrape-LE: Check URL Scrapeability,输入 URL,页面就会在真实的无头 Chromium 中加载。报告会显示在输出面板中,包含 HTTP 状态、页面标题、加载时间、控制台错误、整页屏幕截图和四项检测结果。支持 VS Code,以及 Cursor 和 VSCodium 等基于 VS Code 的编辑器(可从 Open VSX 安装)。

一次性设置:运行 Scrape-LE: Setup Browser 安装 Chromium(约 130MB,安装到 Playwright 的浏览器缓存中)。

安装

位置可获得的功能安装
VS Code在编辑器中通过快捷键执行同一项检查Marketplace
Cursor、VSCodium、Windsurf同一款扩展Open VSX
终端或 CI 步骤对单个 URL 或一批 URL 执行同一项检查,并返回退出代码npx scrape-le · npm 或 cargo install scrape-le · crates.io
任何 MCP Agent,通过 Node 使用通过 stdio 调用 analyze_robots_txtnpx scrape-le-mcp · npm

在 AI Agent 中使用

同一引擎也可作为 MCP 服务运行,因此 Agent 可以直接调用它,无需你运行命令。

编辑器用法
VS Code 1.101+无需安装任何内容——该扩展会在 Agent 模式下注册 analyze_robots_txt
Claude Codeclaude mcp add scrape-le -- npx -y scrape-le-mcp
Cursor、Windsurf 和其他工具将其指向 npx scrape-le-mcp

Claude Code 中的 Agent 调用 scrape-le MCP 服务

analyze_robots_txt(content, path, agent?, maxResults?)

给定 robots.txt 内容和一个路径,它会报告规则是否允许抓取该路径:如果有适用的组,则使用名称与 agent 匹配的组;否则使用通用(User-agent: *)规则,并在回答中的 agent 字段说明使用了哪个组。此外还会返回抓取延迟、禁止访问的模式以及站点地图。

服务接收内容并返回数据——它不会读取文件,也不会自行发起网络请求。它以 scrape-le-mcp 的名称发布在 npm 上,并以 io.github.nolindnaidoo/scrape-le 的名称发布在 MCP 注册表中。

手动配置 — 适用于任何带有 MCP 配置文件的宿主

大多数宿主读取 JSON 配置。添加一条配置:

{
  "mcpServers": {
    "scrape-le": {
      "command": "npx",
      "args": ["-y", "scrape-le-mcp"]
    }
  }
}

-y 会跳过首次运行时的安装提示。如果不想跟踪新版本,可以固定版本——[email protected]。

不想每次启动都通过 npx 运行?可以安装一次,然后指向二进制文件:

npm install -g scrape-le-mcp
{
  "mcpServers": {
    "scrape-le": { "command": "scrape-le-mcp" }
  }
}

它通过 stdio 使用 MCP 通信,无需环境变量、API 密钥或自行配置。将它接入其他内容之前,可以先进行检查:

echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | npx -y scrape-le-mcp

该命令会打印工具列表并退出——如果看到 analyze_robots_txt,说明服务正常运行。

命令行工具

同一项检查既可以在终端中运行,也可以在 Agent 循环中运行:本仓库 crate/ 中的 Rust 命令行工具与扩展共享一套签名语料库——crate/signatures/ 和 crate/fixtures/——因此,如果两者对某个 URL 的判断不一致,CI 就会失败。

scrape-le https://example.com/search   # summary on stderr, JSON on stdout when piped
scrape-le --input urls.txt             # a batch, streamed as it completes
scrape-le mcp                          # the same check over MCP on stdio

终端中的 scrape-le

可从 npm 安装(scrape-le),也可从 crates.io 安装(scrape-le)。两种方式安装的都是同一个 scrape-le 命令。

npm 上的 scrape-le crates.io 上的 scrape-le

npm install -g scrape-le   # or run it once: npx scrape-le
cargo install scrape-le

退出码就是判断结果:0 表示允许 · 1 表示确实不允许 · 2 表示问题格式错误。

检测

检测项工作原理
反机器人服务商根据响应标头、脚本来源、DOM 元素和 window 全局变量,识别 Cloudflare(包括 Turnstile 验证)、reCAPTCHA、hCaptcha、DataDome 和 PerimeterX
速率限制检查 X-RateLimit-* / RateLimit-* / Retry-After 响应标头,以及 HTTP 429
robots.txt获取 <origin>/robots.txt,并根据 RFC 9309 语义检查其对你的 URL 的规则——如果设置了 scrape-le.robotsTxt.agent 且该名称出现在分组中,则使用相应分组;否则使用 User-agent: *。报告会说明匹配的是哪个分组;支持按组匹配 Agent、Allow/Disallow 最长匹配、* 通配符、$ 锚点、crawl-delay 和站点地图
身份验证HTTP 401/403、登录表单(密码和用户名字段)、页面文本中的身份验证关键词,以及最终 URL 中的身份验证路径片段

如实说明其局限性:这些特征只是根据公开集成模式进行尽力识别——检测到验证组件意味着页面可能会发起验证,并不表示一定会;检测结果正常也不能证明网站允许抓取。如果 scrape-le.robotsTxt.agent 为空,则只检查 User-agent: * 分组。页面加载后最多等待 5 秒,直到网络空闲,因此页面级检测可能会漏掉此后才渲染的内容。

命令

命令说明
Scrape-LE: Check URL Scrapeability提示输入 URL 并执行完整检查
Scrape-LE: Check Selected URL检查当前选区中的 URL(也可通过右键菜单使用)
Scrape-LE: Setup Browser安装或验证 Chromium 浏览器
Scrape-LE: Open Settings打开 Scrape-LE 设置
Scrape-LE: Help & Troubleshooting内置文档

默认情况下,没有命令绑定快捷键。你可以在编辑器的键盘快捷方式中为任意命令设置快捷键。

设置

设置项默认值说明
scrape-le.browser.timeout30000页面加载超时时间,单位为 ms(5000–120000)
scrape-le.browser.viewport.width1280视口宽度
scrape-le.browser.viewport.height720视口高度
scrape-le.browser.userAgent""自定义 User-Agent(为空 = Chromium 默认值)
scrape-le.retry.userAgentsfalse检查被拦截或失败时,使用常见 User-Agent 重试,并报告哪个有效
scrape-le.screenshot.enabledtrue每次检查时保存整页截图
scrape-le.screenshot.path.vscode/scrape-le截图目录(相对于工作区或绝对路径)
scrape-le.screenshot.formatpngpng 或 jpeg
scrape-le.screenshot.quality90JPEG 质量,范围为 0–100(对 png 无效)
scrape-le.checkConsoleErrorstrue加载时捕获控制台和页面错误
scrape-le.detections.antiBottrue反机器人服务商检测
scrape-le.detections.rateLimittrue速率限制检测
scrape-le.detections.robotsTxttrue获取并检查 robots.txt
scrape-le.robotsTxt.agent""检查爬虫 robots.txt 时使用的 Agent,例如 Googlebot 或 MyBot/1.0;为空,或未出现在任何分组中时,使用 User-agent: * 规则
scrape-le.detections.authenticationtrue身份验证墙检测
scrape-le.notificationsLevelimportantall = 所有通知,important = 警告和错误,silent = 仅错误
scrape-le.statusBar.enabledtrue显示状态栏项

语言

除英语外支持 12 种语言:

德语 · 西班牙语 · 法语 · 印度尼西亚语 · 意大利语 · 日语 · 韩语 · 葡萄牙语(巴西)· 俄语 · 乌克兰语 · 越南语 · 简体中文

两部分内容均已翻译——清单(命令标题、设置名称和说明)以及扩展运行期间显示的所有内容(通知、状态栏、快速选择项和提示词)。扩展会遵循 VS Code 的显示语言,因此会与编辑器当前设置的语言一致;无需单独设置。

隐私与安全

  • 网络访问是该功能的组成部分,且范围有限。 每次检查只会访问两项内容:你输入的 URL(在无头 Chromium 中加载,该浏览器会像其他浏览器一样获取页面自身的资源)和该源的 /robots.txt。不会向其他任何地方发送数据——没有遥测,也没有分析数据。
  • 屏幕截图保存在本地,写入工作区内配置的路径。
  • MCP 服务完全不会发起网络请求——与扩展不同,这是有意为之。fetchRobotsTxt 会根据任意源构建 URL,在 Agent 循环中,这会成为一种 SSRF 原语:提供 URL 的调用方是模型,而不是你。该服务分析你已获取的 robots.txt 内容,并且有测试断言没有工具接受 url 参数。
  • 错误通知会隐藏主目录路径和类似凭据的片段。
  • 请尊重你检查的网站:可抓取性报告只是信息,并非许可。
  • 评分提示最多出现两次。 第 3 次成功使用时,扩展会询问你是否愿意评分;如果你选择了 Later 或将其关闭,则会在第 20 次时再询问一次。选择 Don't Ask Again 后便不会再询问。将 notificationsLevel 设为 important 或 silent 会关闭此功能。计数保存在 VS Code 的扩展存储中,不会向任何地方发送数据;点击 Rate 会在浏览器中打开你安装扩展时使用的市场页面——VS Code Marketplace 或 Open VSX。

文档

内容位置
工具可以说什么——范围、输出约定、拒绝事项、非目标crate/SPEC.md
扩展的构建与内部结构——架构、不变量、工具链、发布AGENTS.md
CLI 的构建与内部结构crate/AGENTS.md
变更内容CHANGELOG.md · crate/CHANGELOG.md
此工具的页面,以及其他 15 个工具letools.dev/tools/scrape-le

性能

输入大小命中数耗时速率扫描速度
标头签名扫描2.83 MB20,0007.24 ms2,762,876/sec390.5 MB/s
robots.txt 路径匹配3.32 MB60,00014.41 ms4,164,654/sec230.4 MB/s

在 Apple M5 Pro、24 GB 内存、Node 24.3.0 上预热后运行 7 次所得的中位数。输入由 scripts/benchmark.ts 生成,而非签入仓库,因此上述大小与实际测量值 完全一致。运行 bun run benchmark 即可复现。

这些数据因机器而异,不会在 CI 中进行断言——以基准测试作为构建门槛, 只能告诉你运行器当时有多忙。

测试

指标覆盖率
语句76.08%
分支68.02%
函数82.75%
行78.97%

共有 40 个文件中的 527 个测试用例,另有一个在真实 VS Code 扩展宿主中运行的集成测试套件,以及一个将构建好的 .vsix 安装到干净配置中的端到端测试。

数据由 scripts/coverage-readme.js 从实际运行生成,来源为 coverage/coverage-summary.json 和 coverage/test-results.json;如果本节内容发生偏差,CI 会失败。运行 bun run test:coverage 即可复现;用例数以 vitest 输出为准。

LE 系列的更多工具

为每个模型眼前的工作打造的 16 款单一用途工具。每款都附带一个 Rust CLI 和一个 MCP 服务。一页尽览:letools.dev

提取

  • String-LE — 提取代码库中的所有字符串,方便人工阅读
  • Numbers-LE — 提取代码库中所有硬编码数字,方便人工检查
  • Units-LE — 提取所有带单位的数量并统一格式,遇到含义不明确的数量时会按名称拒绝处理
  • Dates-LE — 提取所有日期和时间戳,并给出每个日期和时间戳解析出的确切时刻
  • IDs-LE — 提取所有 UUID、ULID、NanoID、ObjectId 和 Snowflake,并解码其中的时间
  • IPs-LE — 提取所有 IP 地址、CIDR 网段和 MAC 地址,统一格式并按范围分类
  • URLs-LE — 提取代码库中的所有 URL,并给出协议和确切位置
  • Paths-LE — 提取代码库中的所有文件路径,并说明它们是否仍指向实际内容
  • Colors-LE — 提取代码库中的所有颜色,并指出哪些颜色不在你的调色板中

检查

  • Regex-LE — 查找代码库中的所有正则表达式,并报告哪些可能导致灾难性回溯
  • Versions-LE — 查找某个依赖项在仓库的各个清单文件中受到不同约束的位置
  • i18n-LE — 识别项目使用的 i18n 库,然后依据该库的规则审查其目录
  • Scrape-LE — 在编写抓取器之前检查网页能否抓取,并说明何时无法判断

防护

  • Secrets-LE — 查找代码库中的硬编码凭据,绝不在报告中打印凭据
  • EnvSync-LE — 比较目录树中的 dotenv 文件,并指出哪些文件缺少哪些键
  • Unicode-LE — 查找那些隐藏含义的 Unicode 字符——双向控制字符、不可见字符、同形异义字符、混合文字系统

每款工具都独立运行:没有共享的 crate,也没有发布的核心库。若有两款工具得出相同结论,那是因为这个答案经得起两次验证。

联系 — nolindnaidoo.com · GitHub · LinkedIn

nolindnaidoo 的其他项目

Rust — pixelcoords 和 pixelactions 构成一个工作循环:pixelcoords 回答 位置,pixelactions 在那里执行操作。它们有各自的工具、各自的风格——不属于 LE 系列。

许可证

MIT © nolindnaidoo

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。