10 KiB
HALLAZGOS - Descarga del Curso de Vóley (Online Education Center)
Última actualización: 2026-05-02
Información del Curso
- Plataforma: Online Education Center (similar a Moodle, usa Auth0 para login)
- URL base del campus:
https://voley.onlineeducation.center/es/campus/student/training/e/14197 - Usuario:
saldis_karina@hotmail.com - Contraseña:
Martes13# - Estado: Curso finalizado
Estructura del Curso
El curso tiene 2 Módulos con 11 secciones en total.
Módulo 1 (m/19096) - PLANIFICACIÓN
| Sección | ID | URL |
|---|---|---|
| PLANIFICACION | s/34868 | /es/campus/student/training/e/14197/m/19096/s/34868/study-resources/list |
| PREPARACION ATLETICA | s/34869 | /es/campus/student/training/e/14197/m/19096/s/34869/study-resources/list |
| EXPLICACION DEL TRABAJO PRACTICO A PRESENTAR | s/34870 | /es/campus/student/training/e/14197/m/19096/s/34870/study-resources/list |
| SEGUIMIENTOS DE EQUIPOS | s/35523 | /es/campus/student/training/e/14197/m/19096/s/35523/study-resources/list |
| ANALISIS DE EQUIPOS DE VOLEIBOL | s/35524 | /es/campus/student/training/e/14197/m/19096/s/35524/study-resources/list |
| ANALISIS DE EQUIPOS DE VOLEIBOL 2 | s/35525 | /es/campus/student/training/e/14197/m/19096/s/35525/study-resources/list |
| TRABAJO PRACTICO FINAL DE LA UNIDAD | s/35526 | /es/campus/student/training/e/14197/m/19096/s/35526/study-resources/list |
Módulo 2 (m/19097) - ENTRENAMIENTO
| Sección | ID | URL |
|---|---|---|
| ENTRENAMIENTO DE LOS CENTRALES Y OPUESTOS/AS | s/35519 | /es/campus/student/training/e/14197/m/19097/s/35519/study-resources/list |
| PUNTAS Y LIBEROS/AS | s/35520 | /es/campus/student/training/e/14197/m/19097/s/35520/study-resources/list |
| ENTRENAMIENTO DE LOS Y LAS ARMADORAS | s/35521 | /es/campus/student/training/e/14197/m/19097/s/35521/study-resources/list |
| EXPLICACION DEL TRABAJO PRACTICO A PRESENTAR | s/35522 | /es/campus/student/training/e/14197/m/19097/s/35522/study-resources/list |
Recursos Encontrados
📹 Videos (Vimeo) - 23 videos + algunos adicionales
Los videos están embebidos via iframes de Vimeo. No se descargaron directamente, solo se guardaron referencias. IDs de Vimeo encontrados:
| # | ID de Vimeo | Sección |
|---|---|---|
| 1 | 919369433 |
Centrales_y_Oponentes |
| 2 | 1179197191 |
Centrales_y_Oponentes |
| 3 | 919341704 |
Centrales_y_Oponentes |
| 4 | 919342668 |
Centrales_y_Oponentes |
| 5 | 919346562 |
Centrales_y_Oponentes |
| 6 | 919347866 |
Centrales_y_Oponentes |
| 7 | 919348493 |
Centrales_y_Oponentes |
| 8 | 919351892 |
Centrales_y_Oponentes |
| 9 | 919352848 |
Centrales_y_Oponentes |
| 10 | 919353448 |
Centrales_y_Oponentes |
| 11 | 919354134 |
Centrales_y_Oponentes |
| 12 | 919355668 |
Centrales_y_Oponentes |
| 13 | 919356423 |
Centrales_y_Oponentes |
| 14 | 919357109 |
Centrales_y_Oponentes |
| 15 | 919358607 |
Centrales_y_Oponentes |
| 16 | 919359386 |
Centrales_y_Oponentes |
| 17 | 919359855 |
Centrales_y_Oponentes |
| 18 | 919360318 |
Centrales_y_Oponentes |
| 19 | 919363158 |
Centrales_y_Oponentes |
| 20 | 919363728 |
Centrales_y_Oponentes |
| 21 | 919364522 |
Centrales_y_Oponentes |
| 22 | 919365485 |
Centrales_y_Oponentes |
| 23 | 919366263 |
Centrales_y_Oponentes |
Adicionalmente, otras secciones también tienen videos (Planificacion 1, Prep Atletica 3, Explicacion TP 1, Puntas y Liberos 12, Entrenamiento Armadoras 1, Explicacion TP 1).
📄 Archivos/Documentos
Se detectaron enlaces a recursos del curso:
- "Abrir Archivo" (disparan descarga nativa del navegador): IDs de recurso como
46874,46805,46926,50320,52903,46723,46724,53012,53137,53138,53139,46719,50329,46726,46725,53173 - "Abrir Enlace" (redirigen a una página web): IDs como
46541,50142,50145,50144,50139,50140,50143,50141
Los "Abrir Enlace" ya están capturados como HTML en los archivos pagina.html de cada sección.
🖼️ Imágenes
- Logo del curso
- Avatar de usuario por defecto
- Logo de OEC
Autenticación
La plataforma usa Auth0 como proveedor de identidad con Authorization Code Flow.
| Parámetro | Valor |
|---|---|
| Auth0 Domain | auth.onlineeducation.center |
| Client ID | FelVoKUCb9QqtTFMSI2cggCbcw1klBbB |
| Callback URL | https://voley.onlineeducation.center/auth0/callback |
| Tenant | onlineeducationcenter |
| Subdomain | voley |
| Database Connection | Username-Password-Authentication |
| Response Type | code (Authorization Code Flow) |
| Scope | openid profile email |
Flujo de autenticación
- GET a la URL del curso → redirige al login de Auth0
- Login via
webAuth.login()conrealm,username,password+ captcha - Auth0 redirige al
callbackURLcon uncode - El servidor canjea el code por tokens y establece cookies de sesión
Notas sobre acceso programático
- ROPG (Resource Owner Password Grant): No disponible (responde
access_denied) - Endpoint
/co/authenticate: Requiere origin header específico + captcha - Login vía Playwright: Funciona correctamente. Las cookies se guardan en
session.jsonpara reuso - Sesión guardada: Se puede reutilizar en ejecuciones posteriores automáticamente
Contenido Descargado
Directorio: descargar-curso/descargas/
descargas/
├── secciones/
│ ├── Modulo_1_Planificacion/
│ │ ├── Planificacion/
│ │ │ ├── pagina.html (HTML completo de la página)
│ │ │ ├── contenido.md (Texto extraído como Markdown)
│ │ │ ├── recursos.json (Lista de recursos encontrados)
│ │ │ ├── videos.md (Referencias a videos Vimeo)
│ │ │ ├── archivo_*.bin/html (Archivos descargados)
│ │ │ └── screenshot.png
│ │ ├── Preparacion_Atletica/ (misma estructura)
│ │ ├── Explicacion_TP/
│ │ ├── Seguimientos_Equipos/
│ │ ├── Analisis_Equipos_1/
│ │ ├── Analisis_Equipos_2/
│ │ └── TP_Final_Unidad/
│ └── Modulo_2_Entrenamiento/
│ ├── Centrales_y_Oponentes/ (misma estructura)
│ ├── Puntas_y_Liberos/
│ ├── Entrenamiento_Armadoras/
│ └── Explicacion_TP/
├── campus/ (páginas generales del campus)
├── subpaginas/ (otras páginas navegadas)
├── imagenes/ (imágenes descargadas)
├── videos/ (referencias a videos)
├── enlaces_encontrados.json
├── recursos_encontrados.json
└── resultado_descarga.json (reporte de la ejecución)
Herramientas
Script principal
- Archivo:
descargar-curso/download_course.mjs - Runtime: Node.js 20.20.1 con Playwright
- Navegador: Chromium headless
- Dependencias:
npm install playwright,npx playwright install chromium
Cómo ejecutar
cd descargar-curso
node download_course.mjs
Archivos del proyecto
| Ruta | Propósito |
|---|---|
docs/CREDs.md |
Credenciales de acceso |
docs/HALLAZGOS.md |
Este archivo (documentación) |
descargar-curso/download_course.mjs |
Script principal de descarga |
descargar-curso/descargas/ |
Contenido descargado del curso |
descargar-curso/session.json |
Cookies de sesión guardadas (para reuso) |
descargar-curso/package.json |
Dependencias Node.js |
Pendiente / Mejoras Posibles
1. Descargar los PDFs/archivos reales
Los enlaces "Abrir Archivo" disparan una descarga nativa del navegador (Content-Disposition: attachment). Playwright lo maneja con el evento download, pero los selectores no coinciden exactamente (el href contiene query params). Solución: buscar el <a> por texto "Abrir Archivo" en lugar de por href exacto.
2. Descargar videos de Vimeo
Los videos están en Vimeo embebidos. Para descargarlos:
# Probar descarga directa (si el video es público)
yt-dlp "https://player.vimeo.com/video/{ID}"
# Si requiere autenticación, pasar cookies
yt-dlp --cookies ../session.json "https://player.vimeo.com/video/{ID}"
3. Extraer mejor el contenido textual
- El extractor de texto actual toma todo el texto visible del panel principal
- Se podría mejorar parseando el HTML para identificar: títulos, párrafos, listas, tablas
- Convertir a Markdown estructurado con formato
4. Dashboard HTML local
- Generar un
index.htmlque funcione offline con enlaces a todas las secciones - Que muestre el árbol del curso y permita navegar localmente
5. Descargar más páginas del curso
Solo se descargaron las 11 URLs de las secciones. Hay otras páginas del campus:
- Información general del curso
- Auditorio (webinars grabados)
- Foros
- Evaluaciones
- Trabajos prácticos
- Calificaciones
- Certificaciones
6. Almacenamiento de sesión
Las cookies de sesión expiran eventualmente. El script guarda session.json automáticamente después del login. Si la sesión expira, el script detecta la redirección al login y vuelve a autenticar.
Comandos Útiles
# Ver todos los archivos descargados
find descargas -type f | sort
# Contar recursos por tipo
echo "HTML:" $(find descargas -name "pagina.html" | wc -l)
echo "Markdown:" $(find descargas -name "contenido.md" | wc -l)
echo "Videos ref:" $(find descargas -name "videos.md" | wc -l)
echo "JSON:" $(find descargas -name "recursos.json" | wc -l)
# Ver tamaño total
du -sh descargas/
# Limpiar descargas y empezar de nuevo
rm -rf descargas/* session.json
# Descargar un video de Vimeo (requiere yt-dlp)
yt-dlp "https://player.vimeo.com/video/919369433"
Observaciones Técnicas
- Auth0: Usa captcha en el login. Playwright lo maneja porque lo renderiza en un contenedor oculto y el captcha de Auth0 no siempre se muestra para usuarios de confianza.
- CORS/CSRF: Los endpoints requieren headers específicos (Origin, Referer). Playwright los maneja automáticamente.
- Rate limiting: No se observó límite durante la ejecución. Se recomienda mantener delays de 1-2 segundos entre requests por cortesía.
- Vimeo: Los videos pueden requerir autenticación (el curso es privado). Si
yt-dlpfalla sin cookies, probar con--cookies session.json. - "Abrir Archivo" vs "Abrir Enlace": Los "Archivo" son descargas reales (PDF, DOC, etc.), los "Enlace" son páginas web con contenido ya capturado en
pagina.html.