Форум OlegON > Компьютеры и Программное обеспечение > Сеть > Создание сайтов и поисковая оптимизация (SEO)

Google Indexing API, как настроить, использовать, и избежать ошибки 403

04.08.2020 3:07


14.07.2020 21:18
OlegON
 
Долгое время головной болью вебмастеров было уведомление Google о том, что какие-то странички на их сайте появились или исчезли. Теперь тихо и без особых фанфар появилась такая фича, как Google Indexing API. Сам Google сообщает
Цитата:
На данный момент Google Indexing API может сканировать страницы с структурированными данными JobPosting или BroadcastEvent, которые встроены в VideoObject
Фактически же это хорошая замена канувшим уже в лету и плохо работающим пингерам, которые я все равно еще не отключал... Приходит бот и ладно...




Но, вернемся к Google Indexing API.

Во-первых, подчеркну, что работает API для всех страниц. По крайней мере, у меня никаких JobPosting нет, только Article, но странички заходят влет.

Во-вторых, не ожидайте напихать в индекс мусор. Бот придет, страничку подберет, а потом может и выкинуть. Все правила, распространяющиеся на запрос индексации в консоли, распространяются и на API.

Вот основная справка:

Да, от sitemap отказываться все равно не рекомендую. Не путайтесь, что вам там рассказывают по ссылке выше.

Необходимо создать проект и сервисную учетку. Она будет конских размеров и к вашему емейлу отношения иметь не будет. Да, на учетках GSuite все тоже замечательно работает. В смысле, что авторизоваться для настройки всего этого счастья можно и из под GSuite-учетки. Я когда упирался, собирался уже найти свою старую гугловую учетку, вот это делать не надо.

Создадите учетку, главное, что нужно сделать - получить JSON-файлик этой самой учетки и, 100 раз подчеркиваю, учетку добавить в Search Console, как владельца(!) не полную, а именно владельца. Иначе Google Indexing API будет выдавать вам ошибку 403, доводя до отчаяния и матов, как меня.

Все описания, которые сейчас есть в интернете, описывают, как добавить владельца в старой версии консоли. Я решил этот квест за вас. Заходите в Пользователи и разрешения, но не спешите жмакать в "Добавить пользователя". У вас есть владелец уже в списке, вот тыкайте в три точки справа от надписи "Владелец"




это как раз то, что вам нужно. Вот в том разделе и добавьте делегированного владельца, ту сервисную учетку, которую вы завели раньше.

Дальше все достаточно просто, кидаете себе на хост где-то файлик (я использую PHP, соответственно, файлик брал на этом языке)

Код:
require_once 'google-api-php-client/vendor/autoload.php';

$client = new Google_Client();

// service_account_file.json is the private key that you created for your service account.
$client->setAuthConfig('service_account_file.json');
$client->addScope('https://www.googleapis.com/auth/indexing');

// Get a Guzzle HTTP Client
$httpClient = $client->authorize();
$endpoint = 'https://indexing.googleapis.com/v3/urlNotifications:publish';

// Define contents here. The structure of the content is described in the next step.
$content = '{
  "url": "https://olegon.ru",
  "type": "URL_UPDATED"
}';

$response = $httpClient->post($endpoint, [ 'body' => $content ]);
$status_code = $response->getStatusCode();
Кто бы что ни придумывал, на HTTPS ресурсы работают замечательно. В setAuthConfig укажете путь к файлику, который вы получили раньше, при заведении сервисной учетки. Все, больше ничего не надо. Можете $status_code себе выводить на первое время. Никакие приседания и дополнительные авторизации не требуются, в т.ч. через Oauth2, как я сначала искал. В $status_code должно быть 200, если заявка на индексирование принята.

Некоторый геморрой я получил при попытке зацепить библиотечку на которой вышеуказанный пример работает. Дело в том, что на данный момент релизнулась версия 2.6, однако, к моему удивлению, ни git clone, ни прямое скачивание по линкам исходников версии не давали полный комплект файлов. Все время чего-то не хватало. Так вот, чтобы хватало, берите 2.5 и конкретно файл google-api-php-client-2.5.0.zip оттуда, а не исходники.

Необходимо упомянуть, что я еще включил API в консоли точно не могу сказать, что это обязательно. Однако, включил и с этим работает. Заодно и позволяет видеть, что оно работает.

Задавайте вопросы, если что-то не описал, поправляйте...

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.