Basic service to eval yt player scripts for nsig stuff.
It is very much reccomended to host yourself
You can use the public instance without a password at https://cipher.kikkia.dev/api.
WARNING: Ratelimit of 5/sec, also do not expect perfect uptime. To have better performance and garunteed uptime, host it yourself.
The easiest way to use this right now is with docker
git clone https://github.com/kikkia/yt-cipher.git
cd yt-cipher
docker-compose build
docker-compose upYou can optionally set the API_TOKEN environment variable in your docker-compose.yml file to require a password to access the service.
Requests without a valid Authorization: <your_token> header will be rejected if you have a token set.
Environment Variables:
MAX_THREADS- max # of workers that can handle requests. Default is 1 per thread on the machine or 1 if it can't determine that for some reason.API_TOKEN- The required token to authenticate requestsPORT- Port to run the api on, default:8001HOST- Sets the hostname for the deno server, default:0.0.0.0
To run the server with IPv6, you need to configure the HOST environment variable.
- Set
HOSTto[::]to bind to all available IPv6 and IPv4 addresses on most modern operating systems.
When accessing the service over IPv6, make sure to use the correct address format. For example, to access the service running on localhost, you would use http://[::1]:8001/.
Request Body:
{
"encrypted_signature": "...",
"n_param": "...",
"player_url": "..."
}encrypted_signature(string): The encrypted signature from the video stream.n_param(string): Thenparameter value.player_url(string): The URL to the JavaScript player file that contains the decryption logic.
Successful Response:
{
"decrypted_signature": "...",
"decrypted_n_sig": "..."
}Example curl request:
curl -X POST http://localhost:8001/decrypt_signature \
-H "Content-Type: application/json" \
-H "Authorization: your_secret_token" \
-d '{
"encrypted_signature": "...",
"n_param": "...",
"player_url": "https://..."
}'Extracts the signature timestamp (sts) from a player script.
Request Body:
{
"player_url": "..."
}player_url(string): The URL to the JavaScript player file.
Successful Response:
{
"sts": "some_timestamp"
}Example curl request:
curl -X POST http://localhost:8001/get_sts \
-H "Content-Type: application/json" \
-H "Authorization: your_secret_token" \
-d '{
"player_url": "https://..."
}'