Skip to main content
Glama
cn-scraper-mcp
by goesByhc

这是什么

每个 AI Agent(Codex、Claude Code、Cursor、Trae)都能搜网页,但中文平台通常需要登录态、浏览器环境或平台专用参数:

  • 淘宝:需要浏览器一致的网络指纹和登录 Cookie

  • 京东:依赖已登录的本地浏览器环境

  • 小红书:需要住宅 IP、本地浏览器和搜索结果中的访问参数

  • 知乎:游客搜索已关闭,全部 API 需要登录态

  • 拼多多:平台限制严格,目前不推荐使用

  • 微博:搜索 API 需要登录态(SUB token),热搜游客即可访问

  • 抖音:需要浏览器登录并可能人工处理验证码

  • B站:搜索、热门、视频详情和评论可直接使用公开 API

  • 豆瓣:条目搜索、条目详情和短评/影评

  • 大众点评:商户搜索、商户详情和用户评价

  • 知识星球:付费社群,内容藏在 cookie 认证的 REST API 后面

这个项目就是把踩了好几个月的坑打包成一个 MCP Server——你的 Agent 一句话就能搜:taobao_search("儿童学习桌")。

安全与隐私

cn-scraper-mcp 在你的电脑上本地运行,不需要把 Cookie、账号密码或浏览器 Profile 上传到任何中转服务器:

  • Cookie 默认保存在 ~/.cn-scraper-cookies/,京东登录态保存在本地 Chrome Profile。

  • 登录过程直接发生在平台官方页面,软件不会读取或保存你的账号密码。

  • Cookie 值不会写入日志,也不会通过 MCP 工具结果返回给 Agent;工具只返回状态、字段名和本地路径等非敏感信息。

  • 发起抓取或在线登录验证时,凭证只会发送给对应平台域名。

  • 代码完全开源,所有凭证处理流程都可以审查。

建议仍像保护浏览器登录态一样保护本机账号:不要分享 Cookie 文件,不要把凭证提交到 Git,并限制本地文件的访问权限。


Related MCP server: rednote-analyzer-mcp

平台支持

电商

平台

方式

无需浏览器

限制

稳定性

淘宝/Tmall

curl_cffi + MTOP 签名

✅

宽松¹

✅ 稳定

京东/JD

Chrome CDP headful

需 Chrome

中等

✅ 稳定²

拼多多/PDD

Chrome CDP + iPhone UA

需 Chrome

单次搜索限制³

⚠️ 不推荐

¹ 淘宝无硬性限流,但平台可能随时收紧,不建议高频批量抓取。 ² 京东由本地 Chrome 生成登录态和动态签名,工具读取结构化 API 响应;通过 guided_login("jd") 可自动初始化持久化 Profile。 ³ 拼多多每个浏览器会话仅放行第一次搜索,之后永久"系统繁忙"。单次搜索结果零实用价值,引擎代码保留但不推荐使用。

内容社区

平台

方式

无需浏览器

限制

稳定性

小红书/XHS

本地 Chrome CDP + cookie

需 Chrome

中等⁴

✅ 稳定

知乎/Zhihu

REST API v4

✅

正常

✅ 稳定

知识星球/ZSXQ

REST API v2

✅

正常

✅ 稳定

微博/Weibo

REST API

✅

正常

✅ 稳定

抖音/Douyin ⚠️

Chrome CDP + 验证码轮询

需 Chrome

实验性⁵

⚠️ 实验性

B站/Bilibili

公开 Web API

✅

建议低频调用

✅ 稳定

豆瓣/Douban

移动端 JSON API

✅

搜索可能触发风控

⚠️ 依会话

大众点评/Dianping

公开网页解析

✅

可能触发页面风控

⚠️ 依页面结构

⁴ 小红书只允许住宅 IP——云浏览器/数据中心 IP 直接封。必须用本地 Chrome。 ⁵ 抖音搜索需要登录态 + 手动过滑块验证码。支持 120s 等待用户手动验证,通过后自动抓取。guided_login("douyin") 可引导登录。

快速开始

安装

pip install cn-scraper-mcp

也可以从源码安装开发版本:

git clone https://github.com/goesByhc/cn-scraper-mcp.git
cd cn-scraper-mcp
pip install .

安装并连接 MCP 后,直接让 Agent 调用:

guided_login(platform="weibo")

它会打开本地 Chrome 并进入平台官方登录页。你自己扫码或输入密码后,工具通过 CDP 自动读取完整 Cookie(包括 JavaScript 无法读取的 HttpOnly Cookie),再保存到本机 ~/.cn-scraper-cookies/。京东则保存到本地持久化 Chrome Profile。

