Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
instagram-private-api
Advanced tools
A Python wrapper for the Instagram private API with no 3rd party dependencies. Supports both the app and web APIs.
I wrote this to access Instagram's API when they clamped down on developer access. Because this is meant to achieve parity with the official public API, methods not available in the public API will generally have lower priority.
Problems? Please check the docs before submitting an issue.
An extension module is available to help with common tasks like pagination, posting photos or videos.
Documentation is available at https://instagram-private-api.readthedocs.io/en/latest/
Install with pip:
pip install git+https://git@github.com/ping/instagram_private_api.git@1.6.0
To update:
pip install git+https://git@github.com/ping/instagram_private_api.git@1.6.0 --upgrade
To update with latest repo code:
pip install git+https://git@github.com/ping/instagram_private_api.git --upgrade --force-reinstall
Tested on Python 2.7 and 3.5.
The app API client emulates the official app and has a larger set of functions. The web API client has a smaller set but can be used without logging in.
Your choice will depend on your use case.
The examples/
and tests/
are a good source of detailed sample code on how to use the clients, including a simple way to save the auth cookie for reuse.
from instagram_private_api import Client, ClientCompatPatch
user_name = 'YOUR_LOGIN_USER_NAME'
password = 'YOUR_PASSWORD'
api = Client(user_name, password)
results = api.feed_timeline()
items = [item for item in results.get('feed_items', [])
if item.get('media_or_ad')]
for item in items:
# Manually patch the entity to match the public api as closely as possible, optional
# To automatically patch entities, initialise the Client with auto_patch=True
ClientCompatPatch.media(item['media_or_ad'])
print(item['media_or_ad']['code'])
from instagram_web_api import Client, ClientCompatPatch, ClientError, ClientLoginError
# Without any authentication
web_api = Client(auto_patch=True, drop_incompat_keys=False)
user_feed_info = web_api.user_feed('329452045', count=10)
for post in user_feed_info:
print('%s from %s' % (post['link'], post['user']['username']))
# Some endpoints, e.g. user_following are available only after authentication
authed_web_api = Client(
auto_patch=True, authenticate=True,
username='YOUR_USERNAME', password='YOUR_PASSWORD')
following = authed_web_api.user_following('123456')
for user in following:
print(user['username'])
# Note: You can and should cache the cookie even for non-authenticated sessions.
# This saves the overhead of a single http request when the Client is initialised.
You are advised to persist/cache the auth cookie details to avoid logging in every time you make an api call. Excessive logins is a surefire way to get your account flagged for removal. It's also advisable to cache the client details such as user agent, etc together with the auth details.
The saved auth cookie can be reused for up to 90 days.
Want to keep this project going? Please donate generously https://www.buymeacoffee.com/ping
Make sure to review the contributing documentation before submitting an issue report or pull request.
Disclaimer: This is not affliated, endorsed or certified by Instagram. This is an independent and unofficial API. Strictly not for spam. Use at your own risk.
FAQs
A client interface for the private Instagram API.
We found that instagram-private-api demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 2 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.