API 推送开发实战
API 推送是三种提交方式里最快的一种,也是唯一需要开发的。本篇把从获取 token、调用接口到解读返回码的完整链路讲清楚。
第一步:获取调用入口与 token
进入搜索资源平台的 API 推送工具后,会看到接口调用地址,其中包含一个 token——由 16 个英文数字组成的字符串。接口地址形如:
http://data.zz.baidu.com/urls?site=您的域名&token=您的token
第二步:调用接口
接口接受 POST 请求,body 为纯文本(text/plain),每行一个 URL。官方给出了多种语言的推送示例。
curl 推送示例
将要提交的 url 数据写入一个本地文件(如 urls.txt,每个 url 占一行),然后调用:
curl -H 'Content-Type:text/plain' --data-binary @urls.txt "http://data.zz.baidu.com/urls?site=www.example.com&token=您的token"
POST 请求示例
请求头携带 Host 与 Content-Type,body 每行一个网址:
POST /urls?site=www.example.com&token=您的token HTTP/1.1
User-Agent: curl/7.12.1
Host: data.zz.baidu.com
Content-Length: 83
http://www.example.com/1.html
http://www.example.com/2.html
php、python、java 等语言可参照这个过程推送,本质就是「向接口 POST 一个每行一个 URL 的纯文本」。
第三步:解读返回结果
推送后通过状态码和字段判断是否成功。
状态码 200 表示推送成功,返回字段:
success:成功推送的 url 条数;remain:当天剩余的可推送 url 条数;not_same_site(可选):因不是本站 url 而未处理的列表;not_valid(可选):不合法的 url 列表。
状态码 4XX 或 500 表示推送失败,常见错误:
| 状态码 | 报错信息 | 含义 |
|---|---|---|
| 400 | site error | 站点未在站长平台验证 |
| 400 | empty content | post 内容为空 |
| 400 | only 2000 urls are allowed once | 每次最多只能提交 2000 条链接 |
| 400 | over quota | 超过每日配额,再提交无效 |
| 401 | token is not valid | token 错误 |
| 404 | not found | 接口地址填写错误 |
| 500 | internal error | 服务器偶然异常,重试通常成功 |
六条必知的使用纪律
官方问答里的关键提醒:
- 提交时机:页面链接产生或发布时立即提交,效果最好;
- 重复提交旧链接:会浪费当日配额,且长期重复提交会被下调配额、甚至失去 API 推送权限;
- 每次提交上限:单次最多 2000 条;
- 配额是动态的:可提交链接数量上限根据您提交的新产生有价值链接数量决定,提交的优质新链接越多,上限越高;
- 重复提交不计数:已提交过的链接再次提交,success 不会统计;
- 失败要处理:报错的链接无法提交成功,程序里应根据错误码做相应处理。
小结
API 推送实战要点:拿 token、POST 纯文本、按状态码做事。工程上把它接进 CMS 的「发布」动作——内容一上线就自动推送,既抢时间又省人工。
