拓冰建站拓冰建站
首页 / 资讯中心 / 正文

wigolo 如何礼貌爬取:robots.txt、sitemap 优先与每域限速的完整拆解

wigolo 如何礼貌爬取robots.txt、sitemap 优先与每域限速的完整拆解【免费下载链接】wigoloThe go-to web for your AI coding agent — local-first search, fetch, crawl research over MCP. No API keys, no cloud, $0/query. Public beta.项目地址: https://gitcode.com/GitHub_Trending/wi/wigolowigolo 是一个本地优先local-first的 AI 编程代理网络工具通过 MCP 为 Claude Code、Cursor 等代理提供搜索、抓取、爬取crawl与研究能力——无需 API Key、不经过云端、零成本。很多人关心让它批量抓取一个站点时会不会变成“ rude bot”本文基于 wigolo 的爬虫源码拆解它如何做到礼貌爬取自动遵守 robots.txt、sitemap 优先、每域名独立限速外加 429 退避机制 ️为什么爬虫要“讲礼貌”批量抓取最大的风险是打扰目标站点请求过猛会被封 IP抓取被禁止的路径则不合规。wigolo 的答案是把“礼貌”做成默认行为而不是可选项——默认开启 robots 检查respectRobotsTxt默认为true见 config.ts。第一步robots.txt 规则解析每次爬取开始前crawler 会先抓取种子站点的/robots.txt并构建规则解析器crawler.ts。解析逻辑在 robots.ts 中有几个关键设计只认通配符代理只解析user-agent: *段落的规则不为自己注册特殊代理身份robots.ts最长前缀匹配判断某路径是否允许时取匹配路径最长的一条规则长度相同时Allow优先于Disallowrobots.tsCrawl-delay 不是摆设解析器会提取Crawl-delay指令并注入限速器真正影响后续请求间隔robots.ts顺藤摸瓜找 sitemaprobots.txt 里的Sitemap:声明会被提取出来作为 sitemap 探测的首选线索sitemap.ts。在 BFS 遍历过程中每一个待抓 URL 都会先过 robots 检查被禁止的路径直接跳过并记录调试日志crawler.ts。第二步sitemap 优先先抓最新页面当策略为auto时wigolo 会先探测站点是否有可用 sitemap有就走 sitemap 路径没有才回退到广度优先遍历crawler.ts。探测顺序在 sitemap-first.ts 中定义robots.txt 中声明的Sitemap:地址最权威/sitemap.xml/sitemap_index.xml。两个细节保证了探测“不误伤”sitemap 必须列出至少 5 个 URL才视为有效否则降级为普通遍历sitemap-first.ts遇到 sitemap 索引sitemapindex时最多展开 5 个子 sitemap避免在巨型索引上失控。排序策略同样讲究sitemap 里往往是按字母序排放的 URL若直接按文档顺序抓预算耗尽时最没价值的页面反而占坑。wigolo 的 sortSitemapEntries 按lastmod降序排列——最近修改的页面排在最前没有 lastmod 的再按priority降序最后保持原始顺序做稳定排序。这样在max_pages截断下存活的是最有信息量的页面。第三步每域限速器给每个站点独立排队限速器实现于 rate-limiter.ts核心是一个按域名隔离的状态表每个域名维护并发数、上次请求时间和等待队列维度默认值可覆盖方式单域并发2CRAWL_CONCURRENCY请求间隔500msCRAWL_DELAY_MS内网地址延迟0msCRAWL_PRIVATE_DELAY_MS内网并发独立配置crawlPrivateConcurrency见 config.ts它的工作机制串行间隔 并发上限双保险即使当前并发未达上限请求之间也必须满足间隔达到上限后新请求进入该域名的 FIFO 队列请求完成时再唤醒下一个rate-limiter.tsrobots 延迟自动叠加生效间隔 max(配置间隔, robots.txt 的 Crawl-delay)站点要求更慢就跟得更慢rate-limiter.ts内网更谨慎私有地址使用独立的延迟与并发参数避免对内部服务施压rate-limiter.ts。也就是说爬a.com和b.com的限速互不干扰——这是“每域限速”区别于全局单一节流的关键。彩蛋被 429 时学会退避礼貌不止于事先约定。当站点主动返回 429 并要求缓一缓时抓取路由会解析Retry-After响应头支持秒数与 HTTP 日期两种格式换算成有界的退避窗口无头文件时默认退避 60 秒且任何退避窗口上限为 5 分钟防止一个“99999 秒”的恶意响应把域名长时间挂起politeness.ts。如何上手体验 wigolo 的礼貌爬取安装后可通过 CLI 或 MCP 工具直接使用 crawl 能力文档见 docs/tools.md 与 docs/cli.md对应的技能说明在 skills/wigolo-crawl/SKILL.md爬取行为测试可参考 tests/integration/crawl。小结wigolo 的礼貌爬取可以概括为一条流水线先问 robots访问边界 Crawl-delay→ 再查 sitemap抓对页面、抓新页面→ 全程每域限速抓得慢一点→ 遇到 429 主动退避听话一点。四道关卡全部默认生效让本地代理批量抓取网页时既不越界、也不扰民 【免费下载链接】wigoloThe go-to web for your AI coding agent — local-first search, fetch, crawl research over MCP. No API keys, no cloud, $0/query. Public beta.项目地址: https://gitcode.com/GitHub_Trending/wi/wigolo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门