Osintgram

¿Osintgram sigue funcionando en 2026?

En parte. Iniciar sesión con un usuario y una contraseña de Instagram está prácticamente muerto: los fallos de login reportados en el tracker durante 2026 son checkpoint_required, block_eu_user_login_in_old_app y bad_password. El backend de HikerAPI añadido en agosto de 2025, en cambio, es la vía que sigue diseñada para funcionar. El repositorio no está archivado, pero master no recibe un commit desde el 25 de agosto de 2025.

18 min de lecturaEquipo de Osintgram

La respuesta corta

En parte, y la división es limpia. Clona el repositorio, pon un usuario y una contraseña de Instagram en config/credentials.ini y en 2026 lo más probable es que nunca pases de la línea del login. Pon en su lugar un token de HikerAPI en ese mismo archivo y la herramienta no se autentica en Instagram en ningún momento: llama a una API de terceros de pago, y esa es la vía hacia la que el propio proyecto orienta ahora a la gente.

Login con contraseña: prácticamente muerto. Los fallos de login reportados a lo largo de 2026 son checkpoint_required, block_eu_user_login_in_old_app y bad_password. Token de HikerAPI: la vía que sigue diseñada para funcionar, y que los usuarios reportan como operativa; de terceros y de pago a partir de las primeras 100 peticiones. El repositorio: sin archivar, 13,896 estrellas, 828 issues abiertas, último commit el 25 de agosto de 2025, última release etiquetada la 1.3 en mayo de 2021.

Todo lo que viene a continuación procede de tres sitios: el código fuente del repositorio, la API de GitHub a fecha de 8 de agosto de 2026 y reportes de fallos fechados en el propio tracker del proyecto. No hemos ejecutado la CLI contra una cuenta real de Instagram: cada cadena de terminal que se cita aquí está leída del código o copiada de una issue fechada, citada con su número.

Qué se rompió en realidad

Osintgram es un envoltorio de línea de comandos muy fino. No habla con Instagram en sus propios términos: requirements.txt fija instagram-private-api==1.6.0 y delega todo el problema de la autenticación en esa librería. La salud de Osintgram es en realidad la salud de esa librería, y la librería lleva dos años parada.

ping/instagram_private_api recibió su último push el 6 de mayo de 2024. Funciona suplantando a la app móvil de Instagram contra el endpoint https://i.instagram.com/api/{version!s}/. Instagram retiró ese endpoint. La issue #791, abierta el 3 de mayo de 2023, es donde la comunidad se dio cuenta de forma colectiva: "Lately, we all discovered that Osintgram is not working anymore." ("Últimamente, todos hemos descubierto que Osintgram ya no funciona."). Desde entonces nada ha reparado la ruta de código heredada: el arreglo que acabó llegando fue un backend distinto, no una reparación.

Tres años después, el fallo tiene una firma legible. Este es el pegado de la issue #2627, abierta el 4 de marzo de 2026:

Attempt to login...
ClientError checkpoint_required (Code: 400, Response:
{"message": "checkpoint_required",
 "checkpoint_url": "https://i.instagram.com/web/unsupported_version/",
 "lock": false, "flow_render_type": 0, "status": "fail"})
Reportado en la issue #2627, el 4 de marzo de 2026. Aquí se muestra con saltos de línea para facilitar la lectura; la herramienta imprime la respuesta en una sola línea.

Fíjate en el checkpoint_url. No es un control de seguridad que se resuelva confirmando un correo: apunta a /web/unsupported_version/. Instagram está rechazando la versión de cliente que anuncia la librería, no tus credenciales. El mismo razonamiento vale para bad_password: el autor de la PR #2660, abierta el 12 de junio de 2026, escribe que "is actually a bot detection, not wrong password" ("en realidad es una detección de bots, no una contraseña incorrecta"), y el objetivo entero de esa PR es evitar que la gente vuelva a teclear una contraseña que nunca estuvo mal.

