主要要点:
- Qwen Code 没有内置的网络搜索 --- MCP 是它访问网络的方式。 内置的
web_search工具在早期版本中被移除;官方文档明确指出,通过连接到 MCP 服务器提供网络搜索。将该连接指向 Scrapeless,终端代理即可在一步内获得实时 Google 搜索、页面渲染和完整的云浏览器。 ~/.qwen/settings.json中的一行代码将其全部连接起来。 在mcpServers对象中添加一个scrapeless条目,代理将获得 Google SERP 抓取器、趋势抓取器、HTML/Markdown/截图辅助工具以及 16 个浏览器自动化工具 --- 无需 SDK 代码,无需提供服务。- 代理通过简单提示进行搜索、渲染和驱动浏览器。 用自然语言请求在 Google 上搜索,将 JavaScript 密集页面读取为干净的 Markdown,或者点击多步骤流程,Qwen Code 将逐步组成正确的工具调用,而不是局限于训练截止知识和本地文件。
- 住宅代理和反检测由云端处理。 每个请求通过 Scrapeless 反检测云浏览器传输,拥有 195 个国家的住宅代理,因此代理在商业网站上获得渲染后的可用响应,而不需要在您的机器上进行任何代理或指纹设置。
- 涵盖 SERP、无状态抓取和浏览器自动化的 21 种工具。 Scrapeless MCP 服务器提供
google_search、google_trends、scrape_html/scrape_markdown/scrape_screenshot,以及 16 个browser_*工具 --- 代理的规划者在每次轮换中从一个命名空间中提取。 - 标准输入或 HTTP 流式传输。 使用
npx本地启动服务器,或将相同的配置指向可流式传输的 HTTP 端点以支持远程开发容器和 CI 运行器。 - 免费开始。 新的 Scrapeless 账户包括免费的抓取浏览器运行时 --- 请在 Scrapeless 注册。
介绍:一个终端编码代理,可以最终读取实时网页
Qwen Code 是一个开源的 AI 代理,运行在您的终端中,针对 Qwen 系列模型进行了优化。它可以读取大型代码库、编辑文件、运行命令,并自动化项目中的繁琐部分 --- 所有操作都无需离开 shell。它不能独立完成的就是访问实时网页。它的知识仅停留在模型的训练截止和磁盘上的文件。
这一差距在 Qwen Code 中异常明显。内置的 web_search 工具在早期版本中被移除,官方文档明确指出"通过连接到外部 MCP 服务器提供网络搜索",而不是一个内置工具。换句话说,Qwen Code 中的实时网页访问并不是一个附加的想法 --- 它是意图明确的扩展点。在您连接之前,代理无法提取当前的 SERP、查看竞争对手的定价页面、检查最新的更改日志或渲染仅包含 JavaScript 的应用。
这篇文章通过将 Scrapeless MCP 服务器接入 Qwen Code 来填补这一空白。在 ~/.qwen/settings.json 中添加一行代码,便可以为代理提供 Google 搜索、JavaScript 渲染和完整的反检测云浏览器,所有这些都可以通过已经用来处理代码的自然语言提示访问。有关通过其他 MCP 客户端使用相同 Scrapeless 界面的信息, 请参见我主页发布过的 《Google Antigravity 演练》 和 《Pi Agent 集成》一文。
您可以用它做什么
- 终端中的实时 SERP 研究。 请求代理运行
google_search查询并以 JSON 格式返回顶部结果,从而在 shell 中进行研究,而不是在单独的浏览器标签中。 - 竞争对手和定价快照。 将一个 URL 放入提示中,让代理渲染页面并提取计划名称、价格和特性,形成一个结构化记录,您可以将其放在代码旁边。
- 文档和变更日志查找,以补充代码。 让代理获取库的当前文档或发行说明,格式化为干净的 Markdown,并针对渲染的文本进行编写,而不是依赖于 stale 的 API 记忆。
- 市场和趋势检查。 使用
google_trends提取目标区域内某主题的兴趣信号,然后用当前证据为功能文案、内容计划或实验构思提供素材。 - 将 JavaScript 页面提取为类型记录。 将代理指向单页应用程序;云浏览器将其加载,代理将结果解析为您正在构建的脚本所需的类型对象。
- 多步骤浏览器流程。 连锁使用
browser_goto、browser_click、browser_type和browser_scroll,使代理能够进行分页、展开面板或在提取之前逐步完成向导。 - 截图捕获以供审核。 使用
scrape_screenshot或browser_screenshot抓取渲染后的页面并将其保存为代理可以存入工作区的图像。 - 搜索-然后读取流程。 将
google_search与scrape_markdown结合,使代理找到最佳结果,逐个阅读,并在一次终端操作中总结它们。
在 Scrapeless,我们仅访问公开可用的数据,同时严格遵守适用的法律、法规和网站隐私政策。本帖中的内容仅用于演示目的。
为什么选择 Scrapeless MCP 服务器
Scrapeless MCP 服务器是一个可定制的、反检测的桥梁,连接 AI 代理与实时网络。专为 Qwen Code 而设,它带来了:
- 带 JavaScript 渲染的反检测云浏览器。 页面在全面的 Scrapeless Scraping Browser 中被处理后再进行提取,因此单页应用程序(SPA)、无限滚动 feeds 和懒加载面板成为
browser_goto+browser_get_html的一流目标。 - 覆盖 195 个国家的住宅代理。 地理相关查询返回本地用户所见的列表,代理的出口完全由 Scrapeless 处理。
- 通过
npx的一个标准输入输出命令,无需 SDK 代码。 服务器作为npx -y scrapeless-mcp-server的子进程启动;没有任何东西需要构建、托管或导入到你的项目中。 - 涵盖 SERP、无状态抓取和完整浏览器自动化的 21 个工具。
google_search和google_trends涉及 SERP 数据,scrape_html/scrape_markdown/scrape_screenshot涉及一次性页面抓取,16 个browser_*工具覆盖有状态导航、点击、输入、滚动和截图。 - 与 Qwen Code 自己的
web_fetch的补充。 Qwen Code 提供一个简单的web_fetch用于普通页面检索,但不支持 JavaScript 渲染或反检测。Scrapeless 工具恰好填补了这个空白------搜索代理之前没有的功能,加上渲染的、代理的页面访问。
在 Scrapeless 官网可获取本次免费 API 密钥。 免费计划足以建立这一设置并运行真实提示;当免费额度用完后,可在Scrapeless官方网站按需采购额度。
先决条件
- 工作站上的 Node.js 22 或更新版本 --- Qwen Code 需要 Node 22+,并且 stdio MCP 服务器是通过
npx启动的。 - 已安装 Qwen Code,并配置好模型提供者。 Qwen Code 通过 LLM 后端进行身份验证;代理循环在任何工具调用运行之前需要一个工作模型。
- 一个 Scrapeless 账户和 API 密钥 --- 在Scrapeless 官网注册免费计划,并从 设置 → API 密钥管理 中复制密钥。
- 基础终端操作熟悉度 --- 整个设置只需少量命令加一个小的 JSON 文件。
安装
设置分为五个子步骤;每个步骤都可以独立验证。
1. 安装 Qwen Code
从 npm 全局安装 CLI,然后检查版本:
bashCopy
npm install -g @qwen-code/qwen-code
qwen --version
你也可以通过 npx -y @qwen-code/qwen-code@latest 在没有全局安装的情况下运行它。
2. 连接模型提供者
Qwen Code 与 LLM 后端通信。它支持 OpenAI 兼容模式,因此任何 OpenAI 兼容的端点都可以工作------设置身份验证类型、API 密钥、基础 URL 和模型:
export OPENAI_API_KEY="your_provider_key_here"
export OPENAI_BASE_URL="https://your-openai-compatible-endpoint/v1"
qwen --auth-type openai -m "your-model-id"
相同的值可以作为 --openai-api-key 和 --openai-base-url 标志传递。选择一个能够良好处理工具调用的模型------Qwen Code 是围绕代理工具使用构建的,因此当前的 Qwen 系列编码模型是个自然的选择。
3. 添加 Scrapeless MCP 服务器 (stdio)
Qwen Code 从 ~/.qwen/settings.json(用户范围)或项目根目录中的 .qwen/settings.json 读取 MCP 服务器。将 scrapeless 块添加到 mcpServers 对象中:
{
"mcpServers": {
"scrapeless": {
"command": "npx",
"args": ["-y", "scrapeless-mcp-server"],
"env": { "SCRAPELESS_KEY": "$SCRAPELESS_KEY" },
"timeout": 60000,
"trust": true
}
}
}
这里有两个细节很重要。首先,Scrapeless MCP 服务器从 SCRAPELESS_KEY 中读取其密钥,而不是 SCRAPELESS_API_KEY------Scrapeless CLI 和 SDK 使用 SCRAPELESS_API_KEY,但 MCP 服务器是唯一的例外。其次,Qwen Code 在 env 对象内扩展 $VAR 和 ${VAR},因此你可以将密钥保存在你的环境中(export SCRAPELESS_KEY=...),并以 $SCRAPELESS_KEY 引用它,而不是将实际值粘贴到文件中。服务器源代码位于 github.com/scrapeless-ai/scrapeless-mcp-server。
你也可以通过 CLI 添加服务器,而不必手动编辑 JSON:
qwen mcp add --transport stdio --scope user --env SCRAPELESS_KEY=$SCRAPELESS_KEY --trust scrapeless npx -y scrapeless-mcp-server
4. 或使用 HTTP 流模式
如果主机无法可靠地生成 npx --- 一个托管的开发容器、远程工作区或 CI 沙盒 --- 请将 Qwen Code 指向 Scrapeless HTTP 端点,而不是本地进程。对于 HTTP 传输,Qwen Code 使用 httpUrl 键和一个可选的 headers 对象:
{
"mcpServers": {
"scrapeless": {
"httpUrl": "https://api.scrapeless.com/mcp",
"headers": { "x-api-token": "YOUR_SCRAPELESS_KEY" }
}
}
}
这两个模式中的相同键值均有效;HTTP 可流式传输将其作为 x-api-token 头而不是 SCRAPELESS_KEY 环境变量。标准输入输出是开发工作站的正确默认值;HTTP 可流式传输是任何长时间运行的子进程难以保持活跃时的正确默认值。
5. 验证连接
列出配置的 MCP 服务器:
qwen mcp list
scrapeless 服务器应报告 已连接 ,这意味着 Qwen Code 启动了标准输入输出进程并完成了 MCP 握手。从那里,代理可以枚举服务器的 21 个工具 --- 谷歌数据工具(google_search、google_trends)、一次性页面助手(scrape_html、scrape_markdown、scrape_screenshot)以及云浏览器原语(browser_create、browser_goto、browser_get_html、browser_get_text、browser_click、browser_type、browser_press_key、browser_scroll、browser_scroll_to、browser_screenshot、browser_snapshot、browser_wait、browser_wait_for、browser_go_back、browser_go_forward、browser_close)。
如何实际使用:提示您的千问 Qwen Code 代理
在连接 MCP 服务器之后,您可以通过终端与 Qwen Code 交互,以获取实时网络数据 --- 而不是手动编写工具调用。代理读取 Scrapeless MCP 服务器提供的工具列表,并根据需要选择 google_search、scrape_markdown 或 browser_* 工具,从自然语言提示中逐步组合它们。您无须在自己的一方撰写工具 JSON。Qwen Code 在会话中交互式运行提示,或通过将提示作为位置参数(或通过标准输入传递)进行非交互式运行和脚本编写。
您可以粘贴的提示词
| 提示 | 代理的操作 |
|---|---|
"查找关于 vector database benchmarks 2026 的谷歌搜索结果,并将其作为 JSON 返回。" |
google_search 采用 q、hl、gl → 打字结果行。 |
"现在在美国,developer tools 的搜索主题有哪些上升趋势?" |
google_trends。 |
"将 https://qwenlm.github.io/qwen-code-docs/en/users/overview/ 的 Qwen Code 文档页面提取为干净的 markdown。" |
scrape_markdown。 |
"打开 https://pricing.example.com,这是一个 JavaScript 应用 --- 渲染它并提取计划名称、价格和功能作为 JSON。" |
browser_create → browser_goto → browser_get_html → 打字提取。 |
"比较 https://a.example.com/pricing 和 https://b.example.com/pricing 的定价页面,并告诉我它们的不同之处。" |
browser_create → browser_goto (A) → browser_get_html → browser_goto (B) → browser_get_html → 差异。 |
"对 https://example.com/landing 进行全页面截图。" |
scrape_screenshot。 |
"提取 https://example.com 的渲染 HTML,以便我可以阅读标记。" |
scrape_html。 |
"打开 https://example.com/jobs,等待列表加载,快照页面,然后提取每个职位标题和地点作为 JSON。" |
browser_create → browser_goto → browser_wait_for → browser_snapshot → 打字提取 → browser_close。 |
示例
您输入(一次性,提示通过标准输入传递):
echo "使用 scrapeless google_search 工具查找 'qwen code github' 的最佳结果,并将前 3 个结果返回为 {title, link} 的 JSON 数组。" | qwen --approval-mode yolo --allowed-mcp-server-names scrapeless
代理的计划(用普通英语):
- 调用
google_search,参数为q: "qwen code github"、hl: "en"、gl: "us"。 - 接收结果行数组并读取
position、title和link字段。 - 按
position排序并保留前三行。 - 将每一行映射为
{title, link}对象。 - 将 JSON 数组返回到终端。
您收到的结果(示意形状 --- 代理根据这些行工作):
[
{ "title": "Qwen Code 是一个开源的终端 AI 代理,...", "link": "https://qwen.ai/qwencode" },
{ "title": "Qwen Code 概述", "link": "https://qwenlm.github.io/qwen-code-docs/en/users/overview/" },
{ "title": "qwen-code/qwen-code-core", "link": "https://www.npmjs.com/package/@qwen-code/qwen-code-core" }
]
// 字段名称与 google_search 行形状匹配;值为示意样本。
--allowed-mcp-server-names scrapeless 将运行范围限制在 Scrapeless 工具上,而 --approval-mode yolo 允许代理在没有交互提示的情况下执行受信工具------这对于无头和脚本化运行非常方便。无状态数据工具将其有效载荷作为前缀为 Response:\n\n 的主体返回;代理在解析 JSON 前会去掉该前缀,因此你在答案中从未看到它。
以特定方式塑造提示
| 说这个 | 效果 |
|---|---|
| "...来自德国" / "...德国结果" | 通过 proxyCountry 路由流出,并在搜索中设置 gl=de。 |
| "...以 markdown 格式呈现,跳过导航和样板文" | 选择 scrape_markdown 以获取干净的文本有效载荷,而不是原始 HTML。 |
| "...先渲染,它是一个单页面应用" | 强制使用 browser_* 路径(browser_create → browser_goto → browser_get_html),以便提取运行在已填充的 DOM 上。 |
| "...仅前 5 个" | 将返回的数组修剪为前五行。 |
| "...包括每个结果的摘要" | 保留输出行中的 snippet 字段。 |
| "...完成后关闭会话" | 添加一个最终的 browser_close,并使用 browser_create 的 sessionId。 |
以下内容为底层参考------工具表面、确切返回形状及代理为您处理的行为。
Scrapeless MCP 工具表面
连接服务器后,Qwen Code 看到了 21 个工具,涵盖了 SERP 数据、无状态抓取和完整的反检测云浏览器控制。
| 工具 | 功能 |
|---|---|
google_search |
运行 Google 搜索(q、hl、gl),并返回结构化的自然结果行。 |
google_trends |
获取查询的 Google Trends 关注数据。 |
scrape_html |
获取一个 URL 并返回其渲染的 HTML。 |
scrape_markdown |
获取一个 URL 并返回页面的干净 Markdown。 |
scrape_screenshot |
捕获目标 URL 的屏幕截图。 |
browser_create |
在反检测云浏览器上打开会话。 |
browser_goto |
将会话导航到一个 URL。 |
browser_click |
点击实时页面中的一个元素。 |
browser_type |
在输入或可编辑字段中输入文本。 |
browser_get_text / browser_get_html |
读取页面的文本或 HTML。 |
browser_screenshot |
捕获实时会话的屏幕截图。 |
browser_snapshot |
返回页面的可访问性/结构快照。 |
browser_wait / browser_wait_for |
等待一个固定的时间间隔,或等待一个条件/元素。 |
browser_scroll / browser_scroll_to |
滚动页面,或到特定元素。 |
browser_go_back / browser_go_forward |
在会话历史中移动。 |
browser_press_key |
向页面发送一个键盘按键。 |
browser_close |
结束云浏览器会话。 |
您将获得的返回结果
google_search 调用返回一个 JSON 数组的自然结果行。每行都有相同的键,因此代理可以直接映射到标题、链接和摘要:
// 字段名称反映 google_search 工具输出;值为示例。
[
{
"position": 1,
"title": "用 Python 进行网页抓取:完整指南",
"link": "https://example.com/python-web-scraping",
"snippet": "使用 Python 抓取网页和解析 HTML 的逐步指南。",
"source": "example.com"
},
{
"position": 2,
"title": "抓取动态网站",
"link": "https://example.org/dynamic-scraping",
"snippet": "在提取数据之前如何渲染 JavaScript 页面。",
"source": "example.org"
}
]
开始运行提示后的一些诚实观察:
- 类似
google_search和scrape_markdown的无状态工具返回的主体带有前缀Response:\n\n,后面跟着 JSON 有效载荷;代理会自动去掉该前缀,因此您处理的是数据,而不是封装。 browser_*工具返回的是没有Response:\n\n前缀的纯文本。- 工具参数采用 camelCase:将
sessionId、proxyCountry和类似字段按名称精确传递。 proxyCountry是请求,而不是保证------它可能会转而使用您账户上配置的区域,因此在需要地理定位时请确认流出区域。- 工具输出中的值依赖于内容:结果计数、排序和摘要文本会随着实时查询而变化。
结论:从终端进行搜索、渲染和浏览
整个集成简化为一个 MCP 块加上自然语言提示。在 ~/.qwen/settings.json 中将 scrapeless 条目以及您的密钥放入环境中,Qwen Code 获得实时 Google 搜索、JavaScript 渲染和完整的反检测云浏览器------正是代理本身未提供的网络层。您描述任务;代理选择工具。
如果您正在连接其他代理,相同的scrapeless MCP 服务器也适用于它们: 请参见 Google Antigravity 和 Pi Agent 集成指南,以及 Scrapeless MCP 服务器概述 进行完整工具参考。将您的 API 密钥保存在 SCRAPELESS_KEY 中,对于本地 CLI,请优先使用标准输入输出传输,而对于托管代理,请使用 HTTP 流式传输,让代理选择工具。
准备构建您的 AI 驱动数据管道吗?
加入我们的社区,领取免费的计划,并与构建 Qwen Code + Scrapeless MCP 代理的开发者联系:Discord · Telegram。
在 Scrapeless 注册,以获得免费的抓取浏览器运行时,并将上述集成调整为您的团队所需的 SERPs、页面和区域。
常见问题解答
为什么 Qwen Code 需要 MCP 服务器进行网络搜索?
因为它没有内置的网页搜索功能。web_search 核心工具在早期版本中被移除,官方文档通过 MCP 服务器进行网页搜索。因此,连接 Scrapeless 可以为代理提供缺失的搜索功能,以及渲染页面的访问权限和完整的云浏览器。
这与 Qwen Code 内置的 web_fetch 有什么不同?
web_fetch 仅仅是对 URL 的简单检索。它不渲染 JavaScript,也没有反检测或代理层,因此在单页应用和机器人保护的网站上表现不佳。Scrapeless 工具补充了缺少的搜索功能(google_search)、清理的渲染文本(scrape_markdown)以及在住宅代理上使用的有状态反检测浏览器(browser_*)。
哪个环境变量保存 Scrapeless 密钥?
SCRAPELESS_KEY。这是文档中提到的例外------Scrapeless CLI 和 SDK 读取 SCRAPELESS_API_KEY,但 MCP 服务器读取 SCRAPELESS_KEY。Qwen Code 可以通过配置的 env 对象中的 $SCRAPELESS_KEY 从您的环境中扩展它。
Qwen Code 从哪里读取 MCP 配置?
从 ~/.qwen/settings.json(用户范围)或项目根目录下的 .qwen/settings.json(项目范围)。两个都使用 mcpServers 对象。您还可以使用 qwen mcp add 添加服务器,并使用 qwen mcp list 检查连接。
标准输入输出与 HTTP 流式传输 --- 何时使用每一种?
当服务器与 CLI 在本地一起运行时使用标准输入输出:Qwen Code 启动 scrapeless-mcp-server 作为子进程,并通过标准输入/输出与其通信。当代理被托管或远程且无法生成本地进程时使用 HTTP 流式传输(httpUrl 键指向 https://api.scrapeless.com/mcp,并带有 x-api-token 头)。
proxyCountry 是否总是适用?
不一定。proxyCountry 是一个首选项,可以依赖于您帐户上配置的区域。如果地理定位很重要,请确认出口区域,而不是假设每次调用值总是优先。
通过代理进行网络抓取是否合法?
抓取公开可用的数据通常是允许的,但您对如何使用它负责。请检查每个网站的服务条款,尊重 robots.txt,并记住关于个人数据和访问的规则因法域而异。当有疑问时,请为您的具体用例寻求法律建议。
可以在没有 AI 代理的情况下使用这个吗?
可以。Scrapeless MCP 服务器是一个标准的 MCP 服务器,因此任何兼容 MCP 的客户端都可以调用它------或者您可以通过 JSON-RPC 直接驱动它(initialize,然后 tools/list 和 tools/call)。该代理是一种便利,而不是必要条件。