Unofficial Aternos API written in Python
This repository has been archived on 2024-07-30. You can view files and clone it, but cannot push or open issues or pull requests.
Find a file
2023-05-29 12:06:21 +04:00
docs Updated Readme 2022-12-26 14:59:12 +04:00
examples Finally fixed 400 by updating URLs, improved logging 2023-05-29 11:44:19 +04:00
logo Removed GIMP project files 2022-12-23 18:02:05 +04:00
python_aternos v3.0.0, MyPy (added _info type hint), PEP8 2023-05-29 12:06:21 +04:00
tests Finally fixed 400 by updating URLs, improved logging 2023-05-29 11:44:19 +04:00
.gitignore Improved NodeJS interpreter interaction 2023-01-13 16:19:10 +04:00
aternos.har Updated Readme, created HAR and Postman workspace 2023-05-29 12:02:50 +04:00
aternos_ws.txt WebSocket API, token parser updates 2022-01-22 15:10:30 +04:00
check.sh #! in script 2022-12-25 18:27:22 +04:00
LICENSE Initial commit 2021-09-17 09:21:17 +04:00
Makefile Makefile: build docs 2022-12-26 14:41:39 +04:00
mkdocs.yml MkDocs, Readme, Files API, Automated session saving, v2.0.1 2022-08-26 16:14:07 +04:00
NOTICE MkDocs, Readme, Files API, Automated session saving, v2.0.1 2022-08-26 16:14:07 +04:00
pylintrc Finally fixed 400 by updating URLs, improved logging 2023-05-29 11:44:19 +04:00
pyproject.toml Add files via upload 2021-10-08 19:35:20 +04:00
README.md Updated Readme, created HAR and Postman workspace 2023-05-29 12:02:50 +04:00
requirements.txt Bugfixes: Cloudflare bypassing, JS parser; tests, pylint, makefile 2022-08-22 09:55:08 +04:00
setup.cfg Updated Pylint config, MyPy: check_untyped_defs 2023-05-24 20:05:35 +04:00
setup.py v3.0.0, MyPy (added _info type hint), PEP8 2023-05-29 12:06:21 +04:00

Python Aternos Logo

Python Aternos

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

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)
  • Changing server subdomain and MOTD (message-of-the-day)
  • Managing files, settings, players (whitelist, operators, etc.)

Warning

According to the Aternos' Terms of Service §5.2e, you must not use any software or APIs for automated access, beacuse they don't receive money from advertisting in this case.

I always try to hide automated python-aternos requests using browser-specific headers/cookies,
but you should make backups to restore your world if Aternos detects violation of ToS and bans your account (view issues #16 and #46).

Install

Common

$ pip install python-aternos

Note

for Windows users

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

Development

$ git clone https://github.com/DarkCat09/python-aternos.git
$ cd python-aternos
$ pip install -e .

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
aternos = Client()

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

# 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.1.x Full implementation of config API.
v3.2.x Shared access API and maybe Google Drive backups.

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.