dsh-google-chrome-search
dsh-google-chrome-search
一个 DeepSeek Harness (DSH) 插件,让 AI 代理 通过 CDP(Chrome DevTools 协议)驱动 本地 Chrome 浏览器,执行真实的 Google 网页搜索,并 渲染任意页面以提取其内容。无需搜索 API 密钥 —— 它使用机器上已安装的 Chrome 即可工作。
Google 经常为自动化流量和数据中心流量提供人工验证页面(CAPTCHA / “异常流量”)。发生这种情况时,此插件会打开一个可见的 Chrome 窗口,指向验证页面,等待人工完成验证,然后从现已受信任的会话中提取结果。这就是“询问人工”的步骤——按照设计,代理永远不会尝试自行解决 CAPTCHA。

功能一览
组件 | 路径 | 用途 |
核心引擎 |
| Chrome/CDP Google 搜索 + CAPTCHA 验证 + 结果提取 |
页面引擎 |
| 渲染任意 URL + 提取可读内容(Mozilla Readability)+ |
MCP 服务器 |
| 通过 stdio 暴露 |
CLI |
|
|
技能 |
| 教代理如何使用它 + 人工验证工作流程 |
Related MCP server: browser-search-mcp
要求
Node.js ≥ 18(在 Node 22 上测试)
本地 Chrome/Chromium 可执行文件(例如
google-chrome、chromium)。从常见路径自动检测;可通过CHROME_PATH或--chrome覆盖。对于可见验证步骤,需要带有显示器的桌面会话(以便向人工显示 Chrome 窗口)。无头/SSH 环境仍可检测 CAPTCHA 并报告(附截图)。
安装
git clone https://github.com/davidcastilloalvarado/dsh-google-chrome-search.git
cd dsh-google-chrome-search
npm install依赖项:puppeteer-core(驱动你的 Chrome——它不会下载浏览器)、@modelcontextprotocol/sdk(用于 MCP 服务器)、@mozilla/readability(内容提取)和 zod(模式验证)。
可选地全局链接 CLI,使其位于 PATH 中:
npm link # gives you: dsh-google-search "<query>"使用 CLI
# Search:
node bin/google-search.mjs "nodejs streams" --max 8
# or, after npm install / npm link:
npm run search -- "nodejs streams" --json
# Search, then render + extract the top 3 result pages:
node bin/google-search.mjs "nodejs streams" --max 8 --fetch-top 3 --fetch-max-chars 8000
# Fetch one URL directly (render + extract readable content):
node bin/google-search.mjs fetch "https://nodejs.org/api/stream.html" --max-chars 8000退出码:0 = 成功(结果 / 获取的内容),2 = 需要验证(CAPTCHA),3 = 无结果 / 获取被阻止或失败,1 = 错误,64 = 用法错误。
获取页面(渲染 + 提取)
该插件还可以渲染任意 URL 并提取其可读的主要内容:
在同一个专用 Chrome 配置文件中运行页面(因此,看到一致、可信指纹的网站表现更好)。
等待页面完全加载(包括较晚的 SPA 内容)。
使用Mozilla Readability 在实时页面内提取文章。如果页面没有明显的文章,则回退到整页文本。
输出有上限(默认每页 8,000 字符),以保持对代理上下文友好。
检测反机器人墙并报告
blocked,而不是返回垃圾内容。当网站提供人工验证挑战(例如 DataDome 的“滑动继续”墙)时,它会打开一个可见的 Chrome 窗口显示该页面,等待最多verifyTimeoutMs让人工通过,然后提取真实内容——与 Google CAPTCHA 流程相同的人工交接理念。受信任的会话 cookie 会保留在配置文件中,因此该网站的后续页面通常可以无头通过。使用--no-verify/autoVerify: false则仅报告blocked。
dsh-google-search fetch "https://example.com/article" --max-chars 10000
dsh-google-search fetch "https://example.com/article" --html --screenshot两种组合搜索和阅读的方式:
方式 | 如何操作 |
搜索,然后一次调用读取前 N 个页面 |
|
搜索,然后读取特定结果 |
|
页面按顺序渲染(一个浏览器,一次一个页面)——预计每页约 1–3 秒。
作为原生 DSH 工具使用(MCP)
在您的配置文件配置中,使用 DSH 的 @deepseek-ai/dsh-mcp-client 注册 MCP 服务器(示例——请根据您的环境调整 command 和 args 路径):
- insert:
- id: mcp-google
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: google
transport: stdio
command: /path/to/node
args: [ /path/to/dsh-google-chrome-search/src/server.mjs ]
env:
CHROME_PATH: /usr/bin/google-chrome # optional — auto-detected if unset
toolCallTimeoutMs: 300000DSH 重启后,代理将获得三个原生工具:
工具 | 功能 |
| Google 网页搜索 → 链接 + 摘要 |
| 渲染一个 URL → 提取可读内容(标题、署名、文本、可选的 HTML/截图) |
| 搜索 → 渲染前 N 个页面 → 一次调用中每页提取的内容 |
注意:
调用是串行化的(Chrome 每个配置文件只允许一个进程),因此并发工具调用会排队而不是并行运行。
search_and_fetch比普通搜索慢:请将toolCallTimeoutMs保持为300000(5 分钟),如上所示。人工验证流程适用于两者:Google 搜索(CAPTCHA)和阻止浏览器的结果页面(反机器人滑块):会为人工打开一个可见的 Chrome 窗口,之后会话会保留在配置文件中。
作为 DSH 技能使用
skill/SKILL.md 教代理如何运行搜索以及如何处理将 CAPTCHA 移交给人工。要安装它,请将其复制到您的 DSH 技能目录,例如:
mkdir -p ~/.dsh/skills/google-chrome-search
cp skill/SKILL.md ~/.dsh/skills/google-chrome-search/在另一台机器上共享/使用之前,请编辑 SKILL.md 中的 <INSTALL_DIR> 占位符,使其指向您克隆此仓库的位置(或者将 npm link CLI 放在 PATH 中,它就可以直接工作)。
配置(环境变量 / 选项)
选项 / 环境变量 | 默认值 | 含义 |
| 自动检测 | Chrome 可执行文件 |
|
| 持久化的专用 Chrome 配置文件(保留“已验证”的 cookie) |
| 8 | 要返回的自然结果数(最多 20) |
| 150000 | 等待人工解决 CAPTCHA 的时间 |
|
| 如果为 |
|
| 地区 / 语言 |
| 8000 | 每个获取页面的最大提取字符数(fetch / search_and_fetch) |
| 3 | 在 |
|
| fetch 选项:同时返回提取的 HTML / 页面截图 |
| 20000 | 每个获取页面的导航超时时间 |
人工验证流程,逐步说明
Chrome 以无头模式运行搜索(一个专用的、隔离的配置文件——绝不是您的真实浏览器)。
如果存在结果 → 返回它们(
status: ok)。如果 Google 提供 CAPTCHA:
截图。
在验证页面上打开一个可见的 Chrome 窗口(同一配置文件)。
等待最多
verifyTimeoutMs让人工解决,轮询页面。如果已解决 → 提取并返回结果(标记为
verifiedViaHuman: true)。如果超时 → 返回status: verification_required并附上最新截图。
已验证的会话保留在配置文件中,因此下一次搜索通常可以无头成功。
测试
npm test启动 MCP 服务器,检查 search、fetch 和 search_and_fetch 工具是否列出,并且——如果机器上有 Chrome 可执行文件——使用 autoVerify: false 执行实时搜索。在没有浏览器的环境(例如 CI)中,实时调用会被优雅地跳过。
故障排除
症状 | 修复 |
| 安装 Chrome/Chromium 或设置 |
在容器中以 root 运行,沙箱错误 | 默认是 |
每次搜索都出现 CAPTCHA | 保留专用配置文件( |
SSH 上不出现可见窗口 | 使用带有显示器的机器,或设置 |
| 关闭使用该配置文件的所有 Chrome 实例,然后重试(该配置文件与您的个人配置文件是分开的)。不要同时运行两个 CLI 调用——每个配置文件一个进程。 |
| 这是人工验证步骤按预期工作:在窗口中通过挑战,然后它会重试并保留会话。 |
| 网站阻止无头浏览器,且 |
| 页面 JS 繁重且尚未完成渲染;重试(它最多稳定约 7 秒),或增加 |
还原 / 清理
配置:从您的 DSH 配置文件配置中删除
mcp-google条目。技能:
rm -rf ~/.dsh/skills/google-chrome-search配置文件/截图:
rm -rf ~/.dsh-chrome-google
许可证
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform real-time Google searches with anti-bot protection. Bypasses search engine restrictions using advanced browser automation to extract search results locally without requiring paid API services.7MIT
- AlicenseAqualityAmaintenanceEnables web search via a real browser for any LLM, bypassing anti-bot measures without API keys.5MIT
- AlicenseBqualityBmaintenanceBridges AI agents (Codex, Claude Code) with a real Chrome session via CDP, enabling Google Search and Google AI interactions through the browser.2277MIT
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to search the web and extract content using multiple search providers, with caching, retry logic, and options for JavaScript-heavy page rendering.
Related MCP Connectors
Search Google straight from your AI agent. Web results, images, videos, news, products, scholarly ar
The best web search for your AI Agent
Live web search for AI agents. $0.001/call, x402 on Base, no API key.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DavidCastilloAlvarado/dsh-google-chrome-search'
If you have feedback or need assistance with the MCP directory API, please join our Discord server