Содержание
Введение
Доброго времени суток. В этой статье я хочу дополнить первую часть рассказа о том как же донести поисковику информацию о своём сайте. Ниже будут рассмотрены такие темы как IndexNow, security.txt, schema.org.
IndexNow
IndexNow - система разработанная и выпущенная в октябре 2021 года компаниями Майкрософт и Яндекс. Была создана чтобы ускорить процесс индексации сайтов путём запроса по API, вместо ожидания прохождения ботами. Удобно правда?
Но есть и минусы. Первый касаемо гарантий индексации, их нет. Второй в том что самая популярная поисковая система в мире google до сих пор не имеет такого api, вместо него на Google search console есть кнопка позволяющая отправить страницу на индексацию (свой аналог indexapi но только с ui). Есть обходные пути через сторонних ботов, но удобство и безопасность никто не гарантирует
Рассмотрим простой пример как отправить сайт на индексацию через API Yandex:
Создаём ключ из символов
a-z
,A-Z
,0-9
,-
, кодировкой utf-8 и длиной от 8 до 128Размещаем в текстовом файле его по адресу и внутри файла также вписываем ключ.
https://example.com/<key>.txt
. Где<key>
- сгенерированный ключДалее нам надо отправить нашу страницу или несколько на индексацию
Для одной страницы можно воспользоваться GET. Запросы в примерах отправляются через curl:
curl -G "https://yandex.com/indexnow" \
--data-urlencode "url=https://pavlusha.me" \
--data-urlencode "key=DzDudfAkpodpKDuOocXuAkJkBipKvYWrcYhigHRFUlxpFgRRji" \
--data-urlencode "keyLocation=https://pavlusha.me/DzDudfAkpodpKDuOocXuAkJkBipKvYWrcYhigHRFUlxpFgRRji.txt"
Но если вы хотите несколько, то нужно использовать POST (подробнее):
curl -X POST "https://yandex.com/indexnow" \
-H "Content-Type: application/json; charset=utf-8" \
-d '{
"host": "pavlusha.me",
"key": "DzDudfAkpodpKDuOocXuAkJkBipKvYWrcYhigHRFUlxpFgRRji",
"keyLocation": "https://pavlusha.me/DzDudfAkpodpKDuOocXuAkJkBipKvYWrcYhigHRFUlxpFgRRji.txt",
"urlList": [
"https://pavlusha.me"
]
}'

Как видно это удобный инструмент, который может понадобиться когда мы хотим чтобы описание страницы обновилось или новая страница попала в поиск как можно быстрее (к примеру пасхальная или новогодняя). Также удобство такого способа в том что мы может подключить это к нашему приложению, что позволяет писать CMS, а после создания и деплоя страницы быстро отправлять их в поиск.
Стоит упомянуть что bing и yandex не гарантируют вам индексацию страницы. это написано в их документации. По внутренним критериям индексации может не пройти.
Schema.org
Schema.org - это описание сущностей вашего сайта, его предназначения и дополнительная информация. К примеру если на сайте в схеме будет указан локальный бизнес, то ваш сайт может оказаться в топ 1 в регионе по поиску где вы находитесь. Таким образом клиентам, которые нашли вас в интернете, в той же локации может захотеться прогуляться в оффлайн магазин.
Пример schema
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Company name",
"image": "https://example.com/logo.png",
"@id": "https://example.com",
"url": "https://example.com",
"telephone": "+7-495-123-45-67",
"address": {
"@type": "PostalAddress",
"streetAddress": "Улица Пример, 10",
"addressLocality": "Москва",
"postalCode": "101000",
"addressCountry": "RU"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 55.7558,
"longitude": 37.6173
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "09:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "10:00",
"closes": "15:00"
}
],
"priceRange": "$$",
"sameAs": [
"https://www.facebook.com/example",
"https://www.instagram.com/example",
"https://vk.com/example"
]
}
</script>
Данный скрипт вставляется чаще всего в `<head>` страницы как и большинство SEO тегов, к примеру OpenGraph. Полностью заполненный такой профиль помогает поисковиками таким как google увидеть к примеру рабочие часы, а локация как раз будет сопоставлятся с вашей если Вы того разрешите и с большей вероятностью эта организация (магазин и т.п.) окажется в топах выдачи.
Пример сайта в котором указана schema


Сайт указан в google бизнес аккаунте и после того как мы создали схему для него с отзывами они также отражены в карточке о компании
Обнаружить какие сущности есть на сайте или провалидировать schema можно на официальном сайте https://validator.schema.org/ В данном примере на странице со скачиванием приложения я имею aggregateRating
который отражает рейтинг приложения. Как видно в гугл это отражается в виде отзывов отображаемых на странице компании или прямо в поисковой выдаче.

