← 스킬 목록으로 돌아가기

agent-safe-fetcher

v1.0.0 approved Web ⬇ 4 오늘 업데이트
USK v3 ✅ Verified ⚡ Auto-Convert
⬇ 다운로드
설치 가이드↓
🤖 에이전트용 설치 명령 (curl / MCP / Claude Desktop)
▸ curl 한 줄 다운로드
curl -L -o agent-safe-fetcher.skill   "https://aiskillstore.io/v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download?platform=ClaudeCode"
▸ MCP 도구 호출 (Skill Store MCP 등록 시)
{
  "tool": "download_skill",
  "arguments": {
    "skill_id": "f170e245-57eb-4b65-b9a1-34eec570d5db",
    "platform": "ClaudeCode"
  }
}
▸ Claude Desktop / Cursor MCP 설정 (1회)
{
  "mcpServers": {
    "skill-store": {
      "url": "https://aiskillstore.io/mcp/"
    }
  }
}
📖 에이전트용 전체 API 가이드: /llms.txt  ·  MCP server card

Safe HTTP fetcher for AI agents: fetches user-supplied URLs at runtime with built-in SSRF protection, rate limiting, robots.txt compliance, and HTML text extraction. Zero external dependencies.

# web fetch # http request # url fetch # browser fetch # web search # tavily # agent fetcher # ssrf # safe fetch # korean

기본 정보

소유자 👤 aiskillstore-team 카테고리 Web 등록일 2026-05-10 최종 업데이트 2026-05-10 최신 버전 1.0.0 패키지 날짜 2026-05-10 검증 상태 approved 다운로드 수 4회 체크섬 (SHA256) 8cb6f30e32601757a092534a983817dee45c199340ae14e5b0047f9c1ccf1d67

⚡ AGENT INFO USK v3

Capabilities
safe_url_fetch ssrf_protection robots_txt_compliance rate_limited_fetch html_text_extraction
Permissions
✓ network
✗ filesystem
✗ subprocess
Interface
type: cli   entry_point: main.py   runtime: python3   call_pattern: stdin_stdout
Agent API
# 스킬 스키마 조회 (에이전트가 호출 방법을 파악) GET /v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/schema # 플랫폼별 자동 변환 다운로드 GET /v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download?platform=OpenClaw GET /v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download?platform=ClaudeCode GET /v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download?platform=ClaudeCodeAgentSkill GET /v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download?platform=Cursor GET /v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download?platform=GeminiCLI GET /v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download?platform=CodexCLI GET /v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download?platform=CustomAgent

설치 방법

호환 플랫폼: any

1
openclaw_skill_manager.py로 스킬을 설치합니다.
python openclaw_skill_manager.py --install agent-safe-fetcher
2
설치 확인
python openclaw_skill_manager.py --list-installed
3
특정 버전 설치 (선택)
python openclaw_skill_manager.py --install agent-safe-fetcher --version 1.0.0
1
스킬 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download
2
Claude Code commands 디렉터리에 배치합니다.
unzip agent-safe-fetcher.skill -d ~/.claude/commands/agent-safe-fetcher/
3
Claude Code에서 슬래시 커맨드로 사용합니다.
/agent-safe-fetcher
1
Agent Skills 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download?platform=ClaudeCodeAgentSkill
2
Claude Code skills 디렉터리에 압축을 해제합니다.
unzip agent-safe-fetcher-agent-skill-*.skill -d ~/.claude/skills/agent-safe-fetcher/
3
Claude Code를 재시작하면 세션 시작 시 자동으로 로드됩니다. 슬래시 커맨드 없이 자연어로 사용 가능합니다.
1
Cursor 변환 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download?platform=Cursor
2
압축 해제 후 영구 위치에 저장합니다.
unzip agent-safe-fetcher-cursor-*.skill -d ~/.cursor/skills/agent-safe-fetcher/
3
.cursor/mcp.json에 MCP 서버 설정을 추가하고 Cursor를 재시작합니다.
cat ~/.cursor/skills/agent-safe-fetcher/cursor_mcp_config.json
1
Gemini CLI 변환 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download?platform=GeminiCLI
2
압축 해제 후 영구 위치에 저장합니다.
unzip agent-safe-fetcher-geminicli-*.skill -d ~/.gemini/skills/agent-safe-fetcher/
3
~/.gemini/settings.json에 MCP 서버 설정을 추가하고 Gemini CLI를 재시작합니다.
cat ~/.gemini/skills/agent-safe-fetcher/gemini_settings_snippet.json
1
Codex CLI 변환 패키지를 다운로드합니다.
curl -O https://aiskillstore.io/v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download?platform=CodexCLI
2
압축 해제 후 영구 위치에 저장합니다.
unzip agent-safe-fetcher-codexcli-*.skill -d ~/.codex/skills/agent-safe-fetcher/
3
~/.codex/config.toml에 MCP 서버 설정을 추가하고 Codex CLI를 재시작합니다.
cat ~/.codex/skills/agent-safe-fetcher/codex_config_snippet.toml
1
REST API로 스킬 패키지를 다운로드합니다.
GET https://aiskillstore.io/v1/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/download
2
에이전트 플랫폼의 skills 디렉터리에 배치합니다.
cp agent-safe-fetcher.skill ./skills/
3
설치 가이드 API로 플랫폼별 상세 정보를 조회합니다.
GET https://aiskillstore.io/v1/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/install-guide?platform=CustomAgent

