How to fetch metadata about AP servers
Решили написать паука, который будет собирать метаданные о серверах федивёрса в ваш скромненький каталог? Отлично! Давайте пройдёмся по этому зоопарку пока у тебя есть мотивация хоть что-то делать.
По спецификации получить метаданные можно с помощью /.well-known/nodeinfo который содержит ссылку на что-нибудь типа
/nodeinfo/2.0. Но вот незадача! У разных движков информация там разная, а у мастодона максимально скромная.
Оказывается, помимо общей спецификации, каждый движок предлагает свой эндпойнт для получения метаданных.
Большое распространение получил /api/v1/instance из API мастодона, но конечно же он доступен не везде.
Вперёд!
Mastodon
/nodeinfo/2.0/api/v1/instance/api/v1/custom_emojis/api/v1/directory?local=true
Pleroma
/nodeinfo/2.1.json/api/v1/instance/api/pleroma/healthcheck(has to be enabled)
Misskey
/nodeinfo/2.0- That’s a tricky one: POST request to
/api/metawith body{"detail":true} - POST request to
/api/stats, empty body
Funkwhale
/api/v1/instance/nodeinfo/2.0/api/v1/instance/settings
Pixelfed
/api/nodeinfo/2.0.json/api/v1/instance
PeerTube
/nodeinfo/2.0.json/api/v1/config/api/v1/config/about
Friendica
/nodeinfo/2.0/api/statusnet/config/api/v1/instance/friendica/json
Nextcloud
- /status.php
- ??? Such a clusterfuck
Thanks to Michael Vogel for providing Friendica endpoints.
Thanks for reading my blog post.