В интернете можно найти утверждения что schema.org уже себя исчерпал и не требуется, особенно сейчас, когда существует ИИ. Выскажу мнение что далеко не все предпочитают ИИ стандартному поиску и замене браузера на своих устройствах, а учитывая региональны особенности всё же многие остаются с google и яндекс, поскольку для их работы не нужен VPN.
Security.txt
Security.txt - это текстовый файл который мы можем разместить на нашем домене (к примеру https://example.com/.well-known/security.txt
) для того чтобы знать куда отправить информацию об уязвимостях на сайте.
Все поля данного файла не обязательны, кроме Contact (минимум 1). Такой формат security.txt описывает стандарт. Сам стандарт описан в RFC 9116.
Внедряется он постепенно. Cloudflare уже начал оповещать пользователей об отсутствии данного файла в своей сводке по безопасности в панели. Пример полного файла:
Contact: mailto:security@example.com
Contact: https://example.com/security-contact
Contact: tel:+1-555-555-5555
Expires: 2024-12-31T23:59:59Z
Encryption: https://example.com/pgp-key.txt
Signature: https://example.com/.well-known/security.txt.sig
Policy: https://example.com/security-policy
Preferred-Languages: en, es, fr
Canonical: https://example.com/.well-known/security.txt
Hiring: https://example.com/jobs/security
Acknowledgments: https://example.com/security/hall-of-fame
Кратко описание полей:
Contact: контакты для связи, может иметь множество записей. (минимум 1 должен быть указан)
Expires: дата до который эта информация в файле актуальна.
Encryption: ссылка на ключ шифрования.
Signature: подпись файла.
Policy: политика безопасности.
Preferred-Languages: язык который лучше использовать для связи.
Canonical: канонический URL (оригинал сайта)
Hiring: вакансии для исследователей безопасности.
Acknowledgments: сайт благодарности для исследователей безопасности, сообщивших об уязвимостях.
Подпись файла security.txt
Для чего это надо? Это подтверждает, что файл не подделан и исходит от владельца сайта. Без подписи любой может создать фейковый security.txt. Подпись создаётся с помощью криптографических инструментов.
Пример подписи с использование GPG (GNU Privacy Guard)
Перед тем как создавать ключ убедитесь, что у вас установлен GPG. Например, на Linux: sudo apt install gnupg
, на macOS: brew install gnupg
(homebrew).
Если до этого у вас не было GPG то создайте ключ шифрования через gpg --gen-key

При использовании команды потребуется ввести имя и почту для идентификации пользователя (чья эта подпись)

Вводим или пропускаем фразу для защиты данного ключа (эта фраза используется при использовании подписи). После будут сгенерированы файлы и доступны в системе. Пример MacOS /Users/<user>/.gnupg
Экспорт публичного ключа может быть выполнен через gpg --armor --export <email> > pgp-key.txt
Создание подписи файла
Создаём security.txt.
Contact: mailto:pavel.zavadski@pavlusha.me Encryption: https://pavlusha.me/pgp-key.txt Signature: https://pavlusha.me/.well-known/security.txt.sig Preferred-Languages: en, ru Canonical: https://pavlusha.me/.well-known/security.txt
Пример файла.
Заполняем его.
Подписывается приватным ключом
gpg --armor --detach-sign --output security.txt.sig security.txt
Флаг --armor создаёт подпись в текстовом формате ASCII.
Флаг --detach-sign создаёт отдельный файл подписи (не встраивает подпись в сам файл). Это как раз наша подпись
Флаг --output позволяет указать точное название файла. По стандарту он может быть
security.txt.asc
илиsecurity.txt.sig
Получается файл .sig, который выкладывается по указанному URL
https://pavlusha.me/.well-known/security.txt.sig
.Исследователи могут проверить подлинность security.txt (
https://pavlusha.me/.well-known/security.txt
) , загрузив .sig (https://pavlusha.me/.well-known/security.txt.sig
) и публичный ключ (из "Encryption" -https://pavlusha.me/pgp-key.txt
Импортировать публичный ключ
gpg --import pgp-key.txt
Проверка security.txt
gpg --verify security.txt.sig security.txt

gpg --verify security.txt.sig security.txt
Заключение
Спасибо всем кто прочитал статью до конца. Надеюсь вы смогли узнать что-то новое для себя.
Как видно, современные поисковые системы предлагают всё новые способы чтобы рассказать о вашем сайте, помимо robots.txt и sitemap.
Использование IndexNow позволяет ускорить индексацию новых страниц путём удобного API, а schema.org помогает лучше структурировать информацию для поисковиков и улучшить видимость в результатах путём добавления метаданных к страницам, security.txt предоставляет контакты для исследователей уязвимостей.
Надеюсь, эта статья была полезной и поможет вам сделать ваш сайт более видимым, безопасным и удобным как для пользователей, так и для поисковых систем.
Послесловие
С каждым днём AI всё чаще внедряется в приложения. А основные его игроки такие как ChatGPT релизят всё новые функции. Одна из таких это search которая делает парсинг сайтов. Думаю что тема интересная, поэтому прошу поучаствовать в опроснике :) Хотелось бы сделать сравнение крупных моделей и узнать что они видят