Skip to main content

An unofficial Aternos API

Project description

Python Aternos Logo

Python Aternos

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

WARNING

Aternos now trying to detect python-aternos requests by finding bugs in custom JavaScript parser.

Please, always keep the library up-to-date.

I'm going to use Selenium in this library later (but you'll still be able to choose between lightweight HTML parsing and running a browser).

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.)

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 .[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.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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python-aternos-3.0.4.tar.gz (32.2 kB view details)

Uploaded Source

Built Distribution

python_aternos-3.0.4-py3-none-any.whl (34.2 kB view details)

Uploaded Python 3

File details

Details for the file python-aternos-3.0.4.tar.gz.

File metadata

  • Download URL: python-aternos-3.0.4.tar.gz
  • Upload date:
  • Size: 32.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.3

File hashes

Hashes for python-aternos-3.0.4.tar.gz
Algorithm Hash digest
SHA256 17180011272f70eda4d5e0aae65af1a6bdaf506cb9999ded47c91fe1fdd158b0
MD5 7a948953006a223154e29c5e9f0e48bf
BLAKE2b-256 4b2ad76f02200d780281d51146d7e2f19c8c1b3edae141bcc7581d074e66cc3a

See more details on using hashes here.

File details

Details for the file python_aternos-3.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for python_aternos-3.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 97837d3ae6cd99337215d089606249322d17849f2abff6e3efd437500b659abe
MD5 b4c6692e19937a32041b3a50cf0a798e
BLAKE2b-256 fa75e728f9a083da9d8e4b7f685db4940f0795db49c4e7f27e3ff4e94112f57a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page