前言
在网站SEO之初,不管是开发者的工具站、资讯站还是电商人的外贸多历战、企业展示站,一般我们是先想办法让搜索引擎收录,通常的做法是使用搜索引擎提供的站长管理员工具,比如Bing Webmaster,来验证网站,提交站点地图,等待搜索引擎收录。
后续,每发布一篇文章,我们一般有两种
- 什么都不做,等待搜索引擎发现或通过站点地图来爬取
- 要么主动去提交链接,一般会有配额限制,但一般网站足够了
这两种方法,第一种不够主动,你不知道爬虫啥时候来,第二种有点麻烦,而且有时候会忘记提交。
那么有没有更好的方法来实现无人干预主动推送呢?
还真有,而且对于Bing搜索引擎来说有两种实现方式。
通过 URL Submission API主动推送
注意,该方式需要有一些编程基础,如果没有编程基础请看第二种方法
Bing提供了非常丰富的API,本次我们用到的是URL Submission API供我们推送URL和内容到搜索引擎,其中URL可以实现批量推送。一般我们使用单个URL推送即可,当我们在发布完文章后,触发推送API即可。,详细的可参考该API IWebmasterApi.SubmitUrl
的详细文档,以下做一个简单介绍
IWebmasterApi.SubmitUrl
支持XML和json请求,其请求内容包含站点链接和文章链接。官网有dotnet例子,本文给出PHP
代码示例,如下(json请求)
<?php
// Bing Webmaster API密钥
$apiKey = 'your_api_key_here';
// 网站URL和要提交的URL
$siteUrl = 'http://example.com';
$urlToSubmit = 'http://example.com/url1.html';
// API端点
$endpoint = 'https://ssl.bing.com/webmaster/api.svc/json/SubmitUrl?apikey=' . $apiKey;
// 构建请求数据
$data = array(
'siteUrl' => $siteUrl,
'url' => $urlToSubmit
);
// 将数据转换为JSON格式
$jsonData = json_encode($data);
// 初始化cURL会话
$ch = curl_init($endpoint);
// 设置cURL选项
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 执行cURL请求
$response = curl_exec($ch);
// 检查是否有错误
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
} else {
echo 'URL submitted successfully!';
}
// 关闭cURL会话
curl_close($ch);
?>
你需要将your_api_key_here
替换为你的Bing Webmaster API密钥。 你需要将$siteUrl
和$urlToSubmit
替换为你自己的网站URL和要提交的URL(该URL为提交文章后的链接,要动态替换)。其中API密钥在Bing Webmaster设置里申请,选择API密钥
这段代码放在什么地方呢?一般是放在你发布文章,然后生成网站链接的代码后面。
使用这段代码还有以下注意事项:
- 代码中返回的是文本,看你的网站返回要求,可能需要返回json格式,请注意调整
- 确保你的服务器支持cURL库,如果不支持,请调整为你的建站程序所使用的post方法。
- 确保你的API密钥是有效的,并且你有权限提交URL到指定的网站。
- 请随时关注官方文档变化,以便及时做出调整。
Bing Webmaster提供了非常多的API,你还可以使用批量提交等各类API,请按需使用
通过indexnow协议主动推送到Bing及其他搜索引擎
什么是indexnow协议?
IndexNow 是一个由微软 Bing 和 Yandex 共同推出的协议,旨在帮助搜索引擎更快地发现和索引网站上的新内容。通过使用 IndexNow,网站管理员可以即时主动通知搜索引擎他们网站上的新内容或更新内容,以便搜索引擎知道 URL 及其内容已被添加、更新或删除,从而允许搜索引擎在其搜索结果中快速反映此更改。
如果没有 IndexNow的话,搜索引擎可能需要几天到几周的时间才能发现内容已更改,因为搜索引擎不会经常抓取每个 URL。借助 IndexNow,搜索引擎可以立即获得已更改的 URL,帮助他们优先抓取这些 URL。
哪些搜索引擎支持indexnow
IndexNow得到了以下搜索引擎的支持
- Microsoft Bing
- Naver
- Seznam.cz
- Yandex
- Yep
如何使用 IndexNow
使用插件
IndexNow有众多的插件可以使用。
- 支持
wordpress
,Joomla!
,drupal
等多种CMS,具体可查看这里,大多为国外系统。
- 同时,
Cloudflare
也提供了支持。
编程实现
如果你所使用的CMS不支持插件,也没有使用Cloudflare,那么需要编程实现。非常简单,官方文档也只有一页。
操作步骤:
- 生成 API 密钥: 你需要生成一个唯一的 API 密钥,并将其放在你的网站根目录下。这个密钥用于验证请求的合法性。
- 提交 URL: 当你有新的内容或更新内容时,你可以通过发送一个 HTTP POST 请求来通知搜索引擎。
示例代码
代码和API生成可参考Bing的文档,这个更具操作性。打开页面需要往下拉。
以下是一个使用 PHP 通过 IndexNow 协议向其提交 URL 的示例代码。
代码中是提交到了api.indexnow.org,只提交一次即可,支持的搜索引擎会相互通知:
复制<?php
// IndexNow API 密钥
$apiKey = 'your_api_key_here';
// 要提交的 URL
$urlToSubmit = 'http://example.com/new-page.html';
// IndexNow API 端点
$endpoint = 'https://api.indexnow.org/IndexNow';
// 构建请求数据
$data = array(
'host' => 'example.com',
'key' => $apiKey,
'urlList' => array($urlToSubmit)
);
// 将数据转换为 JSON 格式
$jsonData = json_encode($data);
// 初始化 cURL 会话
$ch = curl_init($endpoint);
// 设置 cURL 选项
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
// 执行 cURL 请求
$response = curl_exec($ch);
// 检查是否有错误
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
} else {
echo 'URL submitted successfully!';
}
// 关闭 cURL 会话
curl_close($ch);
?>
其中
- API 密钥: 你需要将
your_iapi_key_here
替换为你的 IndexNow API 密钥。 - 要提交的 URL: 你需要将
$urlToSubmit
替换为你想要提交的 URL。 - API 端点: 这是 IndexNow API 的端点,一般不用修改,请留意官方文档变化。
- cURL 请求: 使用 cURL 库发送 POST 请求,将 JSON 格式的数据发送到 API 端点。
这段代码同样一般是放在你发布文章,然后生成网站链接的代码后面。
使用这段代码还有以下注意事项:
- 确保你的服务器支持 cURL 库。
- 确保你的 API 密钥是有效的,并且你有权限提交 URL 到指定的网站。
- 你可能需要根据 IndexNow API 的文档调整请求和响应的处理方式。
通过这种方式,你可以使用 PHP 通过 IndexNow 协议向 Bing 和 Yandex 等提交 URL,从而加快搜索引擎的索引过程。
总结
从以上介绍,可以看出,IndexNow有明显优势:
- 快速索引: 通过主动通知搜索引擎,网站的新内容可以更快地被索引。
- 减少爬虫流量: 由于搜索引擎知道哪些页面已经更新,它们可以减少不必要的爬虫流量,从而节省带宽和服务器资源。
- 简单易用: IndexNow 拥有众多插件(注意,有些插件可能是收费的),同时提供了一个简单的 API,网站管理员可以通过发送一个简单的 HTTP POST 请求来通知搜索引擎。
- 支持众多搜索引擎:提交一次,加快多个引擎的索引。
非常推荐使用这种方式。
细心的朋友可能发现了,支持的搜索引擎里目前并没有Google!
Google曾表示其抓取机制非常高效,并且该公司正在不断提高其抓取效率。但是,其也确认将测试 IndexNow]协议。在Google没有支持之前,我们是否有方法主动推送给Google呢?是有方法的,但好像并不总是有效,后面看情况再介绍,同样需要一些编程知识,对网站也有一些要求。