Mastodon Instanz deaktivierte Local Timeline lesen, ohne Anmeldung

Ist das Lesen einer Lokalen Timeline mit deaktiviertem Preview ohne Account möglich? tl;dr - Nein. Mehr im Blog.

Im letzten Artikel Mastodon Instanz Local Timeline lesen, ohne Anmeldung wurde davon ausgegangen, dass die Lokale Timeline (auch public timeline genannt), öffentlich einsehbar ist. Allerdings ist es möglich, dass Admins der Instanz das deaktiviert haben.

Die API Dokumentation schreibt dazu:

OAuth: Public. Requires app token + read:statuses if the instance has disabled public preview.

Dies ist meiner Meinung nach ein Fehler in der Dokumentation. Wenn man nämlich in den git commit schaut, sieht man diese Sourcecode Änderung:


class Api::V1::Timelines::PublicController < Api::BaseController
  before_action :require_user!, only: [:show], if: :require_auth?

require_auth ist nur ein Check der Konfiguration, aber require_user macht klar, dass ein App Token nicht reicht, man muss mindestens als User angemeldet sein.

Allerdings ist ein abgeschaltetes Preview extrem selten und evtl. kann man davon ausgehen, dass auch weitere Zugriffe auf die API von den Admins nicht erlaubt ist.

Ob eine Instanz überhaupt das anbietet, kann man schnell so ermitteln:

  • Auf www.unmung.com/mastoview gehen (Achtung, das UI ist aus dem letzten Jahrtausend)
  • In das Feld oben links den Instanznamen eingeben (ohne Protokoll)
  • Local auswählen und dann Preview anklicken.

Dann sollte was zu sehen sein.

Ich habe noch über instances.social/list gesucht und nur eine einzige Instanz mit UP gefunden, die Local Timeline Preview deaktiviert hatte. In dem Fall gibt es die Fehlermeldung:

  File "C:\DevTools\Core\Python39\lib\site-packages\decorator.py", line 232, in fun
    return caller(func, *(extras + args), **kw)
  File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 102, in wrapper
    return function(self, *args, **kwargs)
  File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 753, in timeline_local
    return self.timeline('local', max_id=max_id, min_id=min_id,
  File "C:\DevTools\Core\Python39\lib\site-packages\decorator.py", line 232, in fun
    return caller(func, *(extras + args), **kw)
  File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 102, in wrapper
    return function(self, *args, **kwargs)
  File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 734, in timeline
    return self.__api_request('GET', url, params)
  File "C:\DevTools\Core\Python39\lib\site-packages\mastodon\Mastodon.py", line 3425, in __api_request
    raise ex_type(
mastodon.Mastodon.MastodonAPIError: ('Mastodon API returned error', 422, 'Unprocessable Entity', 'This method requires an authenticated user')

Und die Exception macht auch klar, dass ein User (Account) mit Anmeldung notwendig ist.