这是推荐方式,因为它不会要求你复制 Cookie,不容易漏掉关键字段,也更适合 Cookie 过期后的重新登录。可用平台名包括 taobao、jd、xiaohongshu、zhihu、weibo、zsxq、douyin、pdd、douban 和 dianping。

已有通过远程调试端口启动且登录完成的 Chrome 时,也可以调用:

harvest_cookies(platform="weibo")

启动

cn-scraper-mcp
# 或: python -m cn_scraper_mcp.server

Docker

容器内预装 Chromium,无需本地浏览器:

docker build -t cn-scraper-mcp .
docker run -i --rm \
  -v ~/.cn-scraper-cookies:/root/.cn-scraper-cookies \
  -v ~/.jd_login_profile:/root/.jd_login_profile \
  cn-scraper-mcp

远程服务器部署可以切换到 HTTP transport,通过 IP + 端口 连接:

docker pull ghcr.io/goesbyhc/cn-scraper-mcp:latest
docker run -d --name cn-scraper-mcp \
  -p 8000:8000 \
  -e CN_SCRAPER_TRANSPORT=http \
  -e CN_SCRAPER_HOST=0.0.0.0 \
  -e CN_SCRAPER_PORT=8000 \
  -e CN_SCRAPER_PATH=/mcp \
  -v ~/.cn-scraper-cookies:/root/.cn-scraper-cookies \
  -v ~/.jd_login_profile:/root/.jd_login_profile \
  ghcr.io/goesbyhc/cn-scraper-mcp:latest

远程 MCP endpoint:

http://<server-ip>:8000/mcp

也可以使用 Docker Compose:

docker compose --profile remote up -d cn-scraper-http

可用环境变量:

变量

默认值

说明

CN_SCRAPER_TRANSPORT

stdio

stdio、http、sse,也接受 streamable-http 作为 http 别名

CN_SCRAPER_HOST

0.0.0.0

HTTP/SSE 模式监听地址

CN_SCRAPER_PORT

8000

HTTP/SSE 模式监听端口

CN_SCRAPER_PATH

/mcp

HTTP/SSE MCP endpoint 路径

远程 HTTP 模式会让 MCP 工具通过网络访问本机 Cookie/Profile 目录,请勿直接裸露公网端口。建议放在内网、VPN、防火墙白名单或带鉴权的反向代理后面。小红书、京东、抖音等依赖本地浏览器、住宅 IP 或人工验证码的平台,在远程服务器上的稳定性取决于服务器网络与图形环境。

当平台要求人工处理登录、验证码或风控页时,工具会返回统一的 ACTION_REQUIRED 结构,并在 action_required 字段中说明平台、原因、处理动作、处理链接和建议重试的工具。当前抖音验证码已接入该结构;远程 Docker 场景下仍需要你通过可见浏览器或后续 noVNC 网页完成验证。

Agent 集成配置:

# Codex ~/.codex/config.toml
[mcp_servers.cn-scraper]
command = "docker"
args = ["run", "-i", "--rm",
  "-v", "/本机绝对路径/.cn-scraper-cookies:/root/.cn-scraper-cookies",
  "-v", "/本机绝对路径/.jd_login_profile:/root/.jd_login_profile",
  "cn-scraper-mcp"]

请把 /本机绝对路径/ 替换为真实路径;MCP 客户端直接启动进程时不会替你展开 ~。

Docker 镜像内置 Chromium + --no-sandbox。京东 headful 模式如需 Xvfb,设置环境变量 XVFB_WRAPPER=1。小红书仍需住宅 IP——数据中心 IP 会被封。


MCP 工具一览

电商搜索

工具

说明

taobao_search

淘宝/天猫关键词搜索 → 价格、销量、店铺

taobao_product

淘宝商品详情 → 标题、价格、店铺

jd_search

京东关键词搜索 → SKU、价格、商品名

jd_product

京东商品详情 → 名称、价格、店铺、规格

pdd_search

拼多多搜索 → 仅首次有效

pdd_product_detail

拼多多商品详情 → 不限次数

内容社区

工具

说明

xiaohongshu_search

小红书笔记搜索 → 标题、作者、点赞、noteId、xsec_token

xiaohongshu_note

小红书笔记详情 → 标题、正文、作者、标签、互动数、发布时间

xiaohongshu_comments

小红书笔记首屏评论 → 评论内容、用户、点赞、时间(需要 noteId + xsec_token)

