tiktok-forge
TikTok signature forge — Android & Web authentication signature generator.
Developer: MERO · Telegram: @QP4RM
Version: 0.0.1
Python: 3.10+
Installation
pip install tiktok-forge
Or from source:
git clone https://github.com/MERO-QP4RM/tiktok-forge
cd tiktok-forge
pip install .
Algorithms Implemented
| Algorithm | Header | Purpose |
|---|---|---|
| Argus | x-argus |
Primary Android signature (Simon cipher + SM3 hash) |
| Gorgon | x-gorgon, x-khronos |
Request integrity + timestamp |
| Ladon | x-ladon |
License-based authentication token |
| TTEncrypt | — | Payload encryption for device registration |
| X-Bogus | X-Bogus |
Web request signature |
| X-Gnarly | X-Gnarly |
Web secondary signature |
| msToken | msToken |
Web session token |
| verifyFp | verifyFp |
Browser fingerprint |
Quick Start
Android API Signatures
from tiktokforge import TikTokSigner
params = "aid=1233&app_name=musical_ly&device_platform=android"
headers = TikTokSigner.generate_headers(params=params)
print(headers)
Shortcut Functions
from tiktokforge import generate_headers, encrypt, decrypt, encode, decode
headers = generate_headers(params="aid=1233&app_name=musical_ly")
encrypted = encrypt({"device_id": "123456", "os": "android"})
decrypted = decrypt(encrypted)
protobuf_bytes = encode({1: "value", 2: 123})
data_dict = decode(protobuf_bytes)
Web Signatures
from tiktokforge import (
generate_ms_token,
generate_verify_fp,
generate_x_bogus,
generate_x_gnarly,
generate_web_headers,
generate_web_id,
)
ms_token = generate_ms_token()
verify_fp = generate_verify_fp()
web_id = generate_web_id()
url_params = "aid=1988&app_name=tiktok_web&device_platform=web"
x_bogus = generate_x_bogus(url_params)
x_gnarly = generate_x_gnarly(url_params)
web_headers = generate_web_headers(url_params=url_params)
print(web_headers)
Individual Algorithm Usage
from tiktokforge.algorithms import Argus, Gorgon, Ladon
argus = Argus.encrypt(params="aid=1233&app_name=musical_ly")
print(argus)
gorgon = Gorgon.encrypt(params="aid=1233&app_name=musical_ly")
print(gorgon)
ladon = Ladon.encrypt(aid=1233, lc_id=2142840551)
print(ladon)
Full Android GET Request
import requests
from tiktokforge import TikTokSigner
params = {
"aid": 1233,
"app_name": "musical_ly",
"device_platform": "android",
"os_version": "9",
"device_type": "2203121C",
"device_brand": "Xiaomi",
"language": "en",
"region": "US",
}
query_string = "&".join(f"{k}={v}" for k, v in params.items())
auth_headers = TikTokSigner.generate_headers(params=query_string)
headers = {
"User-Agent": "com.zhiliaoapp.musically/2023700040 (Linux; U; Android 9; en_US; 2203121C; Build/PQ3A.190705.09121607;tt-ok/3.12.13.4-tiktok)",
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip",
}
headers.update(auth_headers)
url = f"https://api.tiktokv.com/aweme/v1/feed/?{query_string}"
response = requests.get(url, headers=headers)
print(response.json())
Full Android POST Request
import requests
from tiktokforge import TikTokSigner
params = "aid=1233&app_name=musical_ly"
data = {
"username": "example",
"password": "encrypted_password",
"mix_mode": 1,
}
auth_headers = TikTokSigner.generate_headers(
params=params,
data=data,
cookie="sessionid=abc123; tt_csrf_token=xyz789",
)
headers = {
"User-Agent": "com.zhiliaoapp.musically/2023700040 (Linux; U; Android 9; en_US; 2203121C)",
"Content-Type": "application/x-www-form-urlencoded",
}
headers.update(auth_headers)
url = f"https://api.tiktokv.com/passport/user/login/?{params}"
response = requests.post(url, headers=headers, data=data)
print(response.json())
TTEncrypt Device Registration
import requests
from tiktokforge import TikTokSigner
device_info = {
"magic_tag": "ss_app_log",
"header": {
"display_name": "TikTok",
"update_version_code": 2023700040,
"manifest_version_code": 2023700040,
"aid": 1233,
"channel": "googleplay",
"package": "com.zhiliaoapp.musically",
"version_name": "37.0.4",
"version_code": 2023700040,
"os": "Android",
"os_version": "9",
"os_api": 28,
"device_model": "2203121C",
"device_brand": "Xiaomi",
"cpu_abi": "arm64-v8a",
"language": "en",
"timezone": -5,
},
"_gen_time": 1706789012345,
}
encrypted_payload = TikTokSigner.encrypt(device_info)
auth_headers = TikTokSigner.generate_headers(
params="aid=1233&app_name=musical_ly",
data=encrypted_payload,
)
headers = {
"User-Agent": "com.zhiliaoapp.musically/2023700040 (Linux; U; Android 9; en_US; 2203121C)",
"Content-Type": "application/octet-stream",
}
headers.update(auth_headers)
url = "https://log.tiktokv.com/service/2/device_register/?aid=1233&app_name=musical_ly"
response = requests.post(url, headers=headers, data=encrypted_payload)
Protobuf Encode/Decode
from tiktokforge import encode, decode
data = {1: "hello", 2: 42, 3: b"raw_bytes"}
encoded = encode(data)
print(f"Encoded: {encoded.hex()}")
decoded = decode(encoded)
print(f"Decoded: {decoded}")
API Reference
TikTokSigner.generate_headers()
TikTokSigner.generate_headers(
params, # str | dict — URL query parameters (required)
data=None, # str | bytes | dict — POST body
device_id=None, # str — device identifier
aid=1233, # int | str — application ID
lc_id=2142840551,
sdk_ver="v05.01.02-alpha.7-ov-android",
sdk_ver_code=83952160,
version_name="37.0.4",
version_code=2023700040,
cookie=None, # str — cookie string
unix=None, # int — unix timestamp (auto if None)
)
Returns: dict with keys:
x-ss-req-ticket— request timestamp in millisecondsx-tt-trace-id— trace identifierx-ss-stub— MD5 hash of body (if data provided)x-ladon— Ladon tokenx-gorgon— Gorgon signaturex-khronos— unix timestampx-argus— Argus tokencookie— (if provided)
TikTokSigner.encrypt(data) / TikTokSigner.decrypt(data)
Encrypt/decrypt payloads using TTEncrypt algorithm.
generate_web_headers(url_params, user_agent, referer, ts)
Returns a dict with web-specific headers including msToken, verifyFp, X-Bogus, X-Gnarly, webId.
Default Values (TikTok Android 37.0.4)
| Parameter | Default |
|---|---|
aid |
1233 |
lc_id |
2142840551 |
sdk_ver |
v05.01.02-alpha.7-ov-android |
sdk_ver_code |
83952160 |
version_name |
37.0.4 |
version_code |
2023700040 |
Disclaimer
This library is for educational and research purposes only. Use must comply with TikTok's Terms of Service and applicable laws. The author is not responsible for any misuse.
Metadata
Release files for tiktok-forge 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| tiktok_forge-0.0.1.tar.gz | 38.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| tiktok_forge-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 79.3 kB
Release files / tiktok_forge-0.0.1.tar.gz
| Download URL | tiktok_forge-0.0.1.tar.gz |
|---|---|
| Size | 38.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0293803ba7015d7692d0c97731bfb3305217fad43edb07b4699615db37f07065
|
|
BLAKE2b-256 checksum How to use checksums |
d6e2849fa03caa0f43bca87049d5f4959216432fd25c678bd2f77f80a5c3938c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.0
|
Release files / tiktok_forge-0.0.1-py3-none-any.whl
| Download URL | tiktok_forge-0.0.1-py3-none-any.whl |
|---|---|
| Size | 41.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
08350822393d0f1a70967c82089d2d162448fcd974c65ebe0fe35c5a5e88a301
|
|
BLAKE2b-256 checksum How to use checksums |
215e876ce229f8ffea4110f72bfc9f92966114c175324a2acbb3a97c2dad7128
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.0
|