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/meta
with 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.