diff --git a/README.md b/README.md index 1ab903a..a9558f5 100644 --- a/README.md +++ b/README.md @@ -4,32 +4,33 @@ Utility for extracting credentials from the Crunchyroll Android app (both TV and The [credentials](https://github.com/vitalygashkov/crextractor/blob/main/credentials.tv.json) are [automatically](https://github.com/vitalygashkov/crextractor/actions/workflows/extract.yml) updated once a week (if there are any changes). -## Prerequisites - -- [Node.js](https://nodejs.org/en) -- [jadx](https://github.com/skylot/jadx) - ## Usage -### Library - -```bash -npm i crextractor -``` - -#### Fetch ready credentials from this GitHub repository +### Fetch ready credentials from this GitHub repository ```js -import { pull } from 'crextractor'; +// Supported targets: mobile, tv +async function fetchCredentials(target = 'tv') { + const url = `https://raw.githubusercontent.com/vitalygashkov/crextractor/refs/heads/main/credentials.${target}.json`; + return fetch(url).then((response) => response.json()); +} async function main() { - const credentials = await pull('tv'); + const credentials = fetchCredentials(); + + // You can use credentials to obtain access tokens for Crunchyroll APIs + + // 3.54.5 (22304) -> 3.54.5_22304 + const userAgentAppVersion = credentials.version + .replace(' ', '_') + .replace('(', '') + .replace(')', ''); - // You can use the extracted credentials to obtain access tokens for Crunchyroll APIs const response = await fetch('https://beta-api.crunchyroll.com/auth/v1/token', { headers: { - Authorization: credentials.authorization, // Ready HTTP header in the format `Basic `, can be used to access some Crunchyroll APIs - 'User-Agent': 'Crunchyroll/ANDROIDTV/3.42.1_22267 (Android 16; en-US; sdk_gphone64_x86_64)', + // Ready HTTP header in the format `Basic `, can be used to access some Crunchyroll APIs + Authorization: credentials.authorization, + 'User-Agent': `Crunchyroll/ANDROIDTV/${userAgentAppVersion} (Android 16; en-US; sdk_gphone64_x86_64)`, // ... }, method: 'POST', @@ -40,23 +41,12 @@ async function main() { } ``` -#### Extract credentials from the latest APK using jadx +### Extract fresh credentials from the latest APK using jadx -```js -import { extract } from 'crextractor'; +#### Prerequisites -async function main() { - const { id, secret, encoded, authorization } = await extract(); - // id - Crunchyroll app ID - // secret - Crunchyroll app secret - // encoded - Base64 encoded `id:secret` string - // authorization - ready HTTP header in the format `Basic `, can be used to access some Crunchyroll APIs - - // Do something with the extracted credentials -} -``` - -### Command-line interface +- [Node.js](https://nodejs.org/en) +- [jadx](https://github.com/skylot/jadx) ```bash npx crextractor --target mobile --output ./credentials.mobile.json