Skip to main content
Glama
zouzhengshi

scrapling-mcp

by zouzhengshi
README.md
# 🕷️ Scrapling MCP

## 📚 项目文档

| [📝 更新日志](https://github.com/zouzhengshi/scrapling-mcp/blob/main/CHANGELOG.md) | [🔐 安全说明](https://github.com/zouzhengshi/scrapling-mcp/blob/main/SECURITY.md) | [📄 MIT License](https://github.com/zouzhengshi/scrapling-mcp/blob/main/LICENSE) |
| :---: | :---: | :---: |
| 版本变化与发布记录 | 安全边界与漏洞报告 | 开源使用条款 |

面向 AI Agent 的安全、通用网页抓取 MCP 服务。

它把网页抓取、动态页面渲染和用户授权登录统一封装成 MCP 工具,
让支持 MCP 的 AI Agent 可以直接读取网页内容,不需要为每个网站重复编写爬虫代码。

## ✨ 核心功能

- 🕷️ **网页抓取**:读取公开网页,返回标题、正文、链接、状态码和摘要。
- 📚 **批量抓取**:一次抓取多个网页,并保持结果顺序。
- 🌐 **双引擎**:结合 Crawl4AI 和 Scrapling,支持 JavaScript 渲染和动态页面。
- 🔐 **登录抓取**:支持 Bilibili、YouTube、GitHub 等预设网站,也支持自定义 HTTPS 网站。
- 🍪 **本机登录态**:密码、验证码和 Cookie 不发送给 Agent,只保存在用户本机。
- 🛡️ **安全防护**:SSRF 防护、DNS 公网校验、域名 Cookie 隔离、资源限制和进程清理。
- 🌍 **代理支持**:支持系统代理、HTTP 代理和 SOCKS5 代理,适合需要 VPN 的网站。
- 🖥️ **CLI 管理**:查看状态、登录配置、工具开关、日志和 MCP 服务状态。
- 📝 **结构化结果**:返回成功状态、错误码、重试建议、摘要和截断信息,方便 Agent 理解。

## 🧩 提供的 MCP 工具

| 工具 | 用途 |
| --- | --- |
| `scrape` | 抓取一个网页 |
| `scrape_batch` | 批量抓取多个网页 |
| `login` | 打开预设网站的登录窗口 |
| `login_status` | 查询或保存预设网站登录状态 |
| `login_custom` | 打开自定义网站的登录窗口 |
| `login_custom_status` | 查询或保存自定义网站登录状态 |

## 🚀 安装和部署

需要 Python 3.11 或更高版本,支持 Windows、Linux 和 macOS。

### 🪟 Windows

#### 1. 下载项目

```powershell
git clone https://github.com/zouzhengshi/scrapling-mcp.git
cd scrapling-mcp
```

#### 2. 创建环境并安装依赖

```powershell
python -m venv scrapling_env
.\scrapling_env\Scripts\Activate.ps1
python -m pip install --upgrade pip
python -m pip install -e .
python -m playwright install chromium
python -m patchright install chromium
```

#### 3. 检查安装

```powershell
.\scrapling_env\Scripts\scrapling-mcp.exe --check
```

激活虚拟环境后,也可以直接使用 `scrapling-mcp --check`。

### 🐧 Linux

#### 1. 下载项目并创建虚拟环境

```bash
git clone https://github.com/zouzhengshi/scrapling-mcp.git
cd scrapling-mcp
python3 -m venv scrapling_env
source scrapling_env/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
```

#### 2. 安装浏览器运行环境

```bash
python -m playwright install chromium
python -m patchright install chromium
```

在 Ubuntu/Debian 上如果提示缺少系统库,可以执行:

```bash
python -m playwright install --with-deps chromium
```

#### 3. 检查安装

```bash
scrapling-mcp --check
```

### 🍎 macOS

#### 1. 下载项目并创建虚拟环境

```bash
git clone https://github.com/zouzhengshi/scrapling-mcp.git
cd scrapling-mcp
python3 -m venv scrapling_env
source scrapling_env/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
```

#### 2. 安装浏览器运行环境

```bash
python -m playwright install chromium
python -m patchright install chromium
```

#### 3. 检查安装

```bash
scrapling-mcp --check
```

## 🔌 连接 AI Agent

先激活虚拟环境,然后运行下面的命令生成当前电脑可直接使用的连接配置:

```bash
# Linux/macOS
source scrapling_env/bin/activate

# Windows PowerShell
.\scrapling_env\Scripts\Activate.ps1

scrapling-mcp guide
```

把输出的 JSON 添加到支持 stdio MCP 的 Agent 客户端中。连接命令必须使用你电脑上的实际路径,
不要直接复制其他电脑的路径。

MCP 服务通常由 Agent 客户端自动启动,不要把管理终端当作 MCP 服务连接。

## 🔐 登录后抓取

### 预设网站

以 Bilibili 为例:

```console
scrapling-mcp login bilibili
```

在弹出的浏览器中完成登录并关闭窗口,然后使用:

```console
scrapling-mcp login_status bilibili --finalize
scrapling-mcp scrape "https://www.bilibili.com/" --auth-profile bilibili
```

YouTube、GitHub、知乎、微博和小红书的用法相同,把网站名称替换为对应的预设名称即可。

### 没有预设的网站

```console
scrapling-mcp login_custom my-site "https://example.com/login" --allowed-domain example.com
scrapling-mcp login_custom_status my-site --finalize
scrapling-mcp scrape "https://example.com/account" --auth-profile my-site
```

登录过程中不要把密码、验证码或 Cookie 原文发送给 Agent。
目标网站的登录策略、验证码和反爬机制可能导致登录失败,工具不会承诺绕过这些限制。

## 🖥️ CLI 命令

```console
scrapling-mcp terminal    # 启动管理终端
scrapling-mcp status      # 查看运行状态
scrapling-mcp cookies     # 查看脱敏登录配置
scrapling-mcp tools       # 查看工具开关
scrapling-mcp logs calls  # 查看工具调用日志
scrapling-mcp restart     # 请求 MCP 客户端重新启动服务
scrapling-mcp doctor      # 检查依赖和配置
```

Agent 也可以直接通过 CLI 使用全部核心功能:

```console
scrapling-mcp scrape "https://example.com"
scrapling-mcp scrape_batch "https://example.com" "https://www.python.org"
scrapling-mcp login bilibili
scrapling-mcp login_status bilibili --finalize
```

## ⚙️ 代理配置

如果目标网站需要代理或 VPN,可以配置本机代理软件的 HTTP 或 SOCKS5 端口:

```powershell
# Windows PowerShell
$env:SCRAPLING_UPSTREAM_PROXY="http://127.0.0.1:7890"
```

```bash
# Linux/macOS
export SCRAPLING_UPSTREAM_PROXY="http://127.0.0.1:7890"
```

## 🛡️ 安全边界

- 默认只允许访问公网 HTTP/HTTPS 地址,阻止回环、内网和云元数据地址。
- Cookie 和浏览器登录状态按域名隔离,不会发送到未授权域名。
- 每次浏览器任务使用独立进程和临时目录,超时或取消后会清理进程树。
- 日志只记录脱敏的调用信息,不记录密码、Cookie 值或完整敏感参数。
- 网页内容是不可信外部数据,Agent 不应把网页中的指令当成系统指令。
- 只抓取你有权访问的内容,并遵守目标网站的服务条款和适用法律。

## ⚠️ 当前限制

本项目定位是网页读取和用户授权登录抓取工具,目前不支持:

- 递归整站爬取;
- 文件下载;
- PDF 解析;
- POST 页面和任意用户脚本;
- 保证绕过验证码或反爬挑战。