dsh-google-chrome-search
dsh-google-chrome-search
DeepSeek Harness (DSH) 플러그인으로, AI 에이전트가 CDP(Chrome DevTools Protocol)를 통해 로컬 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 흐름과 동일한 사람에게 위임하는 철학입니다. 신뢰된 세션 쿠키는 프로필에 유지되므로 해당 사이트의 이후 페이지는 일반적으로 헤드리스로 통과합니다.--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 프로필 ("확인된" 쿠키 유지) |
| 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 testMCP 서버를 생성하고 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