Autenticación

goopdl habla con Google Play como si fuera un dispositivo Android, así que cada petición necesita un token. Hay dos formas de conseguirlo:

Modo Qué necesitas Ideal para
Anónimo (por defecto) Nada La mayoría de descargas
Cuenta de Google Una cuenta desechable, con la sesión iniciada mediante goopdl auth login Apps a las que no llegan las cuentas anónimas, o cuando el dispensador te limita

goopdl auth status muestra qué modo está activo.

Anónimo (por defecto)

Por defecto, goopdl pide un token anónimo al dispensador público de tokens de Aurora Store (https://auroraoss.com/api/auth). No necesitas cuenta de Google.

bash
goopdl auth token                    # token arm64
goopdl auth token --arch armv7       # token para dispositivos antiguos de 32 bits
goopdl auth token --country IN       # registra el dispositivo con el MCC/MNC de India
goopdl auth clear-cache              # borra todos los tokens y registros de dispositivo en caché

No hace falta ejecutar auth token primero: el resto de comandos consiguen un token cuando lo necesitan. Todas las opciones están en auth token.

Dónde se guardan los tokens

Los tokens se guardan en el directorio de configuración de goopdl, que es el primero de estos que aplique:

  1. $GOOPDL_CONFIG_DIR, si es una ruta absoluta. Se expande ~.
  2. $XDG_CONFIG_HOME/goopdl, si XDG_CONFIG_HOME es una ruta absoluta.
  3. ~/.config/goopdl.

Si alguna de las dos variables tiene una ruta relativa, se ignora, para que la caché nunca acabe en el directorio actual. En Linux y macOS el directorio se crea con permisos 0700 y los archivos de tokens se escriben con 0600.

NotaHasta la 1.4.x goopdl usaba siempre ~/.config/goopdl. Si tienes XDG_CONFIG_HOME apuntando a otro sitio, goopdl ahora usa $XDG_CONFIG_HOME/goopdl y la primera vez pide tokens nuevos. Para seguir usando la ubicación antigua, define GOOPDL_CONFIG_DIR=~/.config/goopdl.

Archivo dentro de ese directorio Contenido
auth-{arch}[-{country}][-profile-{key}].json Token de la última ejecución de auth token
token-pool-{arch}[-{country}][-profile-{key}].json Pool de hasta 5 tokens que usan download, latest y fast-download
direct-device-{account}-{arch}[-{country}]-profile-{key}.json Solo en el modo cuenta de Google: el dispositivo registrado, sin token
account.json La cuenta de Google guardada: email, y el token AAS si no está en el almacén de claves del sistema

La parte -profile-{key} aparece cuando fijas un dispositivo con --profile, así cada perfil tiene sus propios tokens. goopdl auth logout borra todos estos archivos. goopdl auth clear-cache los borra todos menos account.json. goopdl auth token muestra la ruta donde ha guardado el token, y goopdl auth status muestra el directorio y cuántos archivos tiene.

Los tokens caducan a los 50 minutos. En cómo funciona se explica el pool.

Dispensador propio

Usa un dispensador autoalojado en cualquier comando con --dispenser / -d:

bash
goopdl auth token -d https://my-dispenser.example.com/api/auth
goopdl download com.whatsapp -d https://my-dispenser.example.com/api/auth

Cuenta de Google

Inicia sesión una vez y goopdl se salta el dispensador e inicia sesión directamente en Google:

bash
goopdl auth login              # abre un navegador y guarda la cuenta
goopdl download com.whatsapp   # la usa
goopdl auth status             # muestra la cuenta en uso, nunca el token
goopdl auth logout             # la borra junto con todos los tokens en caché

También puedes pasar la cuenta en dos variables, por ejemplo en CI o en un contenedor:

bash
export GOOPDL_ACCOUNT_EMAIL="account@example.com"
export GOOPDL_AAS_TOKEN="aas_et/..."
goopdl download com.whatsapp

AvisoUn token AAS es una credencial de larga duración con acceso completo a Play Store en esa cuenta. Usa una cuenta de Google desechable, nunca la principal. goopdl auth login guarda el token en el almacén de claves del sistema, o en disco si no hay; usa --print si prefieres tenerlo en un gestor de secretos. Cambiar la contraseña de la cuenta revoca el token.

Dónde se guarda la cuenta

goopdl auth login guarda el token AAS en el almacén de claves del sistema:

Sistema Almacén
macOS Llavero (Keychain)
Windows Administrador de credenciales
Linux Secret Service por D-Bus (GNOME Keyring, KWallet)

La entrada tiene el servicio goopdl y el email como nombre de usuario. account.json, en el directorio de configuración, guarda entonces solo el email y "storage": "keyring".

goopdl relee el token justo después de guardarlo. Si no hay almacén, o falla o no devuelve nada, goopdl avisa y escribe el token en account.json. Es lo normal en servidores, contenedores y por SSH sin sesión de escritorio. --insecure-storage se salta el almacén y usa siempre el archivo:

bash
goopdl auth login                     # almacén, o account.json si no hay
goopdl auth login --insecure-storage  # siempre account.json

goopdl auth status muestra dónde está el token: Storage : system keyring con el nombre del backend, o Storage : file. Si account.json apunta al almacén pero el token no está, o no se puede abrir el almacén, los comandos terminan con código 2. Vuelve a ejecutar goopdl auth login, o usa las variables.

NotaEl almacén deja el token fuera de copias de seguridad, carpetas sincronizadas y copias de tu disco. No lo protege de otros programas que se ejecutan con tu usuario: en Linux y Windows cualquiera puede leerlo sin preguntar. Un token en account.json no tiene ninguna de las dos protecciones.

Sobre account.json, con o sin token:

Qué guarda el modo cuenta

Iniciar sesión registra un dispositivo Android en la cuenta. Para no añadir uno más con cada comando, goopdl guarda el dispositivo que registró y lo reutiliza en las ejecuciones siguientes y en otros procesos:

Archivo en el directorio de configuración Contenido
direct-device-{account}-{arch}[-{country}]-profile-{key}.json El registro del dispositivo: GSF ID, token de consistencia del check-in y token de configuración del dispositivo

Conseguir un token AAS

Elige la opción que te resulte más cómoda:

goopdl auth login guarda la cuenta. Añade --print para que solo imprima el token por stdout, para las variables o un gestor de secretos:

bash
TOKEN=$(goopdl auth login --print)

Las preguntas y los mensajes van a stderr, así que en TOKEN solo queda el token. goopdl ya no inicia sesión con contraseña: Google rechaza tanto la contraseña de la cuenta como las contraseñas de aplicación con BadAuthentication.

Inicio de sesión con navegador (recomendado)

bash
goopdl auth login

goopdl abre Chrome, Edge, Chromium o Brave con un perfil temporal nuevo. Inicia sesión y selecciona Acepto (I agree). goopdl captura el email y el oauth_token de un solo uso, cierra el navegador, borra el perfil y canjea el oauth_token por un token AAS.

Si goopdl no encuentra tu navegador, define GOOPDL_BROWSER con la ruta a su ejecutable o usa --manual.

Inicio de sesión manual

bash
goopdl auth login --manual

goopdl abre Google EmbeddedSetup en tu navegador habitual. Usa una ventana privada si tiene abierta la sesión de otra cuenta de Google.

  1. Inicia sesión y selecciona Acepto (I agree).
  2. Abre las herramientas de desarrollo (F12).
  3. En Chrome o Edge, ve a Aplicación → Cookies → https://accounts.google.com.
  4. Copia la cookie oauth_token. Empieza por oauth2_4/.
  5. Vuelve a la terminal, introduce el mismo email y pega el token. El token no se muestra al pegarlo.

El oauth_token solo sirve una vez y caduca enseguida, así que pégalo cuanto antes.

Editar esta página en GitHub ↗