Skip to main content
Python Aternos Logo

Python Aternos

An unofficial Aternos API written in Python.
It uses aternos' private API and html parsing.

WARNING !

Development has been resumed, but it's possible that the module contains functions/classes that don't work at the moment. However, you can still manage your server with peace of mind (start, too much, restart...).

Python Aternos supports:

  • Logging in to account with password (plain or hashed) or ATERNOS_SESSION cookie value
  • Saving session to the file and restoring
  • Changing username, email and password
  • Parsing Minecraft servers list
  • Parsing server info by its ID
  • Starting/stoping server, restarting, confirming/cancelling launch
  • Updating server info in real-time (see WebSocket API) NOT IMPLEMENTED
  • Changing server subdomain and MOTD (message-of-the-day)
  • Managing files, settings, players (whitelist, operators, etc.)

Install

Common

$ pip install py-aternos

Note for Windows users

Install lxml package from here if you have problems with it, and then execute:
pip install --no-deps py-aternos

Development

$ git clone https://github.com/BOXERRMD/py-aternos.git
$ cd py-aternos
$ pip install -e .[dev]

Usage

To use Aternos API in your Python script, import it and login with your username and password or its MD5 hash.

Then request the servers list using list_servers().
You can start/stop your Aternos server, calling start() or stop().

Here is an example how to use the API:

# Import
from python_aternos import Client

# Create object
atclient = Client()

# Log in
# with username and password
atclient.login('example', 'test123')
# ----OR----
# with username and MD5 hashed password
atclient.login_hashed('example', 'cc03e747a6afbbcbf8be7668acfebee5')
# ----OR----
# with session cookie
atclient.login_with_session('ATERNOS_SESSION cookie value')

# Get AternosAccount object
aternos = atclient.account

# Get servers list
servs = aternos.list_servers()

# Get the first server
myserv = servs[0]

# Start
myserv.start()
# Stop
myserv.stop()

# You can also find server by IP
testserv = None
for serv in servs:
    if serv.address == 'test.aternos.org':
        testserv = serv

if testserv is not None:
    # Prints the server software and its version
    # (for example, "Vanilla 1.12.2")
    print(testserv.software, testserv.version)
    # Starts server
    testserv.start()

More examples

Documentation

How-To Guide

Changelog

Version Description
v0.3 Implemented files API, added typization.
v0.4 Implemented configuration API, some bugfixes.
v0.5 The API was updated corresponding to new Aternos security methods. Huge thanks to lusm554.
v0.6/v1.0.0 Code refactoring, websockets API and session saving to prevent detecting automation access.
v1.0.x Lots of bugfixes, changed versioning (SemVer).
v1.1.x Documentation, unit tests, pylint, bugfixes, changes in atwss.
v1.1.2/v2.0.0 Solution for #25 (Cloudflare bypassing), bugfixes in JS parser.
v2.0.x Documentation, automatically saving/restoring session, improvements in Files API.
v2.1.x Fixes in websockets API, atconnect (including cookie refreshing fix). Support for captcha solving services (view #52).
v2.2.x Node.JS interpreter support.
v3.0.0 Partially rewritten, API updates.
v3.0.5 Unmaintained.
v3.1.x TODO: Full implementation of config API.
v3.2.x TODO: Shared access API and maybe Google Drive backups.
v3.0.7 Maintained

Reversed API Specification

Private Aternos API requests were captured into this HAR file and were imported to a Postman Workspace.
You can use both resources to explore the API.
Any help with improving this library is welcome.

License

License Notice:

Copyright 2021-2022 All contributors

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Thank to Darkcat09 for allowing me to continue maintaining this API

Release files for py-aternos 3.0.74

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py-aternos 3.0.74
File Size Uploaded
py_aternos-3.0.74.tar.gz 30.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for py-aternos 3.0.74
File Interpreter ABI Platform
py_aternos-3.0.74-py3-none-any.whl Python 3 none any Details

Total release size: 65.1 kB

Release files / py_aternos-3.0.74.tar.gz

Download URL py_aternos-3.0.74.tar.gz
Size 30.3 kB
Tags Source
SHA-256 checksum
How to use checksums
0c67d252012d4b1d46c88f04d36b6ff3d37ad6f8cc8b0b3f0e84a7f991b9ee79
BLAKE2b-256 checksum
How to use checksums
55e5f46364c76f0095cb54e75b27b27586dc3822a1ce94112209402235c3e83b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.11.6

Release files / py_aternos-3.0.74-py3-none-any.whl

Download URL py_aternos-3.0.74-py3-none-any.whl
Size 34.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
dfb18d2243335cc5cb09682825bef032c115deaeb9307035de696013c50c3212
BLAKE2b-256 checksum
How to use checksums
b8e8c1eb9d8c884450edafbb130292bc3fce999abd43a084c9b2132bd4b61490
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.0 CPython/3.11.6

Release history Release notifications | RSS feed

This release

3.0.74 This release

2 release files

3.0.73

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page