Hay un efecto de segundo orden que conviene conocer, porque explica por qué la herramienta parece romperse de la noche a la mañana para quien no ha cambiado nada. El backend heredado cachea su sesión en config/settings.json y la reutiliza en ejecuciones posteriores, así que un login antiguo puede seguir funcionando con cookies caducas mucho después de que los logins nuevos dejaran de tener éxito. Cuando esas cookies expiran obtienes ClientCookieExpiredError/ClientLoginRequiredError, y el código intenta de inmediato una reautenticación completa, directo contra el muro anterior. Limpiar la caché con el flag -C no arregla nada; solo adelanta el fallo.

Lee la URL, no el mensaje

Los errores de login de Instagram están escritos para la app, no para ti. checkpoint_required suena a que tu cuenta necesita verificación. bad_password suena a una errata. En ambos casos el detalle legible por máquina (la URL de checkpoint unsupported_version, la lectura que el propio autor de la PR hace de bad_password) apunta al cliente, no a ti. Restablecer la contraseña o crear otra cuenta desechable no cambia el resultado.

Inventario de errores de 2026

Estos son los fallos en la fase de login que la gente está reportando de verdad, con las fechas tomadas de las propias issues y no del sello de publicación de un blog. Si tu terminal imprimió Attempt to login... y luego uno de estos, estás mirando la parte del problema que depende de Instagram.

Error en el loginQué es en realidadDónde se reporta
checkpoint_required con una URL /web/unsupported_version/Instagram rechaza la versión de cliente de la librería#2627, 4 mar 2026
ClientError Bad Request: block_eu_user_login_in_old_appLogins de la UE rechazados para clientes que Instagram clasifica como app antigua#2630, 2 abr 2026
bad_passwordDetección de bots, según el autor de la PR, no una contraseña incorrectaPR #2660, 12 jun 2026
ClientError TimeoutError The read operation timed outEl login se queda colgado; reportado en Python 3.13#2596, 4 sep 2025
ClientCookieExpiredError/ClientLoginRequiredError: Cookie expiredLa sesión cacheada en config/settings.json ha caducado; el relogin automático choca con el mismo muroissue #2483, 23 feb 2025
challenge_requiredInstagram ha marcado la cuenta como sospechosa; el README te dice que abras el enlace y completes el desafíoissue #1638
Fallos de login reportados en Datalux/Osintgram, 2025-2026.

Para hacerse una idea de la escala: buscar en el tracker devuelve 66 issues que mencionan challenge_required, 55 que mencionan JSONDecodeError y 7 que mencionan checkpoint_required, frente a 98 de ModuleNotFoundError. Esa última cifra es la otra mitad de la historia, y es un problema completamente distinto.

La distinción importa cuando tienes que diagnosticar tu propio fallo. Si pip se negó con error: externally-managed-environment, o el traceback acaba en ModuleNotFoundError, la herramienta nunca llegó a Instagram y tienes un problema de instalación: consulta cómo instalar Osintgram, o la versión específica para Kali. Si llegaste hasta Attempt to login... y después un ClientError, estás en la tabla de arriba, y reinstalar no te va a sacar de ahí.

¿Está abandonado el proyecto?

Formalmente no. El repositorio es público, tiene licencia GPL-3.0 y explícitamente no está archivado, así que las issues y las pull requests siguen abriéndose. Pero las señales de mantenimiento conviene leerlas en conjunto y no de una en una.

SeñalValorNota
Estrellas13,896API de GitHub, 8 ago 2026
Forks3,000API de GitHub, 8 ago 2026
Issues abiertas828, más 55 pull requests abiertasLas recientes son en su mayoría títulos con nombres de usuario de Instagram a secas
Último commit en master25 de agosto de 2025Casi un año antes de este artículo
Última release etiquetada1.3, 17 de mayo de 2021Cinco años sin ninguna release
ArchivadoNoSigue aceptando issues y PRs
Ramasmaster, development, v2master es la rama por defecto
Banner de versión1.1main.py lo imprime pese a la etiqueta 1.3
Estado del repositorio Datalux/Osintgram, leído de la API de GitHub el 8 de agosto de 2026.

Puesta sobre una línea temporal, la forma del proyecto se ve mejor:

  1. 7 de junio de 2019: se crea el repositorio.
  2. 17 de mayo de 2021: se etiqueta la release 1.3. Sigue siendo la más reciente.
  3. 3 de mayo de 2023: en el issue #791 la comunidad se da cuenta de que la herramienta ha dejado de funcionar.
  4. 6 de mayo de 2024: instagram-private-api, la librería de la que depende la ruta por defecto, recibe su último push.
  5. 29 de julio de 2025: el commit "Integration with HikerAPI" aterriza en master.
  6. 11 de agosto de 2025: se fusiona la PR #2586, que completa el backend de HikerAPI.
  7. 25 de agosto de 2025: el último commit en master hasta la fecha.
  8. De marzo a junio de 2026: el tracker se llena de checkpoint_required, block_eu_user_login_in_old_app y bad_password.

La lectura honesta: no es un proyecto muerto, pero tampoco es uno mantenido. A alguien le importó lo suficiente a mediados de 2025 como para injertarle un backend que funciona, y después se apagaron otra vez las luces. Nadie está clasificando 828 issues abiertas, nadie está fusionando las 55 pull requests abiertas, nadie ha publicado una release en cinco años, y el banner de arranque sigue anunciando "Version 1.1 - Developed by Giuseppe Criscione" mientras la etiqueta más nueva dice 1.3. Planifica en consecuencia: si la vía de HikerAPI se rompe mañana, no hay ninguna prueba de que alguien vaya a arreglarla rápido.

Esto también te dice cuánto puedes fiarte de las guías que vas a encontrar. Las páginas que ahora mismo posicionan para instalar Osintgram están fechadas entre 2020 y 2025, y la mayoría se escribieron antes de todo esto: antes de la retirada del endpoint, antes de que Kali bloqueara pip detrás de la PEP 668, antes de que existiera el backend de HikerAPI. Un tutorial que no menciona hikerapi_token describe una versión de la herramienta que ya no conecta, por muy limpios que parezcan sus comandos.

La vía de HikerAPI, y lo que te cuesta

A finales de julio de 2025 el proyecto ganó un segundo backend. main.py toma ahora una única decisión al arrancar, antes de que se produzca ningún tráfico hacia Instagram:

if config.getHikerToken():
    api = HikerCLI(args.id, args.file, args.json, args.command,
                   args.output, args.cookies)
else:
    api = Osintgram(args.id, args.file, args.json, args.command,
                    args.output, args.cookies)
main.py en el master actual, con saltos de línea para que quepa. Una sola llamada decide qué backend te toca.

src/config.py define getHikerToken() como el campo hikerapi_token de config/credentials.ini, con la variable de entorno HIKERAPI_TOKEN como alternativa. Si cualquiera de los dos está definido, main.py construye HikerCLI, que no lee nunca un usuario ni una contraseña, así que los dos campos en blanco se quedan en blanco y no se intenta ningún login en Instagram.

[Credentials]
username =
password =
hikerapi_token = <your token>
config/credentials.ini. El equivalente puntual es HIKERAPI_TOKEN=<token> python3 main.py <target> -c <command>.

Puedes saber qué backend te ha tocado por la primera línea de salida. La ruta heredada imprime Attempt to login...; la de HikerAPI imprime Connect to HikerAPI... y quita la etiqueta [FOLLOWING] / [NOT FOLLOWING] del banner del objetivo, porque no hay ninguna cuenta con sesión iniciada con la que comparar. Esa única línea es la forma más rápida de comprobar que tu token se ha cogido de verdad.

El README te remite a hikerapi.com/tokens y afirma que las "first 100 requests are free after registration and confirmation of your tg" ("las primeras 100 peticiones son gratuitas tras el registro y la confirmación de tu tg"). A partir de ahí es una API comercial de pago por petición. De eso se derivan tres cosas, y ninguna aparece en los tutoriales que siguen posicionando para esta búsqueda.

  • Estás pagando a un tercero, y contándole a quién investigas. Cada nombre de usuario objetivo que consultas pasa por la infraestructura de HikerAPI en lugar de por tu propia sesión. Para cierto trabajo de investigación eso ya es un problema de divulgación en sí mismo.
  • La vía de HikerAPI tiene sus propias averías. La issue #2664, abierta el 21 de junio de 2026, se titula "Handle alternate HikerAPI user response formats" ("Gestionar formatos alternativos de respuesta de usuario de HikerAPI"): las formas de respuesta que el código espera no son las únicas que se están devolviendo.
  • Algunos comandos están muertos en esta vía por diseño. photodes en el backend de HikerAPI no hace nada más que imprimir Instagram has disabled this functionality.: eso es lo que dice el código, literalmente.

Por qué decimos "sigue diseñada para funcionar" y no "funciona garantizado"

No hemos ejecutado la herramienta contra un objetivo real, así que la afirmación se apoya en pruebas y no en una demo: la PR #2586 fusionó el backend en agosto de 2025, la PR #2660 existe específicamente para empujar hacia ahí a los usuarios atascados, y el autor de la issue #2627 dice sin rodeos que HikerAPI le funcionó hasta que se le agotó la cuota. Eso es una señal fuerte y una garantía débil. La issue #2664 es el motivo de la cautela.

¿Te van a banear la cuenta de Instagram?

El propio proyecto responde a esto. El README lleva un aviso en rojo: "It is advisable to not use your own/primary account when using this tool." ("Es aconsejable no usar tu cuenta propia o principal al utilizar esta herramienta."). No es texto de relleno: es una admisión de cómo se comporta la ruta heredada.

Mecánicamente, el backend por defecto inicia sesión como una cuenta real y luego se comporta como no lo haría ningún humano. Los cuatro comandos de recolección de contactos hacen una llamada extra a la API por cada seguidor, y en esos bucles no hay ninguna espera ni ningún backoff. Cuando Instagram protesta, obtienes Error: Instagram blocked the requests. Please wait a few minutes before you try again. en esos comandos, o un urllib.error.HTTPError: HTTP Error 429: Too Many Requests sin gestionar en followers y followings, que carecen por completo del manejador.

La escala a la que ocurre está documentada, en volúmenes más que en minutos. La issue #366 muestra una ejecución cortada tras 41,643 registros de seguidores recogidos, y el fallo que siguió al mensaje de limitación los descartó todos; la issue #342 reporta que el escaneo se bloqueó en torno a los 35,000. No existe ninguna medición verificada de tiempo real para nada de esto, así que no te fíes de una guía que te promete un volcado de seguidores en un número concreto de minutos. El parche comunitario #657 existe precisamente porque los bucles de upstream no tienen ningún retardo.

challenge_required es la versión a nivel de cuenta de la misma objeción: Instagram decidiendo que la sesión parece automatizada. La issue #1638 documenta que la herramienta lo dispara con frecuencia, con bloqueos temporales o la pérdida permanente de la cuenta utilizada como consecuencias reportadas. El propio FAQ del README te dice que abras el enlace del desafío y lo completes, lo cual funciona justo hasta que deja de funcionar.

Si vas a usar la ruta heredada, hazlo con una cuenta desechable

Usa una cuenta que puedas permitirte perder, y nunca una vinculada a una identidad real o a un encargo de cliente. El segundo aviso del README es igual de importante: config/credentials.ini guarda una contraseña en texto plano, así que si haces un fork del repositorio no la subas en un commit. La vía de HikerAPI esquiva la categoría entera: no hay ninguna cuenta tuya con sesión iniciada, así que no hay ninguna cuenta tuya que puedan bloquear.

Qué sigue funcionando, y qué usar en su lugar

Hay cuatro formas en las que la gente ejecuta esto de verdad, más una forma de saltárselo. Su estado en 2026 no es el mismo.

Vía¿Funciona en 2026?NecesitaCoste
Usuario + contraseña (por defecto)En la práctica no: falla en la línea del loginUna cuenta desechable de InstagramGratis, más el riesgo para la cuenta
Token de HikerAPILa vía que sigue diseñada para funcionarUn token; ninguna cuenta de Instagram100 peticiones gratis y después de pago
Imagen DockerLas mismas dos vías, en contenedorCredenciales incrustadas en tiempo de buildGratis
Rama v2No: no tiene backend de HikerAPIEl mismo login muertoGratis
Búsqueda alojadaUna cuenta con sesión iniciada y un usuario públicoCréditos por consulta
Las cinco rutas, y si a cada una le afecta el problema del login.

Dos notas al pie sobre esa tabla. La ruta de Docker no es la ganancia de aislamiento que parece: el Dockerfile hace COPY config/ /home/osintgram/config, así que lo que haya en credentials.ini en el momento del build queda incrustado en la imagen, una imagen que por tanto no debes subir nunca a ninguna parte. Y la rama beta v2, que unas cuantas guías todavía recomiendan, es anterior a todo el trabajo de HikerAPI; su requirements.txt elimina hikerapi y fija requests==2.24.0, así que lo único que tiene es la vía que ya no funciona.

Incluso en un backend que sí autentica, "funciona" es algo que se mide comando a comando. photodes llama en la ruta heredada al endpoint https://www.instagram.com/<target>/?__a=1, retirado hace mucho, y no hace nada en la de HikerAPI. addrs suele responder Sorry! No results found :-( porque las publicaciones geoetiquetadas son raras ahora: eso es una petición correcta que no devuelve nada, no un fallo. La referencia completa de comandos marca cuál es cuál. Y contra una cuenta privada a la que tu sesión iniciada no sigue, 19 de los 21 comandos de datos se niegan sin más; por diseño solo info y propic quedan fuera del muro, que es la cuestión de las cuentas privadas en una frase.

Si lo que de verdad necesitas es un informe sobre un perfil público y no un proyecto de Python que mantener, una búsqueda alojada elimina el componente que falla: nunca inicias sesión en Instagram, así que checkpoint_required no te puede pasar, y no hay entorno virtual, ni credentials.ini, ni cuenta desechable que perder. No es una afirmación de que la CLI sea mala: son los mismos datos públicos, alcanzados sin la parte que se rompió.

El veredicto de 2026

Osintgram no está muerto, y tampoco está bien. La instalación por defecto, la que describe cada tutorial de 2020 a 2025, está muerta en la práctica: la librería que hay debajo dejó de actualizarse en mayo de 2024, el endpoint del que depende ha desaparecido, e Instagram responde ahora a su handshake de login con checkpoint_required y una URL unsupported_version. Ningún cambio de configuración en tu máquina arregla eso.

El backend de HikerAPI es una vía real, actual y documentada que elimina el problema del login eliminando el login. Cuesta dinero a partir de 100 peticiones, enruta tus objetivos a través de un tercero y tiene su propio bug abierto sobre formatos de respuesta. Si quieres la CLI en concreto, para scripting, para reproducibilidad, para una carpeta de salida offline, esa es la versión que hay que instalar, y la guía de instalación lo cubre. Si solo querías los datos, la CLI nunca fue el objetivo.

Preguntas frecuentes

Osintgram es una herramienta OSINT independiente y no está afiliada a Instagram ni a Meta. Estas guías describen únicamente software de código abierto documentado públicamente e investigación con fuentes abiertas. Usa estas técnicas de forma legal, sobre objetivos que estés autorizado a investigar, y nunca para acosar o vigilar a particulares.