Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
SwiftyInsta — Instagram Приватный API Swift | Kitploit
Инструменты/GitHubGitHub/them4hd1/swiftyinsta
OSINT (Разведка открытых источников)Скриптинг и автоматизацияСбор информацииСоциальная инженерия
GitHubthem4hd1/swiftyinsta

SwiftyInsta

Instagram Приватный API Swift

Репозиторий
2304974 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

SwiftyInsta (legacy)

Обратите внимание: SwiftyInsta больше не поддерживается активно.
Подробнее см. в #244.
Если вы ищете актуальные альтернативы, обратите внимание на Swiftagram.


CI Status Version License Platform

Instagram предлагает разработчикам два вида API. Instagram API Platform (крайне ограничен по функциональности и скоро будет отключён) и Instagram Graph API только для бизнес- и создатель-аккаунтов.

Однако приложения Instagram используют третий тип API, так называемый Private API (неофициальный API), и SwiftyInsta — это iOS, macOS, tvOS и watchOS клиент для них, написанный полностью на Swift. Вы можете попытаться создать улучшенный опыт использования Instagram для ваших пользователей или написать ботов для автоматизации различных задач.

Эти Private API не требуют токена или регистрации приложения, но они не авторизованы Instagram для внешнего использования. Используйте на свой страх и риск.

Установка

Swift Package Manager (Xcode 11 и выше)

  1. В меню выберите File / Swift Packages / Add Package Dependency….
  2. Вставьте https://github.com/TheM4hd1/SwiftyInsta.git.
  3. Следуйте инструкциям.

CocoaPods

CocoaPods — менеджер зависимостей для проектов Cocoa. Установить его можно следующей командой:

root@kitploit:~
$ gem install cocoapods

Чтобы интегрировать SwiftyInsta в ваш Xcode-проект с помощью CocoaPods, укажите его в вашем Podfile:

root@kitploit:~
use_frameworks!

target '<Имя вашей цели>' do
    pod 'SwiftyInsta', '~> 2.0'
end

Затем выполните команду:

root@kitploit:~
$ pod install

SwiftyInsta зависит от CryptoSwift и keychain-swift.

Вход

Credentials

root@kitploit:~
// это должны быть сильные ссылки.
self.credentials = Credentials(username: /* имя пользователя */, password: /* пароль */, verifyBy: .text)
self.handler = APIHandler()
handler.authenticate(with: .user(credentials)) {
    switch $0 {
    case .success(let response, _):
        print("Вход выполнен успешно.")
        // безопасно сохраняем кэш в связку ключей для повторного входа в будущем.
        guard let key = response.persist() else { return print("`Authentication.Response` не удалось сохранить.") }
        // сохраните ключ в любом удобном месте, чтобы потом получить `Authentication.Response`.
        // `UserDefaults` — это всего лишь пример.
        UserDefaults.standard.set(key, forKey: "current.account")
        UserDefaults.standard.synchronize()
    case .failure(let error):
        if error.requiresInstagramCode {
            /* обновить интерфейс для запроса кода */
        } else {
            /* уведомить пользователя */
        }
    }
}

Как только пользователь введёт код двухфакторной аутентификации или код проверки, просто выполните

root@kitploit:~
self.credentials.code = /* код */

И completionHandler из предыдущего вызова authenticate(with: completionHandler:) автоматически обработает ответ.

LoginWebViewController

root@kitploit:~
let login = LoginWebViewController { controller, result in
    controller.dismiss(animated: true, completion: nil)
    // обработка ответа аутентификации.
    guard let (response, _) = try? result.get() else { return print("Вход не удался.") }
    print("Вход выполнен успешно.")
    // безопасно сохраняем кэш в связку ключей для повторного входа в будущем.
    guard let key = response.persist() else { return print("`Authentication.Response` не удалось сохранить.") }
    // сохраните ключ в любом удобном месте, чтобы потом получить `Authentication.Response`.
    // `UserDefaults` — это всего лишь пример.
    UserDefaults.standard.set(key, forKey: "current.account")
    UserDefaults.standard.synchronize()
}
if #available(iOS 13, *) {
    present(login, animated: true, completion: nil) // просто смахните вниз, чтобы закрыть.
} else {
    present(UINavigationController(rootViewController: login),  // уже добавляет кнопку «Отмена» для закрытия.
            animated: true,
            completion: nil)
}

Или реализуйте свой собственный UIViewController, используя LoginWebView, и передайте его в метод authenticate объекта APIHandler через .webView(/* ваш login web view */).

Authentication.Response

Если вы уже сохранили Authentication.Response пользователя:

root@kitploit:~
// получите `key`, возвращённый `Authentication.Response.persist()`.
// в нашем примере мы сохранили его в `UserDefaults`.
guard let key = UserDefaults.standard.string(forKey: "current.account") else { return print("`key` не найден.") }
// восстановите безопасно сохранённый `Authentication.Response`.
guard let cache = Authentication.Response.persisted(with: key) else { return print("`Authentication.Response` не найден.") }
// выполните вход.
let handler = APIHandler()
handler.authenticate(with: .cache(cache)) { _ in
    /* что-то делаем здесь */
}

Использование

Все конечные точки легко доступны через экземпляр APIHandler.

root@kitploit:~
let handler: APIHandler = /* валидный аутентифицированный обработчик */
// например, вы можете…
// …получить ваш inbox.
handler.messages.inbox(with: .init(maxPagesToLoad: .max),
                       updateHandler: nil,
                       completionHandler: { _, _ in /* что-то делаем */ })
// …получить всех ваших подписчиков.
handler.users.following(user: .me,
                        with: .init(maxPagesToLoad: .max),
                        updateHandler: nil,
                        completionHandler: { _, _ in /* что-то делаем */ })

Более того, ответы теперь отображают каждое значение, содержащееся в JSON-файле, возвращённом API: просто обратитесь к свойству rawResponse любого ParsedResponse и начинайте исследовать, или используйте предложенные вспомогательные свойства (например, User's username, name и т.д., а для Media — aspectRatio, takenAt, content и т.д.).

Вклад

Pull requests и issues приветствуются.

Авторы

  • Mahdi Makhdumi (@TheM4hd1), 1.* сопровождающий
  • Stefano Bertagno (@sbertix), 2.* сопровождающий

Мы активно ищем сопровождающих.
Подробнее см. в #244.

Лицензия

SwiftyInsta распространяется под лицензией MIT. Подробнее см. в LICENSE.

Скачать инструмент