
先介绍一下Bing的IndexNow
一、IndexNow 是什么?
IndexNow 是一种由微软必应主导,与多家搜索引擎厂商共同推动的自动网站收录协议。
它允许网站在内容发生更新、新增或删除时,主动向搜索引擎推送通知,从而大幅缩短搜索引擎发现和抓取网站内容的时间。
变“被动等待蜘蛛爬取”为“主动通知收录”。
对标的就是国内搜索引擎如百度的主动推送,但是又比百度更纯粹,没有百度玩那么多权限,比如百度主动推送有:原创推送,快速推送,普通推送,大部分站长未必有前两个的权限。
二、IndexNow 的核心优势
极速收录:传统方式可能需要几小时甚至几天,IndexNow 通常在几分钟内即可通知到搜索引擎。
降低服务器负载:搜索引擎不再需要频繁、大量地爬取整个网站来寻找更新,减少对源站的带宽压力。
跨搜索引擎协作:IndexNow 是一个开放协议,理论上你只需要向一个支持该协议的搜索引擎提交,该信息会共享给其他合作搜索引擎(如 Bing、Yandex、Seznam 等)。目前必应是主要推动者。
精准控制:你可以精确指定哪些 URL 需要更新或删除。
三、IndexNow 的工作原理
生成密钥(API Key):你需要为你的网站生成一个唯一的 API 密钥(一串字符串)。
放置密钥文件:将包含该密钥的文件放置在你的网站根目录下,或通过 HTML 标签等方式进行验证,以证明你对网站的所有权。
提交 URL:当你发布新文章、修改页面或删除页面时,向 IndexNow 的 API 接口发送一个包含你的密钥、网站主机名以及需要更新的 URL 列表的请求。
搜索引擎处理:Bing 等搜索引擎收到通知后,会优先抓取这些 URL 并更新索引。
四、如何使用 Bing IndexNow
登录 Bing Webmaster Tools:https://www.bing.com/webmasters/ 添加并验证你的网站所有权。
然后打开 https://www.bing.com/indexnow/getstarted 在中间部分找到图下的Generate API Key

然后点击Generate后,复制生成的key,右侧下载文件,放到站点根目录,链接形式为:http[s]://www.yourdomain.com/key.txt
单条推送方法(GET)
最简单的推送方法:
https://www.bing.com/indexnow?url=你需要推送的内容url&key=复制的key
拼接好地址后,在浏览器打开,就可以实现推送到IndexNow了
PHP写法如下:
<?php
/**
* 通过GET方式推送单条URL到Bing IndexNow
*/
// ----- 配置参数 -----
$api_key = '你的IndexNow密钥';
$site_url = '你的网站域名';
$push_url = '要推送的具体URL';
$indexnow_url = "https://www.bing.com/indexnow?url={$push_url}&key={$api_key}";
// ----- 发送请求 -----
$response = file_get_contents($indexnow_url);
// ----- 处理响应 -----
if ($response !== false) {
// 查看返回的HTTP状态码
if (isset($http_response_header)) {
$status_line = $http_response_header[0];
preg_match('{HTTP\/\S*\s(\d{3})}', $status_line, $match);
$status_code = $match[1];
if ($status_code == 200) {
echo "推送成功!";
} else {
echo "推送失败,状态码:{$status_code}";
}
}
} else {
echo "推送失败,无法连接到IndexNow服务。";
}
?>
批量推送方法(POST),同样以PHP为例:
<?php
/**
* 批量推送到必应IndexNow
* @param $urls 数组,需要提交的内容URL
* @param $apiKey 你的key
* @param $host 你的网站域名
*/
function submitToBingIndexNow($urls, $apiKey, $host = null) {
if (!$host && !empty($urls)) {
$parsedUrl = parse_url($urls[0]);
$host = $parsedUrl['host'] ?? '';
}
$endpoint = "https://www.bing.com/indexnow";
$data = [
'host' => $host,
'key' => $apiKey,
'urlList' => $urls
];
$ch = curl_init();
curl_setopt_array($ch, [
CURLOPT_URL => $endpoint,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json; charset=utf-8'
],
CURLOPT_POSTFIELDS => json_encode($data),
CURLOPT_USERAGENT => 'PHP-Bing-IndexNow-Client/1.0'
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);
return [
'success' => $httpCode === 200,
'http_code' => $httpCode,
'response' => $response,
'error' => $error
];
}
// 使用示例
$apiKey = '你的Key';
$urls = [
'https://example.com/page1.html',
'https://example.com/page2.html',
'https://example.com/page3.html'
];
$result = submitToBingIndexNow($urls, $apiKey, '你的域名');
if ($result['success']) {
echo "推送成功";
} else {
echo "推送失败: 错误代码 {$result['http_code']}\n";
if ($result['error']) {
echo "错误: {$result['error']}\n";
}
}
?>
HTTP 状态码说明
IndexNow API 返回的状态码含义:
状态码 含义 处理建议
200 成功 URL已成功接收,将尽快抓取
202 已接受 请求已收到,正在处理
400 错误请求 URL格式不正确或缺少必要参数
403 禁止访问 API密钥无效或未验证网站所有权
422 无法处理 URL与主机名不匹配
429 请求过多 超出频率限制,稍后重试
5xx 服务器错误 Bing服务端问题,稍后重试
推送效果:
117.95.160.163 - - [11/Feb/2026:21:26:22 +0800] "GET /wp-admin/post.php?post=6527&action=edit&message=6 HTTP/2.0" 200 128049 "https://www.ediok.cn/wp-admin/post-new.php?wp-post-new-reload=true" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36"
52.167.144.228 - - [11/Feb/2026:21:26:45 +0800] "GET /blog/2026/02/6527.html HTTP/2.0" 200 17256 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/116.0.1938.76 Safari/537.36"
21:26:22成功发布内容,21:26:45蜘蛛来访,只用了23秒就过来抓取,速度那是杠杠的
周涛博客








评论前必须登录!
注册