Skip to main content

Features

  • ⚡ Fully asynchronous (asyncio)
  • 🌐 HTTP client based on aiohttp
  • 🔐 Authentication and session handling
  • 📂 File and directory operations
  • ⬆️ File uploads and downloads

Installation

pip install aioterabox

Install from source

git clone https://github.com/devbis/aioterabox.git
cd aioterabox
pip install -e .

Usage

import asyncio
import aiohttp
from aioterabox.api import TeraboxClient
from aioterabox.exceptions import TeraboxLoginChallengeRequired


async def main():
    async with aiohttp.ClientSession() as session:
        tb = TeraboxClient(
            session=session,
            email='your_email',
            password='your_password',
        )
        try:
            await tb.login()
        except TeraboxLoginChallengeRequired as exc:
            # TeraBox may require a simple-verify continuation step.
            await tb.complete_login_challenge(exc.challenge)

        # get quota
        print('quota = ', await tb.get_storage_quota())

        # list files
        files = await tb.list_remote_directory('/path/to/directory')
        print(files)
        
        # create directory
        await tb.create_directory('/remote/directory')

        # upload file
        await tb.upload_file('/home/user/localfile.zip', f'/remote/directory/remotefile.zip')

        # download file
        meta = await tb.get_files_meta(['/remote/directory/remotefile.zip'])[0]
        async with session.get(meta['dlink']) as resp:
            # the link is signed and can be downloaded without authentication
            with open('/tmp/downloadedfile.zip', 'wb') as f:
                while chunk := await resp.content.read(1024):
                    f.write(chunk)

        # rename file  
        await tb.rename_file('/remote/directory/remotefile.zip', 'newname.zip')

        # delete file
        await tb.delete_files(['/remote/directory/newname.zip'])

asyncio.run(main())

The client can now start from only email/password and establish the session cookies on its own. When TeraBox responds with need verify, the library raises TeraboxLoginChallengeRequired and stores the in-progress session so the caller can continue the flow with complete_login_challenge().

If you want to persist a working session between restarts, store the cookies returned by login() or complete_login_challenge(). The useful fields are usually jstoken, csrfToken, browserid, ndus, TSID, shareUpdateRandom, and lang.

For file operations you should always use absolute paths starting from the root directory /.

Configuration

Manual cookie bootstrap

If you prefer to start from an existing browser session, you can still extract the session JS Token and cookies manually.

Getting the JS Token

To use this tool you need to have a Terabox account and a JS Token key. You can get the session JS Token by logging into your Terabox account and following the sequence of steps below:

  1. Open your Terabox cloud.
  2. Open the browser's developer tools (F12).
    Developer tools F12
  3. Enable the "Device Toolbar" then click the back arrow to get back to Terabox.
    Developer tools F12 "Device Toolbar" Back Arrow
  4. Go to the "Network" tab.
    Developer tools F12 Network tab
  5. Select the "XHR" filter.
    Developer tools F12 XHR filter
  6. Click any directory or file in the cloud.
  7. Look for any request made to the Terabox cloud URL and click on it.
    Developer tools F12 request item
  8. Select the "Payload" tab.
    Developer tools F12 Payload tab
  9. Look for the jsToken parameter in the list and copy its value.

If you can't find the jsToken parameter, try selecting any other directory or file in the cloud and look for the jsToken parameter in the request payload. Make sure that you have the "XHR" filter selected and that you are looking at the "Payload" tab.

Getting the cookies values

Additionally to the JS Token, you will need to capture the cookies values. You can get them by following the sequence of steps below:

  1. Open your Terabox cloud.
  2. Open the browser's developer tools (F12).
    Developer tools F12
  3. Go to the "Application" tab.
    Developer tools F12 Application tab
  4. Select the "Cookies" item in the left panel.
    Developer tools F12 Cookies tab
  5. Look for the cookies values and copy them.
    Developer tools F12 Cookies values

You will need to copy the csrfToken, browserid, and ndus values. Once the values are provided the library will refresh the csrfToken and jstoken values on login automatically.

Requirements

  • Python 3.10+
  • aiofiles >= 25.1.0, < 26.0.0
  • aiohttp
  • cryptography

Thanks

https://github.com/seiya-npm/terabox-api for reverse engineering the TeraBox API and JavaScript implementation. https://github.com/dnigamer/TeraboxUploaderCLI/ for the instructions on obtaining session cookies.

Disclaimer

This project is not affiliated with or endorsed by TeraBox. The API behavior may change at any time, which can break compatibility.

Use at your own risk.

License

Apache License 2.0

See LICENSE for more information.

Release files for aioterabox 0.3.0

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

Source distribution (sdist)

Source distribution for aioterabox 0.3.0
File Size Uploaded
aioterabox-0.3.0.tar.gz 21.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for aioterabox 0.3.0
File Interpreter ABI Platform
aioterabox-0.3.0-py3-none-any.whl Python 3 none any Details

Total release size: 41.1 kB

Release files / aioterabox-0.3.0.tar.gz

Download URL aioterabox-0.3.0.tar.gz
Size 21.1 kB
Tags Source
SHA-256 checksum
How to use checksums
11d561b8987faaab3eee8b1bf86eea54dc67df4617349547d2420020d1a9f5f8
BLAKE2b-256 checksum
How to use checksums
a702dd4c71ba768f7bbee9eebbcbbe94f44401ed2d1047dde7fdf260565d1559
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.15

Release files / aioterabox-0.3.0-py3-none-any.whl

Download URL aioterabox-0.3.0-py3-none-any.whl
Size 20.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1b0e857884f7e4fadeae1f6f521d401f5a5e0cbad764bc0038e5ed481322f228
BLAKE2b-256 checksum
How to use checksums
2d11d4c9e6d14efb0bbf9f3bc30e4e8352802a9a82f75d7df48a57745bb626f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.15

Release history Release notifications | RSS feed

This release

0.3.0 This release

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

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