How to fetch metadata about AP servers

less than 1 minute read

Решили написать паука, который будет собирать метаданные о серверах федивёрса в ваш скромненький каталог? Отлично! Давайте пройдёмся по этому зоопарку пока у тебя есть мотивация хоть что-то делать.

По спецификации получить метаданные можно с помощью /.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.