zhihu_search

知乎搜索 → 问题、文章

zhihu_hot_list

知乎热榜

zhihu_comments

知乎回答评论(支持分页)

zhihu_answer

知乎回答完整正文

zhihu_question_answers

知乎问题下的回答列表

weibo_search

微博搜索 → 微博帖子内容

weibo_hot_list

微博热搜榜

weibo_user_timeline

微博用户时间线

weibo_comments

微博帖子评论(支持分页)

weibo_post

微博帖子完整详情

douyin_search

抖音搜索 → CDP 浏览器 + 验证码轮询(⚠️ 实验性)

douyin_hot_list

抖音热搜榜

douyin_video

抖音视频详情

douyin_comments

抖音视频评论

bilibili_search

B 站视频搜索(纯 HTTP,无需登录)

bilibili_popular

B 站热门视频榜

bilibili_video

B 站视频详情及互动统计

bilibili_comments

B 站视频一级评论(支持分页)

douban_search

豆瓣书籍、电影、音乐等条目搜索

douban_subject

豆瓣条目详情

douban_reviews

豆瓣条目短评/影评

dianping_search

大众点评商户搜索

dianping_shop

大众点评商户详情

dianping_reviews

大众点评商户评价

zsxq_topics

知识星球付费社群帖子

zsxq_article

知识星球文章全文

工具

说明

check_cookies

检查所有平台 Cookie 状态

verify_login

在线验证知乎、微博、知识星球、抖音登录态;不支持的平台明确返回 unsupported

diagnose

环境诊断——依赖版本、浏览器、CDP 端口

harvest_cookies

CDP 自动收割 Cookie(包括 HttpOnly)

guided_login

引导登录——自动打开浏览器 → 你扫码 → 登录后自动收割 Cookie

MCP 客户端配置

Codex

~/.codex/config.toml:

[mcp_servers.cn-scraper]
command = "cn-scraper-mcp"
args = []

保存后可用 codex mcp list 检查连接状态。

Claude Code / Cursor / Reasonix

这三个客户端都支持标准的 mcpServers JSON:

  • Claude Code:项目根目录 .mcp.json

  • Cursor:全局 ~/.cursor/mcp.json,或项目目录 .cursor/mcp.json

  • Reasonix:项目根目录 .mcp.json

{
  "mcpServers": {
    "cn-scraper": {
      "command": "cn-scraper-mcp",
      "args": []
    }
  }
}

Trae

Trae 不同版本的配置文件位置可能不同。建议在设置中的 MCP 管理界面添加本地 stdio Server:名称填写 cn-scraper,命令填写 cn-scraper-mcp,参数留空。

如果客户端提示找不到命令,先用 where cn-scraper-mcp(Windows)或 which cn-scraper-mcp(macOS/Linux)找到完整路径,再把 command 替换为该路径。


更多文档

  • 架构设计:职责边界、平台契约和 Agent 开发守则

  • 开发规范:环境、编码、测试和 Review 要求


常见问题

Q: 使用这个软件安全吗? 软件在你的电脑上本地运行,不经过项目方的中转服务器。Cookie 和浏览器 Profile 保存在本机,Cookie 值不会写入日志或通过 MCP 返回给 Agent;需要访问平台时,凭证只发送给对应的平台域名。

Q: 软件会读取或保存账号密码吗? 不会。登录发生在平台官方页面,由你自己扫码或输入密码;工具只在登录完成后通过 CDP 保存浏览器产生的 Cookie。

Q: Cookie 保存在什么地方? Cookie 默认保存在 ~/.cn-scraper-cookies/,京东使用本地持久化 Chrome Profile。请像保护已登录浏览器一样保护这些文件,不要分享或提交到 Git。

Q: 怎么初始化 Cookie 最方便? 用 guided_login("平台名") 工具。它会自动打开 Chrome → 导航到登录页 → 等你扫码/输密码 → 登录后自动收割 Cookie 并保存。

Q: 合法吗? 仅用于学习和研究目的。批量抓取可能违反平台服务条款。风险自负。切勿用于垃圾信息、DDoS 或商业级大规模抓取。


许可证

MIT — 详见 LICENSE。

支持项目

如果这个项目帮你节省了时间,可以请作者喝杯咖啡:

致谢


Made with ☕ and months of frustration at Chinese platform anti-bot walls.

Available Tools

40 tools
bilibili_commentsA

获取 B 站视频一级评论,支持游标分页。无需登录或浏览器。

