用途与定位 LookaCrawler 是免费开源的本地网页爬虫,作为 Firecrawl 的替代方案,专门为大语言模型(LLM)获取网页内容而设计。它解决的核心问题是:现代网页包含大量 HTML 冗余(脚本、追踪像素、嵌套 div、导航头、样式表),每页会浪费数千 Token。LookaCrawler 通过自动裁剪这些内容,输出干净的 Markdown,官方称在真实网页上可中位数削减约 90% 的 Token(8 个站点中减少 21%–98%,见 benchmark-live.ts)。
主要能力
- Token 经济优先:自动清除脚本、样式、内联 SVG、追踪标签、导航、页脚、冗余表单,以及链接密度超过 80% 的样板容器。
- 链接与图片格式化:link_format 可选 inline(标准 Markdown)、references(脚注引用 [1],在重复 URL 上节省约 25% Token)或 strip(纯文本);image_mode 可选 ignore(零 Token)、alt_only(保留语义上下文且不引入 URL 冗余)或 markdown(完整 )。
- 自主映射与递归爬取:map_website 检查 /robots.txt、站点地图和根锚点以发现域名下所有页面;crawl_website 进行广度优先自主爬取,支持最大深度、最大页数、URL 模式过滤(子串、* 通配符)和实时 Token 统计。
- 爬取前浏览器操作:在 Playwright 中提取内容前自动执行点击、滚动、输入和等待(例如关闭 Cookie 横幅、滚动触发无限加载、展开折叠面板)。
- 双混合爬取引擎:fast 模式使用超快原生 HTTP GET 并带退避,遇到反爬挑战时自动升级为 deep;deep 模式使用无头 Playwright 启动真实 Google Chrome 并施加 stealth 补丁(清除 navigator.webdriver、伪装 WebGL、剥离 CDP 泄露),以透明爬取受 Cloudflare/Turnstile 保护的页面。
- 原生 MCP 生态:提供工具 extract_web_content、crawl_website、map_website、batch_extract_web_content、extract_structured_data、extract_contacts、search_places、discover_local_leads、deep_enrich_lead、lint_anti_slop、lookup_social_profile、search_social_intent、audit_company_website、analyze_competitors、generate_growth_plan、gtm_pipeline_run;资源为 crawler://metrics 的实时遥测和 crawler://cache/stats 的缓存分析;提示词模板包括 crawl-and-summarize 和 compare-pages。
- 实体提取:contacts 提取邮箱、电话、WhatsApp 链接和社交资料;places 返回结构化的 Google Maps 商业记录,并输出防公式注入的 CSV。
- B2B 线索发现:通过 maps(Google Maps 引擎)和 enrich,爬取公司自有网站以获取经过验证的邮箱、社交账号和决策人信息。
- GTM 工具集(无需付费 API):audit(SEO + 转化清单)、intel(审计 + Maps 竞品评论 + 确定性增长计划)、gtm(Maps 发现、丰富、外联草稿写入 JSONL/CSV,从不发送任何内容)、antislop(AI 垃圾文案检查器)、intent(pt-BR/EN 购买意图评分)、social-lookup 和 intent-search(公开资料元标签、Reddit .json)、daemon(Maps 爬虫 Web 模式服务)。
- 本地 SQLite 缓存:将提取的 Markdown 存储在 crawler_cache.sqlite 中,避免重复网络请求。
- 结构化 JSON 与元数据提取:提取 Open Graph 标签(og:title、og:description)、发布日期、规范 URL 和自定义 CSS 选择器。
使用方式
- MCP 一键配置(Claude Desktop 与 Cursor):将 LookaCrawler 添加到 claude_desktop_config.json 或 Cursor MCP 设置中,随后可提示 Claude 或 Cursor:“Crawl https://example.com/docs and extract the API documentation using LookaCrawler.”
- 安装:需要 Bun 1.1+(具备原生 SQLite 的高性能运行时)。
- CLI 使用:支持 fast/deep 等模式。可选环境变量:LOOKACRAWLER_INSECURE_TLS=true 接受 TLS 拦截代理的伪造证书(默认关闭,不可用于不受信网络);LOOKACRAWLER_PROXIES 以逗号或空格分隔的代理 URL 列表实现轮换;LOOKACRAWLER_ALLOWED_PROXIES 列出受信的本地代理;LOOKACRAWLER_ALLOW_LOCAL=true 关闭出站防护并直接与代理通信(仅限本地开发)。每次出站连接都经过内置回环出口防护,解析目标一次,拒绝私有/链路本地/回环地址,并连接到已校验的 IP,覆盖重定向和 deep 模式下页面自身发起的请求(fetch、XHR、WebSocket),防止 DNS 重绑定。
- Google Maps 引擎(可选):maps 命令、daemon、gtm、intel 以及 discover_local_leads MCP 工具驱动一个用 Go 编写的 Google Maps 爬虫,源码位于 google-maps-scraper/(MIT,来自 coelhobugado/google-maps-scraper,含本地修复)。需 Go 1.26+ 构建,install-browser 还需 Node.js 18+,Docker 镜像已预构建。二进制在 cli.ts 同级、../google-maps-scraper/ 或 $MAPS_LEADS_BIN 查找。缺少时 maps 会快速失败并给出明确信息;extract、crawl、contacts、places 和 enrich 不受影响。传入 --email 可让爬虫在发现阶段提取公开邮箱。
- Docker 部署:容器监听 0.0.0.0,因此始终需要 Token。未设置 LOOKACRAWLER_SSE_TOKEN 时,每次启动生成随机 Token 并打印在容器日志中。
- 测试:提供测试套件。
适用场景与限制 适用于需要为 LLM 提供干净网页内容、降低 Token 成本、绕过低强度反爬的本地爬取场景,以及 B2B 线索发现和 GTM 流程。限制与注意事项:部分功能依赖 Bun 1.1+;Google Maps 引擎需额外构建 Go 二进制;使用代理时 DNS 在本机解析,地理 DNS/CDN 会跟随本机位置而非代理位置,SOCKS4 无法访问仅 IPv6 站点;LOOKACRAWLER_INSECURE_TLS 不可用于不受信网络;LOOKACRAWLER_ALLOW_LOCAL 仅限本地开发。项目由 LookADev 构建维护,采用 MIT 许可证。