记录一下那天晚上的排查过程。普通收录接口一直返回 not_same_site,token 和域名都核对过。站点同时绑了 www 和 m 两个域名,还有一条老域名 301 到主站,谁也说不清校验身份落在哪个域上。

刚开始盯着「site 参数必须与 token 绑定的域名逐字一致,含 www」,折腾了半个多小时,排掉了。

这类报错背后常见的原因有几处,逐个排除就行。token 是在另一个站点下生成的,与当前域名不匹配。还有一种是提交地址写成 http 前缀,与校验时登记的 https 不一致。

少数情况下是老域名还在 301,校验身份被记在跳转后的新域名上。

先看接口返回的原始 JSON

curl -s 'http://data.zz.baidu.com/urls?site=https://www.lu0.cn&token=xxx' -H 'Content-Type: text/plain' -d 'https://www.lu0.cn/1.html'

接着把 site 参数改成协议加 www 的完整写法重试

随后在搜索资源平台确认 token 归属哪个站点

curl -s 'http://data.zz.baidu.com/site?token=xxx'

给老域名单独建一个站点做校验

别只看报错消失,验证要多做一步。返回里 success 计数与提交条数一致,第二天日志里出现对应 URL 的抓取,推送失败率归零。

这个报错基本都是参数与 token 域名不一致,别先怀疑接口坏了,把三种写法逐个试一遍更快。同一份配置在测试环境跑通,不代表线上没事,两边的默认值经常不一样。

作者 9823189