Una colección de scripts especializados en Python para descargar contenido de Instagram de manera segura y eficiente. Cada script está optimizado para diferentes casos de uso.
| Script | Nivel | Descripción | Mejor para |
|---|---|---|---|
🍪 browser_session_downloader.py |
RECOMENDADO | Usa cookies del navegador | Perfiles privados, máxima seguridad |
📚 browser_stories_downloader.py |
NUEVO | Stories con cookies del navegador | Stories de usuarios específicos |
🛡️ instagram_downloader_safe.py |
Intermedio | Descargas con pausas largas | Evitar bloqueos de Instagram |
📱 instagram_downloader.py |
Avanzado | Script completo con todas las opciones | Usuarios experimentados |
🔧 instagram_fixed.py |
Robusto | Manejo avanzado de errores | Problemas de conectividad |
🚀 simple_downloader.py |
Principiante | Script básico sin configuraciones | Primeras pruebas |
⚡ minimal_downloader.py |
Básico | Configuración ultra-simple | Testing rápido |
- 🍪 Autenticación con cookies: Usa las cookies de tu navegador (más seguro)
- 🔓 Acceso a perfiles privados: Si sigues al usuario en Instagram
- 🚫 Sin contraseñas: No necesitas escribir tu contraseña en ningún lado
- 🛡️ Detección mínima: Instagram detecta menos este método
- 📊 Diagnósticos detallados: Información completa de progreso y errores
- Python 3.7 o superior
- pip (gestor de paquetes de Python)
-
Clona o descarga este repositorio
git clone <url-del-repositorio> cd instaloader
-
Instala las dependencias
pip install -r requirements.txt
- Abre Instagram en tu navegador y haz login
- Presiona
F12o clic derecho → "Inspeccionar elemento" - Ve a la pestaña Network (Red)
- Recarga la página (
F5) - Busca alguna petición a
instagram.com - En la sección Request Headers busca la línea
Cookie: - Copia todas las cookies
- Instala EditThisCookie en Chrome
- Ve a Instagram y haz login
- Haz clic en el ícono de la extensión
- Clic en "Export" → "JSON"
- Copia el JSON generado
Solo necesitas estas cookies esenciales:
sessionid- La más importante para autenticaciónds_user_id- ID de tu usuariocsrftoken- Token de seguridad
# Formato básico
python browser_session_downloader.py <username> <cookies.json>
# Con límite de posts
python browser_session_downloader.py <username> <cookies.json> <número_posts>
# Desde JSON directo (string)
python browser_session_downloader.py <username> '[{"name":"sessionid"...}]'# 1. Descargar todos los posts usando archivo de cookies
python browser_session_downloader.py natgeo instagram_cookies.json
# 2. Descargar solo 100 posts de un perfil privado
python browser_session_downloader.py amigo_privado cookies.json 100
# 3. Descargar 50 posts con límite
python browser_session_downloader.py usuario_objetivo cookies.json 50
# 4. Crear archivo de ejemplo de cookies
python browser_session_downloader.py --ejemplo- ✅ Perfiles privados que sigues
- ✅ Cuentas grandes (millones de posts) con límite
- ✅ Máxima discreción para evitar detección
- ✅ Sin riesgo de contraseña expuesta
- 📚 Especializado en Stories: Optimizado exclusivamente para stories (duran 24h)
- 👥 Múltiples usuarios: Descarga stories de varios usuarios de una vez
- 🍪 Autenticación con cookies: Mismo sistema seguro que el descargador principal
- 🔄 Auto-organización: Cada usuario en su propia carpeta
- ⏰ Consciente del tiempo: Alerta si no hay stories disponibles
# Stories de usuarios específicos
python browser_stories_downloader.py user1,user2,user3 cookies.json
# Stories de TODOS los usuarios que sigues
python browser_stories_downloader.py --siguiendo cookies.json
# Crear archivo de ejemplo de cookies
python browser_stories_downloader.py --ejemplo# 1. Stories de usuarios específicos (separados por comas)
python browser_stories_downloader.py natgeo,cristiano,nike instagram_cookies.json
# 2. Stories de todos los usuarios que sigues
python browser_stories_downloader.py --siguiendo instagram_cookies.json
# 3. Solo un usuario específico
python browser_stories_downloader.py mi_amigo instagram_cookies.json- ✅ Stories de amigos cercanos antes de que expiren
- ✅ Stories de marcas/celebridades que sigues
- ✅ Descarga masiva de todos los stories disponibles
- ✅ Backup temporal de stories importantes
instagram_stories/
├── natgeo_stories/
│ ├── 2025-01-17_story1.jpg
│ ├── 2025-01-17_story1.json
│ └── 2025-01-17_story2.mp4
├── cristiano_stories/
│ ├── 2025-01-17_story1.jpg
│ └── 2025-01-17_story2.jpg
└── siguiendo_stories/
├── usuario1_stories/
├── usuario2_stories/
└── ...
- 🕐 24 horas: Los stories desaparecen automáticamente
- 🔐 Requieren autenticación: Casi siempre necesitan cookies válidas
- 👥 Visibilidad limitada: Solo stories que tienes permiso de ver
- 📱 Privacidad: Respeta las configuraciones de privacidad de cada usuario
Características:
- ⏰ Pausas largas entre descargas (10-60 segundos)
- 🐌 Muy lento pero muy seguro
- 🔐 Soporte para autenticación usuario/contraseña
- ✅ Ideal para cuentas públicas grandes
# Solo posts públicos (MUY lento)
python instagram_downloader_safe.py natgeo
# Con autenticación (ULTRA lento)
python instagram_downloader_safe.py usuario_privado tu_usuario tu_contraseñaCaracterísticas:
- 🎯 Todas las opciones: posts, stories, highlights, tagged
- 📁 Organización automática en carpetas
- 📊 Logging detallado
- ⚙️ Múltiples parámetros configurables
# Uso básico
python instagram_downloader.py nombre_usuario
# Con autenticación y opciones completas
python instagram_downloader.py nombre_usuario -u tu_usuario -p tu_contraseña --stories --highlights --tagged -f mi_carpetaParámetros disponibles:
| Parámetro | Descripción | Ejemplo |
|---|---|---|
profile |
Requerido. Nombre del perfil de Instagram | natgeo |
-u, --username |
Tu usuario de Instagram para autenticación | -u mi_usuario |
-p, --password |
Tu contraseña de Instagram | -p mi_contraseña |
-f, --folder |
Carpeta donde guardar las descargas | -f descargas |
--stories |
Descargar stories actuales | --stories |
--highlights |
Descargar highlights | --highlights |
--tagged |
Descargar posts donde está etiquetado | --tagged |
Características:
- 🛠️ Inicialización robusta de Instaloader
- 🔄 Múltiples reintentos automáticos
- ⚡ Manejo avanzado de errores de red
- 🎯 Soluciona errores de NoneType y conexión
python instagram_fixed.py natgeoCaracterísticas:
- 📝 Código simple y fácil de entender
- ⚡ Sin configuraciones complejas
- 📱 Solo perfiles públicos
- 🎯 Ideal para primeras pruebas
python simple_downloader.py natgeoCaracterísticas:
- 🔬 Configuración ultra-básica
- 🎯 Máximo 10 posts (modo prueba)
- ⚡ Pausas cortas (3 segundos)
- 🧪 Para testing y desarrollo
python minimal_downloader.py usuario_testusername_browser_session/
├── 2025-09-03_15-00-08_UTC.jpg # Imagen del post
├── 2025-09-03_15-00-08_UTC.json # Metadatos (likes, comentarios, descripción)
├── 2025-09-03_15-00-08_UTC.txt # Descripción en texto plano
└── 2025-09-03_15-00-08_UTC.mp4 # Video (si aplica)
descargas/
└── usuario_20231201_143022/
├── posts/
│ └── usuario/
│ ├── 2023-12-01_12-34-56_UTC.jpg
│ ├── 2023-12-01_12-34-56_UTC.json
│ └── 2023-12-01_12-34-56_UTC.mp4
├── stories/
│ └── usuario/
│ └── story_2023-12-01.jpg
├── highlights/
│ └── usuario/
│ └── highlight_vacation.jpg
└── tagged/
└── usuario_tagged/
└── tagged_post.jpg
username/
├── 2023-12-01_12-34-56_UTC.jpg
├── 2023-12-01_12-34-56_UTC.json
└── 2023-12-01_12-34-56_UTC.mp4
| Situación | Script recomendado | ¿Por qué? |
|---|---|---|
| Perfil privado que sigues | 🍪 browser_session_downloader.py |
Más seguro, sin contraseñas |
| Solo Stories específicos | 📚 browser_stories_downloader.py |
Especializado en stories, múltiples usuarios |
| Perfil público grande | 🛡️ instagram_downloader_safe.py |
Pausas largas evitan bloqueos |
| Primera vez usando | 🚀 simple_downloader.py |
Fácil de entender |
| Quiero TODO (stories, highlights) | 📱 instagram_downloader.py |
Script más completo |
| Errores de conexión | 🔧 instagram_fixed.py |
Manejo robusto de errores |
| Solo testing/prueba | ⚡ minimal_downloader.py |
Rápido, máximo 10 posts |
- 🥇 Browser Session - Cookies del navegador
- 🥈 Safe Mode - Pausas muy largas
- 🥉 Fixed - Reintentos moderados
- 🏅 Complete - Múltiples requests
⚠️ Simple/Minimal - Sin pausas largas
- Para descargar perfiles privados
- Para descargar stories
- Para descargar highlights
- Para acceder a contenido completo sin limitaciones
- NUNCA compartas tus credenciales
- Usa una cuenta secundaria si es posible
- Instagram puede detectar uso automatizado y limitar temporalmente tu cuenta
- El script incluye pausas para minimizar este riesgo
- Términos de servicio: Este script debe usarse respetando los términos de servicio de Instagram
- Uso ético: Solo descarga contenido que tengas derecho a descargar
- Rate limiting: Instagram puede limitar las descargas si detecta actividad automatizada excesiva
- Perfiles privados: Requieren autenticación y que sigas la cuenta
- Stories: Solo se pueden descargar las stories actuales (24h)
Problema: Necesitas acceder a contenido privado de forma segura
# SOLUCIÓN: Usa cookies del navegador
python browser_session_downloader.py amigo_privado instagram_cookies.json 200Problema: Cuenta muy grande (ej: @natgeo con 30K+ posts)
# SOLUCIÓN: Safe mode con pausas largas o límite
python browser_session_downloader.py natgeo instagram_cookies.json 500
# o
python instagram_downloader_safe.py natgeoProblema: No sabes si funciona, quieres algo simple
# SOLUCIÓN: Script simple con perfil público
python simple_downloader.py natgeoProblema: Necesitas descargar stories antes de que expiren (24h)
# SOLUCIÓN: Script especializado para stories
python browser_stories_downloader.py natgeo,cristiano,nike instagram_cookies.json
# o todos los stories de quienes sigues
python browser_stories_downloader.py --siguiendo instagram_cookies.jsonProblema: Necesitas contenido completo de un perfil
# SOLUCIÓN: Script completo con autenticación
python instagram_downloader.py usuario -u tu_usuario -p tu_contraseña --stories --highlights --taggedProblema: El script se rompe, errores de red
# SOLUCIÓN: Script robusto con reintentos
python instagram_fixed.py problema_usuario- Ve a Instagram en Chrome/Firefox
- Haz login normalmente
- Presiona
F12→ pestaña Application → Cookies → https://www.instagram.com - Copia las cookies importantes:
sessionid,ds_user_id,csrftoken
# Crear plantilla automáticamente
python browser_session_downloader.py --ejemploAbre cookies_ejemplo.json y reemplaza TU_SESSION_ID_AQUI con tus valores reales
python browser_session_downloader.py objetivo cookies_ejemplo.json# CAUSA: Cookies expiradas o inválidas
# SOLUCIÓN: Obtener cookies frescas- Cierra Instagram en el navegador
- Abre Instagram y haz login de nuevo
- Extrae las cookies nuevamente
- Intenta de nuevo
# CAUSA: Instagram detectó el bot
# SOLUCIÓN: Cambiar estrategia- Espera 2-4 horas antes de reintentar
- Usa un navegador diferente para las cookies
- Cambia al script
instagram_downloader_safe.py(más lento)
# CAUSA: JSON de cookies incompleto
# SOLUCIÓN: Verificar cookies importantesAsegúrate de tener: sessionid, ds_user_id, csrftoken
- ✅ Verifica que el nombre de usuario sea correcto (sin @)
- ✅ El perfil podría estar desactivado o cambiado de nombre
- ✅ Instagram te está limitando temporalmente
- ✅ Espera 30-60 minutos antes de reintentar
- ✅ Usa scripts con pausas más largas (
*_safe.py)
- ✅ Instagram requiere verificación (captcha/SMS)
- ✅ Inicia sesión manualmente en el navegador
- ✅ Espera 24 horas e intenta de nuevo
- ✅ Usa
instagram_fixed.pypara problemas de conectividad - ✅ Revisa los archivos
.logpara más detalles - ✅ Reinicia tu conexión a internet
| Problema | Script más rápido | Script más seguro |
|---|---|---|
| Cuenta grande | minimal_downloader.py |
instagram_downloader_safe.py |
| Perfil privado | browser_session_downloader.py |
browser_session_downloader.py |
| Primera vez | simple_downloader.py |
instagram_downloader_safe.py |
| Errores frecuentes | instagram_fixed.py |
instagram_fixed.py |
- 🎯 Usa límites: No descargues todos los posts si no los necesitas
- 🍪 Browser session es el más eficiente para perfiles privados
- ⏰ Safe mode para cuentas grandes (>10K posts)
- 🔄 Fixed mode para conexiones inestables
| Característica | 🍪 Browser Session | 📚 Stories Browser | 🛡️ Safe Mode | 📱 Complete | 🚀 Simple |
|---|---|---|---|---|---|
| Seguridad | 🟢 Muy alta | 🟢 Muy alta | 🟢 Alta | 🟡 Media | 🔴 Baja |
| Velocidad | 🟡 Media | 🟢 Rápida | 🔴 Muy lenta | 🟢 Rápida | 🟢 Rápida |
| Perfiles privados | ✅ Sí | ✅ Sí | ✅ Con login | ✅ Con login | ❌ No |
| Stories | ❌ No | ✅ Especializado | ❌ No | ✅ Sí | ❌ No |
| Posts | ✅ Sí | ❌ No | ✅ Sí | ✅ Sí | ✅ Sí |
| Múltiples usuarios | ❌ Uno por vez | ✅ Batch stories | ❌ Uno por vez | ❌ Uno por vez | ❌ Uno por vez |
| Sin contraseña | ✅ Sí | ✅ Sí | ❌ Requiere login | ❌ Requiere login | ✅ Sí |
| Facilidad de uso | 🟡 Media | 🟡 Media | 🟢 Fácil | 🔴 Complejo | 🟢 Muy fácil |
| Rate limiting | 🟢 Resistente | 🟢 Resistente | 🟢 Muy resistente | 🟡 Moderado | 🔴 Vulnerable |
- ✅ Output en tiempo real con emojis
- ✅ Información detallada de cookies
- ✅ Progreso con porcentajes
- ✅ Diagnóstico específico de errores
- ✅ Output especializado para stories
- ✅ Información detallada por usuario
- ✅ Alertas cuando no hay stories disponibles
- ✅ Resumen completo con estadísticas finales
- ✅ Auto-organización en carpetas por usuario
- ✅ Archivo
instagram_downloader.log - ✅ Timestamps de todas las acciones
- ✅ Estadísticas completas de descarga
- ✅ Información de errores detallada
- ✅ Output básico con progreso
- ✅ Pausas claramente indicadas
- ✅ Conteo de posts descargados
python browser_session_downloader.py usuario cookies.json 100python browser_stories_downloader.py natgeo,cristiano,nike cookies.json
# o todos los stories
python browser_stories_downloader.py --siguiendo cookies.jsonpython instagram_downloader_safe.py usuariopython simple_downloader.py usuario_publicopython instagram_downloader.py usuario -u tu_user -p tu_pass --stories --highlights- 📱 Contenido de tu propia cuenta
- 👥 Contenido público con fines educativos
- 🎓 Investigación académica
- 💾 Backup personal de contenido que sigues
- 🚫 Redistribución de contenido sin permiso
- 💰 Uso comercial sin autorización
- 🕷️ Scraping masivo de perfiles
- 👤 Violación de privacidad
¿Mejoras, bugs o nuevas funcionalidades?
- Fork el proyecto
- Crea una rama:
git checkout -b feature/MiMejora - Commit:
git commit -m 'Agrego nueva funcionalidad' - Push:
git push origin feature/MiMejora - Pull Request: Crea un PR describiendo tus cambios
- 🚀 Instaloader: Librería principal
- 🤖 IA: Asistencia en desarrollo y documentación
- 🔧 Comunidad: Feedback y testing de usuarios
¿Problemas? ¿Preguntas?
- 📖 Lee este README completo (especialmente "Solución de problemas")
- 🍪 Prueba el Browser Session Downloader (método recomendado)
- 🔍 Revisa los logs de error para más detalles
- 🐛 Reporta bugs con información detallada
📜 Términos de servicio: Respeta siempre los ToS de Instagram y las leyes locales sobre derechos de autor.
🔒 Privacidad: Solo descarga contenido que tengas derecho a descargar. No violes la privacidad de otros.
🎓 Propósito educativo: Estos scripts son para aprendizaje, investigación y uso personal responsable.
💡 ¿Encontraste útil esta suite? ⭐ ¡Dale estrella al proyecto!