보안 검증 보고서

검증 결과 APPROVED

검사 결과: ["메타데이터 경고: 권장 필드 없음: 'requirements' (SKILL.md v2 권장)", "메타데이터 경고: 권장 필드 없음: 'changelog' (SKILL.md v2 권장)"]

✅ 보안 위험 항목이 발견되지 않았습니다.

AI 검수 단계

검수 주체 gemini 위험도 🟢 낮음 검수 요약 안전한 HTTP 요청 및 웹 콘텐츠 추출 스킬로, SSRF 방어, robots.txt 준수, 속도 제한 등 강력한 보안 기능을 내장하고 있습니다.
판단 근거

1. **Permissions Consistency**: 스킬 메타데이터에 선언된 `network: true` 권한은 HTTP 요청 스킬의 본질적인 요구사항과 일치합니다. `subprocess: false`는 제공된 코드 스니펫에서 외부 프로세스 실행 시도가 없어 선언과 일치합니다. `filesystem: false`는 `os` 모듈이 임포트되었으나, 스킬의 목적과 제공된 코드에서 파일 시스템 접근 흔적이 없어 선언과 일치할 것으로 판단됩니다. 2. **Malicious Code**: 제공된 코드 스니펫은 SSRF(Server-Side Request Forgery) 방어를 위한 `_is_private_ip` 함수와 도메인별 속도 제한을 위한 `_consume_token` 함수를 포함하고 있으며, 이들은 스킬의 '안전한' 목적에 부합하는 핵심 보안 기능입니다. 특히 `_is_private_ip` 함수는 광범위한 사설/예약 IP 대역을 검사하여 SSRF 공격을 효과적으로 방어합니다. 난독화나 악의적인 데이터 탈취/시스템 파괴 시도는 발견되지 않았습니다. `input_schema`에서 `Cookie` 및 `Host` 헤더를 명시적으로 제외하는 등 보안에 대한 고려가 돋보입니다. 3. **Undeclared External Communication**: 스킬의 핵심 기능이 외부 HTTP 통신이므로 `network: true` 권한은 적절하게 선언되었습니다. SSRF 보호 기능은 오히려 통신 대상을 안전한 범위로 제한하려는 목적을 가집니다. 선언되지 않은 다른 형태의 외부 통신은 발견되지 않았습니다. 4. **Unauthorized Data Collection**: 스킬은 사용자(에이전트)가 제공한 URL의 콘텐츠를 가져와 처리한 후 결과를 반환합니다. 이 과정에서 사용자 데이터를 무단으로 수집하거나 외부로 전송하는 어떠한 증거도 발견되지 않았습니다. 5. **Code Quality**: 코드는 Python 표준 라이브러리만을 사용하여 외부 의존성이 없으며, SSRF 보호 및 속도 제한 로직이 명확하고 견고하게 구현되어 있습니다. 주석과 상수 정의가 잘 되어 있어 가독성이 높고, 스킬의 '안전한 웹 페처'라는 목적에 완벽하게 부합하는 고품질 코드입니다. 정적 분석 결과 또한 'approved'로 판단되어 안전성을 뒷받침합니다.

버전 히스토리

버전 USK v3 검증 상태 패키지 날짜 다운로드 변경사항
v1.0.0 approved 2026-05-10 ⬇ 4

사용 예시 (Examples) 8 개

이 스킬의 대표적인 입출력 예시입니다. 에이전트는 이 예시를 보고 스킬 호출 방법과 결과 형태를 이해할 수 있습니다.

기본 URL 조회 / Basic URL fetch
# fetch# basic

https://example.com 페이지를 안전하게 조회합니다.

📥 입력
{
  "action": "fetch",
  "timeout": 5,
  "url": "https://example.com"
}
📤 출력
{
  "action": "fetch",
  "body": "\u003c!doctype html\u003e...",
  "content_type": "text/html; charset=UTF-8",
  "elapsed_ms": 342.1,
  "meta": {
    "user_agent": "AISkillStore-AgentFetcher/1.0"
  },
  "redirect_chain": [],
  "size_bytes": 1256,
  "status_code": 200,
  "url": "https://example.com"
}
HTML 텍스트 추출 / HTML to text extraction
# extract_text# html