bvid 来自 bilibili_search 或 bilibili_popular;下一页传回上次结果中的 next_cursor。评论按 B 站热门评论模式返回。

Inputs: bvid (required), limit, cursor. Returns: object

bilibili_videoA

获取 B 站视频详情及互动统计。无需登录或浏览器。

bvid 来自 bilibili_search 或 bilibili_popular 结果。

Inputs: bvid (required). Returns: object

check_cookiesA

检查所有平台的 cookie 文件是否存在、有效字段及新鲜度。

Cookie 文件查找路径 (按优先级):

  1. 平台专用环境变量 (如 TAOBAO_COOKIES_FILE)

  2. ~/.cn-scraper-cookies/.json (推荐) JD 特殊: 检查 Chrome profile 目录 ~/.jd_login_profile

Returns: {taobao, xiaohongshu, zhihu, zsxq, jd, pdd: {exists, valid, missing_fields, path, age_hours, stale}}

Inputs: no named parameters. Returns: object

diagnoseA

诊断平台环境 — 检查 Python、依赖、Chrome、CDP 端口、Cookie、最近错误。

不做任何实际抓取,纯本地诊断。每项检查超时 5 秒。

Returns: sections: platform: {package_version, python_version} dependencies: {fastmcp: {installed, version}, curl_cffi: {...}, ...} browsers: {chrome: {found, path, version}, obscura: {found, path}} cdp_ports: {9222: {in_use}, 9247: {...}, 9251: {...}} cookies: 来自 check_all_cookies() 的结果 diagnostics: {recent_errors: [...]}

Inputs: no named parameters. Returns: object

dianping_reviewsC

获取大众点评商户评价。

Inputs: shop_id (required), limit. Returns: object

dianping_shopA

获取大众点评商户详情。shop_id 来自 dianping_search。

Inputs: shop_id (required). Returns: object

douban_reviewsC

获取豆瓣条目的短评/影评。支持 start 分页。

Inputs: subject_id (required), limit, start. Returns: object

douban_subjectA

获取豆瓣条目详情。subject_id 来自 douban_search。

Inputs: subject_id (required). Returns: object

douyin_commentsA

获取抖音视频评论(首屏)。需要登录 cookie。

video_id 来自 douyin_search 结果中 item 的 video_id 字段。

Inputs: video_id (required), limit. Returns: object

douyin_hot_listA

抖音实时热搜榜。需要登录 cookie(首次用 guided_login 收割)。

Returns: {count, items: [{word, hot_value, position, label}]}

Inputs: no named parameters. Returns: object

douyin_videoA

获取抖音视频详情(标题、作者、点赞、描述)。需要 Chrome。

video_id 来自 douyin_search 结果中 item 的 video_id 字段。

Inputs: video_id (required). Returns: object

guided_loginA

打开浏览器让你登录平台,自动检测登录态并收割 Cookie。

自动打开 Chrome → 导航到平台登录页 → 你扫码/输入密码 → 检测到你登录成功后自动收割 Cookie 并保存。

无需手动操作 CDP 端口——全程自动化。

Inputs: platform (required), port. Returns: object

harvest_cookiesA

从用户自己的浏览器会话中自动提取 cookie(包括 HttpOnly cookie)。

通过 Chrome DevTools Protocol (CDP) 的 Network.getAllCookies 提取 浏览器 cookie jar 中的所有 cookie(含 HttpOnly,这是 JS 无法获取的)。 仅提取用户自己的浏览器会话——浏览器须已在指定端口运行且已登录。

非 profile 平台的 Cookie 保存到认证注册表指定的 JSON 文件。 京东使用持久化 Chrome profile,请改用 guided_login。

Inputs: platform (required), port. Returns: object

jd_productA

获取京东商品详情(名称、价格、店铺、规格)。需要本地 Chrome。

sku 来自 jd_search 结果中 item 的 sku 字段。

并发: ⚠️ 使用 BrowserLock 保护 CDP 端口。

Inputs: sku (required). Returns: object

pdd_product_detailA

获取拼多多商品详情(名称、价格、原价、销量、规格)。

商品详情独立于搜索限制 — 不限次数。

Inputs: url_or_id (required). Returns: object

taobao_productA

获取淘宝商品详情(标题、价格、店铺)。

item_id 来自 taobao_search 结果中 item 的 id 字段。

并发安全: ✅ 纯 HTTP/MTOP API。

Inputs: item_id (required). Returns: object

verify_loginA

远端验证缓存登录态是否仍被平台接受。

