Tutorial: Cómo ejecutar Playwright en Termux (Android)
Ejecutar Playwright en Termux requiere un parche manual específico, ya que el paquete oficial no reconoce nativamente "android" como una plataforma compatible.
Requisitos previos
* Termux instalado en tu dispositivo Android.
* Node.js instalado (pkg install nodejs).
Paso 1:
Inicialización del proyecto
Crea un nuevo directorio para tu scraper e inicializa un proyecto Node.js en blanco.
En mi ejemplo, instalaré esto desde una carpeta de proyecto que ya tiene mi webscraper personalizado que quiero usar.
Si quieres hacer lo mismo, ignora los pasos de mkdir y cd en la carpeta con tu propio scraper personalizado.
mkdir my-scraper-project
cd my-scraper-project
npm init -y
Paso 2:
Instalar dependencias
Instala los paquetes requeridos.
Los fijamos en la versión 1.58.2 para asegurar consistencia.
npm install playwright@1.58.2
npm install playwright-extra@4.3.6
npm install puppeteer-extra-plugin-stealth@2.11.2
npm install dotenv@17.4.1
npm install express@5.2.1
Paso 3:
El parche manual de la plataforma
Por defecto, Playwright bloqueará la ejecución en Android.
DEBES editar manualmente el archivo de registro para permitirlo.
Si omites este paso, Playwright no podrá ejecutar chromium en Termux
1. Abre el archivo de índice del registro en tu editor de terminal:
nano ./node_modules/playwright-core/lib/server/registry/index.js
Busca esta línea (usa Ctrl + W en nano para buscar):
if (process.platform === "linux")
Cambia esa línea para incluir la verificación de la plataforma android:
if (process.platform === "linux" || process.platform === "android")
Para ser claro, hay un espacio antes y después del "||"
Guarda y sal (Presiona Ctrl + O, Enter, luego Ctrl + X).
Paso 4: Verificación
Prueba que la configuración esté funcionando ejecutando un pequeño script para inicializar el motor del navegador.
node -e "const { chromium } = require('playwright'); console.log('Chromium cargado exitosamente');"
Esto debería ser una línea
Si ves "Chromium cargado exitosamente", tu entorno está listo para usar para scraping.
**Descargo de responsabilidad y guía de configuración** :
⚠️ Descargo de responsabilidad final:
Configuración del navegador
Al ejecutar Playwright en Termux, **no puedes** usar el navegador Chromium "descargado" por defecto porque no está compilado para la arquitectura Android/ARM.
La configuración especial:
Debes indicar a Playwright que use el binario de Chromium instalado en el sistema. En tu scraper.js (o el script que lanza el navegador), debes actualizar tu bloque chromium.launch de la siguiente manera:
```javascript
const browser = await chromium.launch({
headless: true,
// ESTA LÍNEA ES CRÍTICA:
executablePath: '/data/data/com.termux/files/usr/bin/chromium-browser',
args: [
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-dev-shm-usage',
'--disable-gpu'
]
});
```
Por qué esto es necesario:
1. **executablePath**: Indica a Playwright que use el navegador Chromium instalado a través de pkg install chromium (la versión nativa de Termux) en lugar del incompatible que Playwright suele descargar.
2. **--no-sandbox**: El modelo de permisos de Termux/Android impide que el sandbox estándar de Chromium funcione. Esta bandera es **obligatoria** para evitar fallos inmediatos.
3. **--disable-dev-shm-usage**: Termux tiene memoria compartida limitada (/dev/shm). Esta bandera obliga al navegador a usar una estrategia de gestión de memoria diferente, evitando errores de "fuera de memoria" o de búfer.
[!NOTA]
Asegúrate de haber instalado el navegador en Termux primero ejecutando:
pkg install chromium