资讯动态

又快又稳不封号:剖析 web-search-mcp 的并发提取、速率限制与 HTTP/2 容错恢复机制

发布时间:2026/10/14 20:54:27 来源:尧图企业网站定制
人工智能MCP 服务【免费下载链接】web-search-mcpA simple, locally hosted Web Search MCP server for use with Local LLMs项目地址https://gitcode.com/gh_mirrors/we/web-search-mcp点击查看免费下载web-search-mcp是一个本地部署的网络搜索 MCP 服务器无需任何 API Key即可为本地 LLM如 LM Studio、LibreChat 搭配 Qwen3、Gemma 3提供多引擎网页搜索与完整页面内容提取能力。本文将剖析它的三大核心机制——并发提取、速率限制、HTTP/2 容错恢复看看这个开源项目如何让抓取网页这件事变得又快、又稳、还不被封号。一、什么是 web-search-mcp免 API Key 的本地搜索 MCP传统给 AI 接联网搜索往往要申请搜索引擎 API、付费、还要担心配额。而 web-search-mcp 的思路很直接用 Playwright 无头浏览器直接访问 Bing、Brave用 axios 直连 DuckDuckGo三级降级Bing Brave DuckDuckGo见 src/search-engine.ts对本地 LLM 完全透明。它通过 MCPModel Context Protocol对外暴露三个工具工具用途full-web-search综合搜索 抓取结果页全文get-web-search-summaries轻量搜索只返回摘要片段get-single-web-page-content提取单个指定 URL 的正文工具的完整参数说明可查阅 docs/API.md。二、为什么快多页面并发提取 超时保护full-web-search拿到 N 条搜索结果后不是逐个串行去抓正文而是一次性并发提取。核心逻辑在 src/enhanced-content-extractor.ts 的extractContentForResults方法中超额备胎目标只要 5 条就会最多处理targetCount × 2上限 10 条URL给失败留出冗余名额并发发起每个 URL 独立成一个 Promise最后用Promise.all汇总src/enhanced-content-extractor.ts#L449双重超时保险单页抓取超时设 6 秒外层再用Promise.race挂了一个 8 秒的看门狗即使某个 Promise 卡死也不会拖垮整批任务src/enhanced-content-extractor.ts#L410-L422失败隔离单页失败只会被标记为fetchStatus: error并附上具体错误原因如403 Forbidden - Access denied不会中断其他页面成功优先最终结果先放成功的再补失败的保证 LLM 拿到的是有效内容。也就是说最慢的那个页面只决定多等几秒而不是整批超时。双通道策略axios 先跑浏览器兜底抓取单页时优先用轻量的 axios 发 HTTP 请求随机挑选真实浏览器请求头见 src/enhanced-content-extractor.ts#L325-L361当出现 403/429/503、超时、Please enable JavaScript、captcha 等信号时自动判定这个页面需要浏览器切换到无头浏览器提取src/enhanced-content-extractor.ts#L278-L308。浏览器通道还会拦截并丢弃图片、字体、媒体资源只加载必要内容进一步提速。三、为什么稳双闸门速率限制速率限制器实现得非常克制全部代码就在 src/rate-limiter.ts 一个类里包含两层闸门并发闸门底层用pLimit(5)同一时刻最多 5 个请求真正执行其余排队等待配额闸门默认每分钟最多 10 个请求src/search-engine.ts#L13 处注入。一旦触顶直接抛出提示Rate limit exceeded. Please wait N seconds让调用方明确等待而不是疯狂重试。这套设计的效果是无论 LLM 一口气让 AI 搜多少东西对外发出的请求节奏都被削峰成平稳的细水长流——既避免自家机器被打爆也避免对目标网站形成瞬时压力。四、为什么不封号一整套拟人化反检测方案无头浏览器最大的风险是被反爬系统识别。web-search-mcp 从四个层面把自己伪装成一个普通访客1. 启动参数去除自动化特征浏览器池src/browser-pool.ts启动 Chromium 时携带--disable-blink-featuresAutomationControlled、--no-sandbox等参数直接抹掉最常见的自动化指纹。2. 随机化数字指纹每个页面请求都会随机抽取真实浏览器的 User-AgentChrome / Firefox 多版本5 种常见屏幕分辨率之一1920×1080、1366×768 等美东、美西、欧洲、东京等时区之一。同一个程序两次访问指纹完全不同。3. 隐身脚本Stealth Scripts在页面任何脚本执行前注入初始化脚本src/enhanced-content-extractor.ts#L119-L150把navigator.webdriver改为undefined、伪造 plugins 和 languages、修补 permissions API——这些都是自动化检测脚本最爱查的体检项。4. 模拟人类行为浏览器提取时还会随机移动鼠标、随机滚动页面、随机停顿 500~1500 毫秒src/enhanced-content-extractor.ts#L249-L276行为轨迹与真人浏览几乎无法区分。再叠加第三节提到的限速 并发控制温和且拟人的访问模式就是它长期可用的关键。五、HTTP/2 容错协议错误自动降级恢复现代网站普遍启用 HTTP/2但无头浏览器在代理/隧道环境下经常出现ERR_HTTP2_PROTOCOL_ERROR。web-search-mcp 的做法是检测 → 降级 → 重试三步走src/enhanced-content-extractor.ts#L174-L219捕获page.goto的异常检查错误信息是否包含ERR_HTTP2_PROTOCOL_ERROR或HTTP2关闭当前浏览器上下文新建一个带Connection: keep-alive请求头的上下文倾向走 HTTP/1.1 通道用更短的 6 秒超时重新导航成功后照常提取内容、关闭上下文。整个过程对上层完全透明——LLM 只看到内容拿到了或者拿到了一个明确的错误原因永远不会因为协议抖动而白等。六、一键调优关键环境变量清单所有机制都暴露为环境变量在mcp.json中配置即可参考 mcp.json 与 README.md变量默认值作用MAX_CONTENT_LENGTH500000单页最大内容字符数内容太长可设为 10000DEFAULT_TIMEOUT6000单请求默认超时毫秒追求更快可设 4000MAX_BROWSERS3浏览器池上限内存紧张可降到 1BROWSER_TYPESchromium,firefox轮转使用的浏览器类型BROWSER_FALLBACK_THRESHOLD3axios 失败几次后切浏览器RELEVANCE_THRESHOLD0.3搜索结果相关性质量门槛0.0-1.0FORCE_MULTI_ENGINE_SEARCHfalse强制尝试全部引擎并择优返回例如响应太慢时把DEFAULT_TIMEOUT调低 MAX_BROWSERS调小就是官方推荐的降速减压组合。七、总结web-search-mcp 给本地 LLM 上网冲浪的思路值得借鉴并发提速、限速保稳、拟人防封、协议容错四招各司其职又互相咬合。它的代码量不大但每一个模块——src/rate-limiter.ts、src/browser-pool.ts、src/search-engine.ts、src/enhanced-content-extractor.ts——都是可以直接抄作业的防坑经验。如果你也在给本地模型加联网能力不妨从这套架构开始。赞分享人工智能MCP 服务【免费下载链接】web-search-mcpA simple, locally hosted Web Search MCP server for use with Local LLMs项目地址https://gitcode.com/gh_mirrors/we/web-search-mcp点击查看免费下载相关推荐Earthly如何做到又快又稳深度剖析BuildKit、DAG并行执行与LLB转换原理Earthly如何做到又快又稳深度剖析BuildKit、DAG并行执行与LLB转换原理 Earthly 是一个超简单的构建框架build frameworkCI/CDDevOps构建工具Apache Pulsar PIP-327managedLedgerForceRecovery 强制恢复不可恢复错误的 Topic 机制设计与源码剖析Apache Pulsar PIP 327managedLedgerForceRecovery 强制恢复不可恢复错误的 Topic 机制设计与源码剖析 本文围消息队列流处理后端微服务消息路由jetson-ffmpeg常见问题排查从编译错误到运行时异常的解决方案jetson ffmpeg常见问题排查从编译错误到运行时异常的解决方案 jetson ffmpeg是针对Jetson Nano平台优化的FFmpeg扩展通过创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