Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
SwiftyInsta — Instagram API privée Swift | Kitploit
Outils/GitHubGitHub/them4hd1/swiftyinsta
OSINT (Renseignement de Sources Ouvertes)Scripting et AutomatisationCollecte d'InformationsIngénierie Sociale
GitHubthem4hd1/swiftyinsta

SwiftyInsta

Instagram API privée Swift

Voir le dépôt
230497il y a 4 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

SwiftyInsta (héritage)

Veuillez noter que SwiftyInsta n'est plus activement maintenu.
Reportez-vous à #244 pour plus d'informations.
Consultez Swiftagram si vous recherchez des alternatives à jour.


CI Status Version License Platform

Instagram propose deux types d'API aux développeurs. L'API Platform Instagram (extrêmement limitée en fonctionnalités et sur le point d'être abandonnée), et l'API Graph Instagram réservée aux comptes Business et Creator.

Cependant, les applications Instagram reposent sur un troisième type d'API, appelée API privée ou API non officielle, et SwiftyInsta est un client iOS, macOS, tvOS et watchOS pour celles-ci, entièrement écrit en Swift. Vous pouvez essayer de créer une meilleure expérience Instagram pour vos utilisateurs, ou écrire des bots pour automatiser différentes tâches.

Ces API privées ne nécessitent ni token ni enregistrement d'application mais elles ne sont pas autorisées par Instagram pour une utilisation externe. Utilisez-le à vos risques et périls.

Installation

Swift Package Manager (Xcode 11 et ultérieur)

  1. Sélectionnez File/Swift Packages/Add Package Dependency… dans le menu.
  2. Collez https://github.com/TheM4hd1/SwiftyInsta.git.
  3. Suivez les étapes.

CocoaPods

CocoaPods est un gestionnaire de dépendances pour les projets Cocoa. Vous pouvez l'installer avec la commande suivante :

root@kitploit:~
$ gem install cocoapods

Pour intégrer SwiftyInsta dans votre projet Xcode avec CocoaPods, spécifiez-le dans votre Podfile :

root@kitploit:~
use_frameworks!

target '<Your Target Name>' do
    pod 'SwiftyInsta', '~> 2.0'
end

Ensuite, exécutez la commande suivante :

root@kitploit:~
$ pod install

SwiftyInsta dépend de CryptoSwift et de keychain-swift.

Connexion

Credentials

root@kitploit:~
// celles-ci doivent être des références fortes.
self.credentials = Credentials(username: /* username */, password: /* password */, verifyBy: .text)
self.handler = APIHandler()
handler.authenticate(with: .user(credentials)) {
    switch $0 {
    case .success(let response, _):
        print("Login successful.")
        // persistez le cache en toute sécurité dans le trousseau pour vous reconnecter plus tard.
        guard let key = response.persist() else { return print("`Authentication.Response` could not be persisted.") }
        // stockez la `key` où vous voulez, afin de pouvoir accéder à `Authentication.Response` plus tard.
        // `UserDefaults` n'est qu'un exemple.
        UserDefaults.standard.set(key, forKey: "current.account")
        UserDefaults.standard.synchronize()
    case .failure(let error):
        if error.requiresInstagramCode {
            /* mettez à jour l'interface pour demander le code */
        } else {
            /* notifiez l'utilisateur */
        }
    }
}

Une fois que l'utilisateur a saisi le code d'authentification à deux facteurs ou le code de défi, il vous suffit de faire

root@kitploit:~
self.credentials.code = /* the code */

Et le completionHandler dans le précédent authenticate(with: completionHandler:) attrapera automatiquement la réponse.

LoginWebViewController

root@kitploit:~
let login = LoginWebViewController { controller, result in
    controller.dismiss(animated: true, completion: nil)
    // gérez la réponse d'authentification.
    guard let (response, _) = try? result.get() else { return print("Login failed.") }
    print("Login successful.")
    // persistez le cache en toute sécurité dans le trousseau pour vous reconnecter plus tard.
    guard let key = response.persist() else { return print("`Authentication.Response` could not be persisted.") }
    // stockez la `key` où vous voulez, afin de pouvoir accéder à `Authentication.Response` plus tard.
    // `UserDefaults` n'est qu'un exemple.
    UserDefaults.standard.set(key, forKey: "current.account")
    UserDefaults.standard.synchronize()
}
if #available(iOS 13, *) {
    present(login, animated: true, completion: nil) // faites simplement glisser vers le bas pour fermer.
} else {
    present(UINavigationController(rootViewController: login),  // ajoute déjà un bouton `Cancel` pour le fermer.
            animated: true,
            completion: nil)
}

Ou implémentez votre propre UIViewController personnalisé en utilisant LoginWebView, et passez-le à une méthode authenticate de APIHandler en utilisant .webView(/* your login web view */).

Authentication.Response

Si vous avez déjà persisté la Authentication.Response d'un utilisateur :

root@kitploit:~
// récupérez la `key` renvoyée par `Authentication.Response.persist()`.
// dans notre exemple, nous l'avons stockée dans `UserDefaults`.
guard let key = UserDefaults.standard.string(forKey: "current.account") else { return print("`key` not found.") }
// récupérez la `Authentication.Response` persistée en toute sécurité.
guard let cache = Authentication.Response.persisted(with: key) else { return print("`Authentication.Response` not found.") }
// connectez-vous.
let handler = APIHandler()
handler.authenticate(with: .cache(cache)) { _ in
    /* faites quelque chose ici */
}

Utilisation

Tous les endpoints sont facilement accessibles depuis votre instance APIHandler.

root@kitploit:~
let handler: APIHandler = /* un handler valide et authentifié */
// par exemple, vous pouvez…
// …récupérer votre boîte de réception.
handler.messages.inbox(with: .init(maxPagesToLoad: .max),
                       updateHandler: nil,
                       completionHandler: { _, _ in /* faire quelque chose */ })
// …récupérer tous vos abonnés.
handler.users.following(user: .me,
                        with: .init(maxPagesToLoad: .max),
                        updateHandler: nil,
                        completionHandler: { _, _ in /* faire quelque chose */ })

De plus, les réponses affichent désormais chaque valeur contenue dans le fichier JSON renvoyé par l'API : accédez simplement à la rawResponse de n'importe quel ParsedResponse et commencez à naviguer, ou restez avec les accessoires suggérés (par exemple, username, name de User, etc. et aspectRatio, takenAt, content de Media, etc.).

Contributions

Les pull requests et les issues sont les bienvenues.

Auteurs

  • Mahdi Makhdumi (@TheM4hd1), 1.* mainteneur
  • Stefano Bertagno (@sbertix), 2.* mainteneur

Nous cherchons activement des mainteneurs.
Reportez-vous à #244 pour plus d'informations.

Licence

SwiftyInsta est sous licence MIT. Voir LICENSE pour plus d'informations.

Télécharger l’outil