3. 搜索索引雷达
搜索索引雷达直接调用 Google Search Console (GSC) 与 Bing Webmaster Tools (BWT) 官方 API,双引擎验证真实索引状态。
Google Search Console(GSC)集成
Google 每个 Cloud 项目每天限制 2,000 次 URL Inspection 请求。IndexFlow 采用双策略提高配额效率。
策略 A:通过 Search Analytics 零配额批量同步
在消耗检查配额前,IndexFlow 查询 Search Analytics API(/webmasters/v3/sites/{siteUrl}/searchAnalytics/query),获取过去 30 天有展示的 URL(dimensions: ["page"]、rowLimit: 25000),对 sitemap URL 做 SHA-256 精确匹配和尾斜杠容错匹配,并标记 gsc_index_status = 'INDEXED'。
策略 B:细粒度 URL Inspection API
对 Search Analytics 未观察到的 URL,GscInspectWorker 查询 https://searchconsole.googleapis.com/v1/urlInspection/index:inspect。
GSC 原始 coverageState |
映射的 gsc_index_status |
描述 |
|---|---|---|
Submitted and indexed / Indexed |
INDEXED |
页面已确认在 Google 索引中。 |
Crawled - currently not indexed |
CRAWLED_NOT_INDEXED |
Google 已抓取但未选择索引。 |
Discovered - currently not indexed |
DISCOVERED_NOT_INDEXED |
Google 已知 URL 但尚未抓取。 |
URL is unknown to Google / other |
NOT_INDEXED |
URL 在 Google 中没有抓取或索引记录。 |
| (Uninspected) | UNKNOWN |
页面尚未评估。 |
GSC 检查 Worker 架构
- 并发:3 个并发任务(
tokio::sync::Semaphore::new(3))。 - 节奏:请求之间休眠 250ms。
- 配额熔断器:Google 返回 HTTP 429 时立即停止并通知流水线管理器。
Bing Webmaster Tools 集成
IndexFlow 调用官方 Bing Webmaster Tools JSON API(https://ssl.bing.com/webmaster/api.svc/json)。
1. 动态站点 URL 解析(GetUserSites)
Bing 要求 API 使用精确的注册站点 URL 格式。BingProvider::resolve_site_url 使用配置的 API key 查询 GetUserSites,匹配干净域名并将资源 URL 缓存于内存。
2. 实时 URL 检查(GetUrlInfo)
IndexFlow 使用 siteUrl、url 和 apikey 调用 GetUrlInfo,提取 HttpStatus、转换为 UTC 的 LastCrawledDate 和 IsPage。有效抓取时间戳标记为 bing_index_status = 'INDEXED',HTTP 404 或空 d 对象标记为 NOT_INDEXED。
速率限制(1.5 QPS 安全区)
两个并发 worker 之间延迟 500ms。遇到 ThrottleHost、ErrorCode: 5 或 HTTP 429 时暂停 2 秒并保持 UNKNOWN,以便后续安全重试。
URL 监控与 Watchlist 时间线
站点操作员可将关键 URL 加入高优先级 Watchlist,跟踪索引状态变化。is_watched = 1 时,状态变化记录到 index_status_history,仅插入不同于上次检查的状态。
可视化时间线
/monitoring/:id 将单个 URL 的 sitemap 同步、SEO 审计、提交响应和索引状态历史组合为完整生命周期时间线。
执行检查操作
触发 Search Analytics 池同步(0 配额)
curl -X POST "https://www.indexflowing.com/docs/api/v1/pipeline/gsc-inspect/sync?site_id=1" \
-H "Cookie: if_token=<YOUR_JWT_TOKEN>"
检查 Google 或 Bing 上的单个 URL
# Query Google Search Console
curl -X POST "https://www.indexflowing.com/docs/api/v1/urls/101/inspect?engine=google" \
-H "Cookie: if_token=<YOUR_JWT_TOKEN>"
# Query Bing Webmaster Tools
curl -X POST "https://www.indexflowing.com/docs/api/v1/urls/101/inspect?engine=bing" \
-H "Cookie: if_token=<YOUR_JWT_TOKEN>"
切换 Watchlist 状态
curl -X POST "https://www.indexflowing.com/docs/api/v1/monitoring/101/watch" \
-H "Content-Type: application/json" \
-H "Cookie: if_token=<YOUR_JWT_TOKEN>" \
-d '{"watched": true}'