网页抓取服务

SteadyFetch 是一个可靠的网页抓取工具,为 AI 代理提供自动重试、断路器保护、缓存和反机器人绕过功能。

  • by carsonlabs
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 carsonlabs/steadyfetch

使用说明

SteadyFetch

AI代理的可靠网络获取。 停止因Cloudflare阻止、超时和片状刮擦而浪费时间。

SteadyFetch是一个MCP服务器,它为您的AI代理提供可靠的网络访问,具有自动重试、断路器保护、缓存和反机器人旁路功能——开箱即用。

问题

每一个接触到网络的AI代理都会碰到同一堵墙:

  • Cloudflare阻止您的请求
  • 网站返回验证码
  • 页面超时或部分加载
  • 速率限制会扼杀您的批处理作业
  • 你浪费了几个小时调试那些不稳定的地方

解决方案

一次MCP工具调用。SteadyFetch处理其余的事情。

Agent calls fetch_url("https://example.com")
  → Checks cache (instant if hit)
  → Checks circuit breaker (fail-fast if domain is down)
  → Stealth browser fetch with anti-bot bypass
  → On failure: retry with exponential backoff
  → Fallback: plain HTTP fetch
  → Cache the result
  → Return clean markdown + raw HTML

工具

工具 说明
fetch_url 完全可靠的获取——返回markdown+HTML
fetch_markdown 只返回干净的降价,针对LLM进行了优化
check_domain 域的断路器状态
cache_stats 缓存利用率指标
clear_cache 刷新缓存以获取新数据

快速开始

从PyPI安装

pip install steadyfetch
steadyfetch

然后从Claude Desktop连接:

{
  "mcpServers": {
    "steadyfetch": {
      "command": "steadyfetch"
    }
  }
}

使用Docker的自主机

docker build -t steadyfetch .
docker run -p 8200:8200 steadyfetch

配置

通过环境变量进行的所有设置:

变量 默认值 描述
PORT 8200 服务器端口
STEADYFETCH_MAX_RETRIES 3 每个URL重试次数
STEADYFETCH_CIRCUIT_THRESHOLD 5 电路断开前的故障
STEADYFETCH_CIRCUIT_COOLDOWN 120秒后重试断开的域
STEADYFETCH_CACHE_TTL 3600 缓存生存期(秒)
STEADYFETCH_TIMEOUT 30000 页面加载超时(毫秒)

运作原理

使用回退重试 --指数回退+抖动可防止重试风暴。在回退到HTTP之前尝试了3次浏览器。

断路器 --每个域的故障跟踪。连续5次故障后,域断路2分钟。防止在屏蔽你的网站上浪费时间。

缓存 --具有可配置TTL的磁盘备份缓存。重复提取是即时的。默认限制为500MB。

反机器人旁路 --具有魔术模式、导航补丁和通过Crawl4AI模拟人类行为的隐形浏览器。

优雅降级 --如果浏览器无法通过,则退回到普通HTTP。如果HTTP失败,则返回一个带有域健康状态的明确错误。永不挂起,永不默默失败。

免费vs专业

工具 免费 专业版(19美元/月)
fetch_url 是(无JS渲染,无缓存) 是(完整:JS渲染+缓存+反机器人)
check_domain 是 是
fetch_markdown -是的
cache_stats -是的
clear_cache -是的

免费层为您提供基本的HTTP获取和域健康检查。Pro解锁JS渲染、反机器人绕过、缓存和干净的markdown输出。

在MCPize上升级到Pro --19美元/月或190美元/年。

许可证

麻省理工学院