这与 check_cookies 的本地文件检查不同:本工具会发起只读在线请求。 当前可远端验证:知乎、微博、知识星球、抖音。 淘宝等没有稳定只读验证接口的平台会明确返回 unsupported。

Inputs: platform (required). Returns: object

weibo_commentsA

获取微博帖子的评论(支持分页)。需要登录 cookie(SUB token)。

mid 来自 weibo_search 或 weibo_user_timeline 结果中 item 的 id 字段。

Inputs: mid (required), limit, max_id. Returns: object

weibo_hot_listA

获取微博实时热搜榜。无需登录!

原理: 调用 weibo.com/ajax/side/hotSearch(游客可访问)。 返回实时热搜 50 条 + 置顶政务话题。

并发安全: ✅ 纯 HTTP/REST API,无共享状态,任意并发调用安全。

Returns: {count, items: [{rank, word, num, url, label}], hotgov: {name, url}|null}

Inputs: no named parameters. Returns: object

weibo_postA

获取微博帖子的完整详情(含长文本)。

mid 来自 weibo_search 或 weibo_user_timeline 结果中的 item.id。

Inputs: mid (required). Returns: object

weibo_user_timelineA

获取微博用户时间线(最近发言)。

需要登录 cookie(SUB token)。 可通过 weibo_search 找到目标用户获取其 UID。

Inputs: uid (required), limit. Returns: object

xiaohongshu_commentsA

获取小红书笔记的评论(首屏,约 10-20 条)。

需要本地 Chrome + XHS 登录 cookie。 note_id 和 xsec_token 都来自同一条 xiaohongshu_search 结果。

Inputs: note_id (required), xsec_token (required). Returns: object

xiaohongshu_noteA

获取小红书笔记详情(标题、正文、点赞、标签、评论)。

note_id 和 xsec_token 都来自同一条 xiaohongshu_search 结果。

Inputs: note_id (required), xsec_token (required). Returns: object

zhihu_answerA

获取知乎回答的完整正文。

answer_id 来自 zhihu_search 结果中 type 为 "answer" 的 item 的 id 字段。

Inputs: answer_id (required). Returns: object

zhihu_commentsA

获取知乎回答的评论(支持分页)。需要登录 cookie。

answer_id 来自 zhihu_search 结果中 type 为 "answer" 的 item 的 id 字段。

Inputs: answer_id (required), limit, offset. Returns: object

zhihu_hot_listA

获取知乎实时热榜。无需登录。

Returns: {items: [{title, url, excerpt, hot_metric}]}

Inputs: no named parameters. Returns: object

zhihu_question_answersA

获取知乎问题下的回答列表。

question_id 来自 zhihu_search 结果中 type 为 "question" 的 item 的 id 字段。

Inputs: question_id (required), limit. Returns: object

zsxq_articleA

获取知识星球文章全文。

article_url 来自 zsxq_topics 结果中的 topic 对象, 仅当 topic 类型为文章时可用(talk.article.inline_article_url)。

Inputs: article_url (required). Returns: object

zsxq_topicsB

获取知识星球 (ZSXQ) 付费社群最新帖子。

纯 REST API,无需浏览器,只需 cookie。 Cookie 文件: ~/.cn-scraper-cookies/zsxq.json (需要 zsxq_access_token)

并发安全: ✅ 纯 HTTP/REST API,无共享状态,任意并发调用安全。

Inputs: group_id (required), count, owner_only. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 40 tools

    Disambiguation4/5

    Platform prefixes and resource/action names keep most tools clearly distinct (e.g., douyin_search, douyin_video, douyin_comments). The auth/validation cluster (harvest_cookies, guided_login, check_cookies, verify_login) has some conceptual overlap, but the descriptions clarify local vs remote checks and login-assisted harvesting.

    Naming Consistency4/5

    Content tools follow a consistent <platform>_<resource/action> pattern, with search, hot_list, and comments repeated across platforms. Minor deviations like bilibili_popular instead of bilibili_hot_list and standalone verbs like diagnose do not seriously undermine the overall pattern.

    Tool Count3/5

    40 tools is a heavy surface and will add context/selection overhead for agents. However, the multi-platform scope across 11 Chinese platforms plus a dedicated auth/diagnostic group means most tools are non-redundant and earn their place.

    Completeness4/5

    The server covers search, detail, comments, and hot-list flows for most platforms, plus cookie extraction, login, validation, and diagnostics. Gaps like e-commerce reviews or ZSXQ search are workable limitations rather than dead ends in the primary search-to-detail-to-comments flow.

    Maintenance

    ActivityInactive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers