Osintgram

Osintgram fonctionne-t-il encore en 2026 ?

En partie. Se connecter avec un nom d'utilisateur et un mot de passe Instagram est mort en pratique (les rapports de connexion de 2026 sur le tracker signalent checkpoint_required, block_eu_user_login_in_old_app et bad_password), tandis que le backend HikerAPI ajouté en août 2025 reste la voie prévue pour fonctionner. Le dépôt n'est pas archivé, mais master n'a plus reçu de commit depuis le 25 août 2025.

18 min de lectureÉquipe Osintgram

La réponse courte

En partie, et la ligne de partage est nette. Clonez le dépôt, placez un nom d'utilisateur et un mot de passe Instagram dans config/credentials.ini et, en 2026, vous ne dépasserez très probablement jamais la ligne de connexion. Placez plutôt un token HikerAPI dans ce même fichier et l'outil ne s'authentifie plus du tout auprès d'Instagram : il appelle une API tierce payante, et c'est la voie vers laquelle le projet lui-même oriente désormais ses utilisateurs.

Connexion par mot de passe : morte en pratique. Les échecs de connexion signalés tout au long de 2026 sont checkpoint_required, block_eu_user_login_in_old_app et bad_password. Token HikerAPI : la voie encore prévue pour fonctionner, que les utilisateurs disent opérationnelle ; service tiers, payant au-delà des 100 premières requêtes. Le dépôt : non archivé, 13,896 stars, 828 issues ouvertes, dernier commit le 25 août 2025, dernière release taguée 1.3 en mai 2021.

Tout ce qui suit provient de trois sources : le code du dépôt, l'API GitHub au 8 août 2026 et des rapports de bugs datés sur le tracker du projet. Nous n'avons pas exécuté la CLI contre un compte Instagram réel : chaque chaîne de terminal citée ici est soit lue dans le code source, soit copiée depuis une issue datée, référencée par son numéro.

Ce qui a réellement cassé

Osintgram est une fine surcouche en ligne de commande. Il ne dialogue pas avec Instagram par ses propres moyens : requirements.txt fige instagram-private-api==1.6.0 et délègue tout le problème d'authentification à cette bibliothèque. L'état de santé d'Osintgram est en réalité celui de cette bibliothèque, et elle est à l'arrêt depuis deux ans.

ping/instagram_private_api a reçu son dernier push le 6 mai 2024. Son principe est d'usurper l'identité de l'application mobile Instagram auprès de l'endpoint https://i.instagram.com/api/{version!s}/. Instagram a supprimé cet endpoint. L'issue #791, ouverte le 3 mai 2023, est le moment où la communauté l'a collectivement constaté : "Lately, we all discovered that Osintgram is not working anymore." (« Nous avons tous découvert récemment qu'Osintgram ne fonctionne plus. ») Rien n'a réparé l'ancien chemin de code depuis. Le correctif qui a fini par arriver était un backend différent, pas une réparation.

Trois ans plus tard, la panne a une signature lisible. Voici le copier-coller de l'issue #2627, déposée le 4 mars 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"})
Signalé dans l'issue #2627, le 4 mars 2026. Retour à la ligne ajouté ici pour la lisibilité ; l'outil affiche la réponse sur une seule ligne.

Lisez le checkpoint_url. Ce n'est pas un contrôle de sécurité que l'on lève en confirmant un e-mail : il pointe vers /web/unsupported_version/. Instagram rejette la version du client annoncée par la bibliothèque, pas vos identifiants. Le même raisonnement vaut pour bad_password : l'auteur de la PR #2660, ouverte le 12 juin 2026, écrit que cette erreur "is actually a bot detection, not wrong password" (« est en réalité une détection de bot, pas un mot de passe erroné »), et toute la raison d'être de cette PR est d'empêcher les gens de ressaisir un mot de passe qui n'a jamais été faux.

Il existe un effet de second ordre qu'il vaut mieux connaître, car il explique pourquoi l'outil semble tomber en panne du jour au lendemain chez des gens qui n'ont rien changé. L'ancien backend met sa session en cache dans config/settings.json et la réutilise lors des exécutions suivantes : une ancienne connexion peut donc continuer à fonctionner sur des cookies périmés bien après que les nouvelles connexions ont cessé d'aboutir. Quand ces cookies expirent, vous obtenez ClientCookieExpiredError/ClientLoginRequiredError, et le code tente immédiatement une réauthentification complète, droit dans le mur décrit plus haut. Vider le cache avec l'option -C ne répare rien ; cela ne fait qu'avancer l'échec.

Lisez l'URL, pas le message

Les erreurs de connexion d'Instagram sont écrites pour l'application, pas pour vous. checkpoint_required donne l'impression que votre compte doit être vérifié. bad_password ressemble à une faute de frappe. Dans les deux cas, le détail lisible par la machine (l'URL de checkpoint unsupported_version, la lecture que l'auteur de la PR fait lui-même de bad_password) désigne le client, pas vous. Réinitialiser votre mot de passe ou créer un nouveau compte jetable ne change rien au résultat.

L'inventaire des erreurs de 2026

Voici les échecs au stade de la connexion que les utilisateurs signalent réellement, avec des dates tirées des issues elles-mêmes plutôt que de la date de publication d'un blog. Si votre terminal a affiché Attempt to login... puis l'un de ces messages, vous êtes face au versant Instagram du problème.

Erreur à la connexionCe que c'est réellementOù c'est signalé
checkpoint_required avec une URL /web/unsupported_version/Instagram rejette la version du client annoncée par la bibliothèque#2627, 4 mars 2026
ClientError Bad Request: block_eu_user_login_in_old_appConnexions depuis l'UE refusées aux clients qu'Instagram classe comme application obsolète#2630, 2 avril 2026
bad_passwordDétection de bot selon l'auteur de la PR, pas un mot de passe erronéPR #2660, 12 juin 2026
ClientError TimeoutError The read operation timed outLa connexion se bloque ; signalé sur Python 3.13#2596, 4 sept. 2025
ClientCookieExpiredError/ClientLoginRequiredError: Cookie expiredLa session en cache dans config/settings.json a expiré ; la reconnexion automatique se heurte au même murissue #2483, 23 févr. 2025
challenge_requiredInstagram a jugé le compte suspect ; le README vous dit d'ouvrir le lien et de valider le challengeissue #1638
Échecs de connexion signalés sur Datalux/Osintgram, 2025-2026.

Pour donner l'échelle : une recherche dans le tracker renvoie 66 issues mentionnant challenge_required, 55 mentionnant JSONDecodeError et 7 mentionnant checkpoint_required, contre 98 pour ModuleNotFoundError. Ce dernier chiffre représente l'autre moitié de l'histoire, et c'est un problème totalement différent.

La distinction compte au moment de trier votre propre panne. Si pip a refusé avec error: externally-managed-environment, ou si la traceback se termine par ModuleNotFoundError, l'outil n'a jamais atteint Instagram et vous avez un problème d'installation : voyez comment installer Osintgram, ou la version spécifique à Kali. Si vous êtes allé jusqu'à Attempt to login... puis un ClientError, vous êtes dans le tableau ci-dessus, et une réinstallation ne vous en sortira pas.

Le projet est-il abandonné ?

Pas officiellement. Le dépôt est public, sous licence GPL-3.0 et explicitement non archivé : on peut donc toujours y ouvrir des issues et des pull requests. Mais les signaux de maintenance méritent d'être lus ensemble plutôt qu'un par un.

SignalValeurRemarque
Stars13,896API GitHub, 8 août 2026
Forks3,000API GitHub, 8 août 2026
Issues ouvertes828, plus 55 pull requests ouvertesLes plus récentes ont pour titre, en grande majorité, un simple nom d'utilisateur Instagram
Dernier commit sur master25 août 2025Près d'un an avant cet article
Dernière release taguée1.3, 17 mai 2021Cinq ans sans nouvelle release
ArchivéNonAccepte toujours les issues et les PR
Branchesmaster, development, v2master est la branche par défaut
Bannière de version1.1main.py l'affiche malgré le tag 1.3
État du dépôt Datalux/Osintgram, relevé via l'API GitHub le 8 août 2026.

Replacée sur une frise chronologique, la trajectoire du projet devient plus lisible :

  1. 7 juin 2019 : le dépôt est créé.
  2. 17 mai 2021 : la release 1.3 est taguée. C'est toujours la plus récente.
  3. 3 mai 2023, issue #791 : la communauté constate que l'outil a cessé de fonctionner.
  4. 6 mai 2024 : instagram-private-api, la bibliothèque dont dépend le chemin par défaut, reçoit son dernier push.
  5. 29 juillet 2025 : le commit "Integration with HikerAPI" arrive sur master.
  6. 11 août 2025 : la PR #2586 est mergée, achevant le backend HikerAPI.
  7. 25 août 2025 : le dernier commit sur master à ce jour.
  8. De mars à juin 2026 : le tracker se remplit de checkpoint_required, block_eu_user_login_in_old_app et bad_password.

La lecture honnête : ce n'est pas un projet mort, mais ce n'est pas non plus un projet maintenu. Quelqu'un s'y est suffisamment intéressé mi-2025 pour y greffer un backend fonctionnel, puis la lumière s'est de nouveau éteinte. Personne ne trie les 828 issues ouvertes, personne ne merge les 55 pull requests ouvertes, personne n'a publié de release depuis cinq ans, et la bannière de démarrage annonce toujours "Version 1.1 - Developed by Giuseppe Criscione" alors que le tag le plus récent indique 1.3. Prévoyez en conséquence : si le chemin HikerAPI casse demain, rien n'indique que quelqu'un le réparera rapidement.

Cela vous indique aussi le crédit à accorder aux guides que vous trouverez. Les pages qui se positionnent aujourd'hui sur l'installation d'Osintgram sont datées de 2020 à 2025, et la plupart ont été écrites avant tout cela : avant la fermeture de l'endpoint, avant que Kali ne verrouille pip derrière la PEP 668, avant l'existence du backend HikerAPI. Un tutoriel qui ne mentionne jamais hikerapi_token décrit une version de l'outil qui ne se connecte plus, aussi propres que soient ses commandes.

La voie HikerAPI, et ce qu'elle vous coûte

Fin juillet 2025, le projet s'est doté d'un second backend. main.py prend désormais une seule décision au démarrage, avant tout trafic vers 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 sur le master actuel, remis en forme ici pour tenir dans la largeur. Un seul appel décide du backend que vous obtenez.

src/config.py définit getHikerToken() comme le champ hikerapi_token de config/credentials.ini, avec repli sur la variable d'environnement HIKERAPI_TOKEN. Si l'un des deux est renseigné, main.py construit HikerCLI, qui ne lit jamais de nom d'utilisateur ni de mot de passe : les deux champs vides restent donc vides et aucune connexion Instagram n'est tentée.

[Credentials]
username =
password =
hikerapi_token = <your token>
config/credentials.ini. L'équivalent ponctuel est HIKERAPI_TOKEN=<token> python3 main.py <target> -c <command>.

La première ligne de sortie vous dit quel backend vous avez obtenu. L'ancien chemin affiche Attempt to login... ; le chemin HikerAPI affiche Connect to HikerAPI... et retire la mention [FOLLOWING] / [NOT FOLLOWING] de la bannière de cible, faute de compte connecté auquel se comparer. Cette unique ligne est le moyen le plus rapide de vérifier que votre token a bien été pris en compte.

Le README vous renvoie vers hikerapi.com/tokens et indique que les "first 100 requests are free after registration and confirmation of your tg" (« les 100 premières requêtes sont gratuites après inscription et confirmation de votre tg »). Ensuite, c'est une API commerciale facturée à la requête. Trois conséquences en découlent, et aucune ne figure dans les tutoriels qui se positionnent encore sur cette requête.

  • Vous payez un tiers, et vous lui dites sur qui vous enquêtez. Chaque nom d'utilisateur cible que vous interrogez transite par l'infrastructure de HikerAPI plutôt que par votre propre session. Pour certaines investigations, c'est en soi un problème de divulgation.
  • Le chemin HikerAPI a ses propres pannes. L'issue #2664, ouverte le 21 juin 2026, est intitulée "Handle alternate HikerAPI user response formats" : les formats de réponse attendus par le code ne sont pas les seuls renvoyés.
  • Certaines commandes sont mortes sur ce chemin, par conception. Sur le backend HikerAPI, photodes ne fait rien d'autre qu'afficher Instagram has disabled this functionality. C'est ce que dit le code source, mot pour mot.

Pourquoi nous disons « encore prévue pour fonctionner », et non « garantie de fonctionner »

Nous n'avons pas exécuté l'outil contre une cible réelle : l'affirmation repose donc sur des preuves plutôt que sur une démonstration. La PR #2586 a intégré le backend en août 2025, la PR #2660 existe précisément pour y orienter les utilisateurs bloqués, et l'auteur de l'issue #2627 dit clairement que HikerAPI a fonctionné pour lui jusqu'à épuisement de son quota. C'est un signal fort et une garantie faible. L'issue #2664 est la raison de cette prudence.

Votre compte Instagram risque-t-il d'être banni ?

Le projet y répond lui-même. Le README porte un avertissement en rouge : "It is advisable to not use your own/primary account when using this tool." (« Il est conseillé de ne pas utiliser votre compte personnel ou principal avec cet outil. ») Ce n'est pas une formule de style, c'est un aveu sur le comportement de l'ancien chemin.

Mécaniquement, le backend par défaut se connecte avec un vrai compte, puis se comporte comme aucun humain ne le ferait. Les quatre commandes de collecte de contacts effectuent un appel d'API supplémentaire par abonné, et il n'y a ni pause ni backoff nulle part dans ces boucles. Quand Instagram proteste, vous obtenez Error: Instagram blocked the requests. Please wait a few minutes before you try again. sur ces commandes, ou une urllib.error.HTTPError: HTTP Error 429: Too Many Requests non gérée sur followers et followings, qui n'ont tout simplement pas le gestionnaire.

L'échelle à laquelle cela se produit est documentée, en volumes plutôt qu'en minutes. L'issue #366 montre une exécution interrompue après 41,643 enregistrements d'abonnés collectés, et le crash qui a suivi le message de throttling les a tous perdus ; l'issue #342 signale un scan bloqué aux alentours de 35,000. Aucun chronométrage vérifié n'existe pour tout cela : ne faites donc pas confiance à un guide qui vous promet un export d'abonnés en tant de minutes. Le patch communautaire #657 existe précisément parce que les boucles amont ne comportent aucun délai.

challenge_required est la version « au niveau du compte » de la même objection : Instagram estime que la session a l'air automatisée. L'issue #1638 documente le fait que l'outil le déclenche fréquemment, avec pour conséquences signalées des blocages temporaires ou la perte définitive du compte utilisé. La FAQ du README vous dit d'ouvrir le lien du challenge et de le valider, ce qui marche jusqu'au jour où cela ne marche plus.

Si vous utilisez l'ancien chemin, faites-le avec un compte jetable

Utilisez un compte que vous pouvez vous permettre de perdre, jamais un compte lié à une identité réelle ou à une mission client. Le second avertissement du README est tout aussi important : config/credentials.ini contient un mot de passe en clair, donc si vous forkez le dépôt, ne le committez pas. Le chemin HikerAPI évite toute cette catégorie de risques. Aucun compte à vous n'est connecté, il n'y a donc aucun compte à vous à bloquer.

Ce qui fonctionne encore, et par quoi le remplacer

Il existe quatre façons d'exécuter réellement cet outil, plus une façon de s'en passer. Leur statut en 2026 n'est pas le même.

VoieFonctionne en 2026 ?NécessiteCoût
Nom d'utilisateur + mot de passe (par défaut)En pratique non : échec dès la ligne de connexionUn compte Instagram jetableGratuit, plus le risque sur le compte
Token HikerAPILa voie encore prévue pour fonctionnerUn token ; aucun compte Instagram100 requêtes gratuites, puis payant
Image DockerLes deux mêmes voies, en conteneurDes identifiants figés dans l'image au buildGratuit
Branche v2Non, elle n'a pas de backend HikerAPILa même connexion morteGratuit
Recherche hébergéeOuiUn compte connecté et un nom d'utilisateur publicDes crédits par recherche
Les cinq voies, et le fait que le problème de connexion s'applique ou non à chacune.

Deux notes de bas de tableau. La voie Docker n'est pas le gain d'isolation qu'elle paraît : le Dockerfile exécute COPY config/ /home/osintgram/config, donc tout ce qui se trouve dans credentials.ini au moment du build est figé dans l'image, une image que vous ne devez donc jamais pousser où que ce soit. Quant à la branche bêta v2, que quelques guides recommandent encore, elle est entièrement antérieure au travail sur HikerAPI : son requirements.txt abandonne hikerapi et fige requests==2.24.0, si bien qu'elle n'offre que le chemin qui ne fonctionne plus.

Même sur un backend qui s'authentifie, « ça marche » se juge commande par commande. Sur l'ancien chemin, photodes appelle l'endpoint https://www.instagram.com/<target>/?__a=1, retiré depuis longtemps, et ne fait rien sur celui de HikerAPI. addrs répond généralement Sorry! No results found :-( parce que les publications géolocalisées sont devenues rares. C'est une requête réussie qui ne renvoie rien, pas un échec. La référence complète des commandes indique lesquelles sont dans quel cas. Et face à un compte privé que votre session connectée ne suit pas, 19 des 21 commandes de données refusent purement et simplement : par conception, seules info et propic ne sont pas verrouillées, ce qui résume en une phrase la question des comptes privés.

Si ce dont vous avez réellement besoin est un rapport sur un profil public plutôt qu'un projet Python à maintenir, une recherche hébergée supprime le composant défaillant : vous ne vous connectez jamais à Instagram, donc checkpoint_required ne peut pas vous arriver, et il n'y a ni venv, ni credentials.ini, ni compte jetable à perdre. Ce n'est pas dire que la CLI est mauvaise ; ce sont les mêmes données publiques, obtenues sans la partie qui a cassé.

Le verdict 2026

Osintgram n'est pas mort, et il ne se porte pas bien pour autant. L'installation par défaut, celle que décrivent tous les tutoriels de 2020 à 2025, est morte en pratique : la bibliothèque qui la porte n'est plus mise à jour depuis mai 2024, l'endpoint dont elle dépend a disparu, et Instagram répond désormais à sa poignée de main de connexion par checkpoint_required et une URL unsupported_version. Aucune modification de configuration sur votre machine n'y changera quoi que ce soit.

Le backend HikerAPI est une voie réelle, actuelle et documentée, qui supprime le problème de connexion en supprimant la connexion. Il devient payant au-delà de 100 requêtes, il fait transiter vos cibles par un tiers, et il traîne son propre bug ouvert sur les formats de réponse. Si vous voulez la CLI en particulier (pour scripter, pour la reproductibilité, pour un dossier de sortie hors ligne), c'est la version à installer, et le guide d'installation la couvre. Si vous vouliez seulement les données, la CLI n'a jamais été le sujet.

Questions fréquentes

Osintgram est un outil OSINT indépendant, sans aucune affiliation avec Instagram ni Meta. Ces guides décrivent uniquement des logiciels open source publiquement documentés et de la recherche en sources ouvertes. Utilisez ces techniques dans le respect de la loi, sur des cibles que vous êtes autorisé à investiguer, et jamais pour harceler ou surveiller des particuliers.