HTML 응답에서 사람이 읽을 수 있는 텍스트만 추출합니다.

📥 입력
{
  "action": "extract_text",
  "html": "\u003chtml\u003e\u003cbody\u003e\u003ch1\u003eHello\u003c/h1\u003e\u003cp\u003eWorld\u003c/p\u003e\u003cscript\u003eevil()\u003c/script\u003e\u003c/body\u003e\u003c/html\u003e"
}
📤 출력
{
  "action": "extract_text",
  "meta": {
    "tags_stripped": 4
  },
  "text": "Hello\nWorld"
}
robots.txt 차단 케이스 / robots.txt blocked
# fetch# robots_txt# blocked

robots.txt 가 Disallow 한 경로 접근 시 거부합니다.

📥 입력
{
  "action": "fetch",
  "respect_robots": true,
  "url": "https://example.com/private/data"
}
📤 출력
{
  "action": "fetch",
  "error": {
    "code": "ROBOTS_BLOCKED",
    "message": "Blocked by robots.txt: User-agent * Disallow /private/"
  },
  "robots_blocked": true,
  "url": "https://example.com/private/data"
}
Private IP SSRF 차단 / Private IP SSRF block
# fetch# ssrf# security

내부 네트워크 IP(192.168.x.x) 접근 시도를 차단합니다.

📥 입력
{
  "action": "fetch",
  "url": "http://192.168.1.1/admin"
}
📤 출력
{
  "action": "fetch",
  "error": {
    "code": "SSRF_BLOCKED",
    "message": "SSRF protection: private/reserved IP range blocked (192.168.1.1)"
  },
  "url": "http://192.168.1.1/admin"
}
타임아웃 발동 / Timeout triggered
# fetch# timeout

응답이 지정 시간 내 오지 않으면 타임아웃 에러를 반환합니다.

📥 입력
{
  "action": "fetch",
  "timeout": 3,
  "url": "https://httpbin.org/delay/10"
}
📤 출력
{
  "action": "fetch",
  "error": {
    "code": "TIMEOUT",
    "message": "Request timed out after 3s"
  },
  "url": "https://httpbin.org/delay/10"
}
리디렉트 체인 조회 / Redirect chain fetch
# fetch# redirect

리디렉트를 따라가며 최종 URL 을 반환합니다.

📥 입력
{
  "action": "fetch",
  "max_redirects": 5,
  "url": "http://example.com"
}
📤 출력
{
  "action": "fetch",
  "elapsed_ms": 512.3,
  "redirect_chain": [
    "http://example.com",
    "https://example.com"
  ],
  "status_code": 200,
  "url": "http://example.com"
}
URL 안전성 사전 검증 / URL safety pre-validation
# validate_url# ssrf# metadata

실제 요청 전에 URL 이 SSRF/HTTP 등 위험 요소를 포함하는지 검사합니다.

📥 입력
{
  "action": "validate_url",
  "url": "http://169.254.169.254/latest/meta-data/"
}
📤 출력
{
  "action": "validate_url",
  "findings": [
    {
      "fix_hint": {
        "action": "Replace with a publicly reachable URL",
        "doc_ref": "https://aiskillstore.io/skills/agent-safe-fetcher#ssrf",
        "example": "https://api.example.com/data",
        "summary": "Use a public URL instead"
      },
      "message": "Link-local address (169.254.x.x) is blocked \u2014 AWS/GCP metadata endpoint SSRF risk",
      "rule": "SSRF_LINK_LOCAL",
      "severity": "error"
    }
  ],
  "url": "http://169.254.169.254/latest/meta-data/",
  "valid": false
}
헤더/리디렉트/SSRF 감사 / Header redirect SSRF audit
# audit# security# headers

URL 응답 헤더, 리디렉트 경로, 보안 헤더 누락 등을 종합 감사합니다.

📥 입력
{
  "action": "audit",
  "url": "https://example.com"
}
📤 출력
{
  "action": "audit",
  "elapsed_ms": 389.4,
  "findings": [
    {
      "fix_hint": {
        "action": "Set Strict-Transport-Security: max-age=31536000",
        "doc_ref": "https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Strict-Transport-Security",
        "example": "Strict-Transport-Security: max-age=31536000; includeSubDomains",
        "summary": "Add HSTS header on server"
      },
      "message": "Strict-Transport-Security header not present",
      "rule": "MISSING_HSTS",
      "severity": "warning"
    }
  ],
  "status_code": 200,
  "url": "https://example.com"
}

모든 예시는 에이전트 API로도 조회 가능: /v1/agent/skills/f170e245-57eb-4b65-b9a1-34eec570d5db/schema

리뷰 & 평점

아직 리뷰가 없습니다. 첫 번째 리뷰를 남겨보세요!

✍️ 리뷰 작성