Changelogs » Insomniac

PyUp Safety actively tracks 295,363 Python packages for vulnerabilities and notifies you when to upgrade.



- Hid profiles fetching under a flag. Now you should add `--fetch-profiles-from-net` if you want to try fetching a profile from internet before actually entering a profile. This feature speeds up the bot, but some users considered it dangerous (I personally used it without any issue, so it's up to you to decide)
  - Added German docs ( Thanks to simonmannsfeld!
  - Fixed crash when scrolling profiles
  - Fixed scrolling through likers (thanks to simonmannsfeld again!)


- Updated to make it work with the database
  - Screen recording 📹 (in debug mode only). You can use it to catch bugs. Feel free to attach videos when creating issues! In order to use it you'll have to: 1) install additional packages `pip3 install -U "uiautomator2[image]" -i` 2) run the bot with the `--debug` flag.
  - Fixed not working "privacy_relation" filter
  - Fixed unfollowing


Official docs added 🥳 ! - take a look at: ``
  — Enhanced scrapping mechanism with graphql rate-limiting + sometimes scrape will be done without even step into a profile
  — Fixed search issue
  — Fixed session-params reset issue (so now you can stop a flow at the end of it)
  — When searching for hashtags & places, a random post will be selected instead of the first one
  — Added speedtest to every-session on flow instead of first-one only
  — Fixed session persisting when no user logged in (session didnt started successfully)
  — Fixed is-keyboard-open bug
  — Fixed remove-mass-follower little bug
  — Fixed printing when soft-ban detected on users-list-scrolling


💥 Huge News:
  1️⃣ **User Switching**. Configure multiple accounts, specify one of your accounts names and Insomniac will switch to it at start. [Read more in the blogpost
  2️⃣ **Sessions Flows**. Instruct the bot to do interaction, then unfollowing, then another interaction – in any sequence you like. It's simple and clear, [see for yourself in the post
  3️⃣ **Commenting**. You asked for it and finally it's done! Just provide a list of comments and specify how often you wanna comment, [detailed info in the blogpost](
  4️⃣ **More config examples!** We found that a lot of users have issues with configs, and since this is the key for simplicity & readiness-for-use, we have created a lot of configs examples for different usecases. Just check [config-examples]( and [config-examples-extra]( folders.
  5️⃣ **Specify a sort order of following-list when unfollowing**. `--following-sort-order` – sort the following-list when unfollowing users from the profile-following list. Can be one of values: `default / latest / earliest`. Default sorting is by `earliest`
  6️⃣ **Unfollow-Non-Followers cache**. When running unfollow with the `--unfollow-non-followers` parameter, Insomniac checks if the account is following us, and only if not it will be unfollowed.
  This follow-status check takes time, and if you are running this kind of unfollow every day, there is no point of checking the same profiles again and again.
  We've added a new mechanism that caches the follow status of a profile from the following list. You can handle the caching time using a new parameter called:
  `--recheck-follow-status-after 72` – set a time (in hours) to wait before re-check follow status of a profile, disabled by default (will check every time when needed). It can be a number (e.g. 48) or a range (e.g. 50-80)
  7️⃣ **Share scrappers' DB (patrons only)**. `--scrapping-main-db-directory-name` – when using this parameter the scrapper will use a database file that's located under the directory-name provided. Use this parameter if you have multiple scrappers, and you want them to be synchronized within the same database in order to not scrape the same account multiple times. By default using scrapper account-directory to store the scrapping history.
  8️⃣ **Scripts Hooks (patrons only)**. A lot of users are running their own automation and scripts around Insomniac. Now there's a built-in possibility to connect your own script, [read an explanation in the post](
  9️⃣ **Interact/Scrape by Location**. Now it's possible to interact not only by username/hashtag, but also by a location! [Welcome to the post](
  \ Like & Follow action order - instead of always liking and only then follow, Insomniac will randomly decide (50%) which action should be first, in order to add more randomness to the session.
  \ Follow-action time enhanced dramatically - from ~20 seconds to ~5 seconds for a single follow
  \ Unfollow from following list itself - instead of getting into a profile page to do an unfollow action, if a follow-status check is un-needed, Insomniac will decide randomly (50%) if the unfollow should be from the following-list itself or from inside the profile page.
  \ When interacting with targets, the interaction time & target name will be written into new files called interacted_targets.txt (can give you a sense of how many targets been interacted)
  \ There is an option to scrape into multiple targeted-profiles using the same `--scrape-for-account` parameter. Instead of providing just a string of your real-profile-name, provide a list of strings, and Insomniac will add the targets to all of the accounts in that list (a single account scraping using a string is still supported).
  Bugfixes and small enhancements:
  \ For scrapping – added short session-report during session when a new profile scrapped
  \ For unfollowing – added short session-report during session when a profile been unfollowed
  \ Searching users under account tab instead of top
  \ Unfollow-non-followers – support new instagram pop-up dialogs
  \ Sessions report – back to print all of the sessions
  \ Added the session username to a single-session report message
  \ Backward compatability to old "total_removed_mass_followers" on json migration
  \ Fixed bio-expand when there is a link in bio
  \ Fixed image-liking when image ratio is 1:2 or less




- Fixed targeted-session issue combined with already-filtered & blacklisted profile
  - Added the ability to scrape from one scrapper into multiple profiles-databases (parameter name `scrape_for_account` remains the same)


🚀 Here is what we've done to improve performance:
  1. Single database per account instead of multiple .json files. When you launch v3.5.0 it will copy all data to this database, so nothing will be lost. Main benefits are speed and robustness. Also it makes possible to "scrape" and interact with "targets" from two accounts simultaneously.
  2. Most of filters are executed before entering to a user's profile. It makes the whole process much faster and saves you from making too many profile views.
  3. When looking for shop-profiles the lookup is much quicker now.
  4. When looking for unfollow-option in somebody's profile the lookup is much quicker too.
  🐞 Stability fixes:
  1. Softban Indicator – a new core feature of Insomniac, will check from time to time if there is an empty profile or empty followers list. If there are too many of them, that's a good indication for a soft ban, and Insomniac will stop its session immediately (use `--dont-indicate-softban` to turn it off)
  2. "Action blocked" dialog detection was also improved and included into Softban Indicator.
  3. Before searching for main tab-bar, now makes sure that the keyboard is closed (if is opened – closing it).
  4. Bugfixes around hashtag-interaction.
  🤓 New features as promised:
  1. `--app-id` com.cloned.package – when using this parameter, you are able to use Insomniac on a cloned Instagram application. Just provide the new package name.
  2. `--wait-for-device` – when using that flag, Insomniac will wait for an ADB device to be available before continuing its session (instead of quit when there is no device available). If a device id is provided using `--device`, Insomniac will wait for that specific device id to be available before continuing.
  3. `--debug` – flag for extra-informative logs.
  4. All logs are now saved in .log files (even when not crashed).
  🏗 Some changes that we've made in existing features:
  1. `--unfollow 50` is now the only available unfollow command. You can add these flags to specify which users to unfollow: `--unfollow-followed-by-anyone` or `--unfollow-non-followers`. First one says to unfollow users who were followed both by the bot and not by the bot. Second one says to unfollow only profiles that are not following your profile.
  2. ` --total-successful-interactions-limit 70-80` – this limit allows you to specify the maximum amount of successful interactions during a session. This limit has been known in past as `--total-interactions-limit`.
  3. `--total-interactions-limit 200-250` – allows you to specify the maximum amount of any interaction (successful & unsuccessful) during a session.
  4. Targets are now marked as "interacted" once you interact with them, so you won't interact with the same target twice.




- Fixed max-following bug
  - Fixed wrong index in top-likers in case of Reels existing for a tag
  - Fixed speedtest dependency


New features
  **1. Interact instructions** – the new way to interact with users!
  Today we are announcing a new way to tell the bot with which users we want to interact with.
  Until today, the bot always interacted with profile followers & hashtags recent-likers.
  From today, we have _two more_ options of interaction with users: 1. interact with profile followings and 2. interact with hashtags top-likers.
  How should the interaction list be provided to the bot? As mentioned, 4 interaction instructions are supported:
  - `profile-followers`
  - `profile-following`
  - `hashtag-top-likers`
  - `hashtag-recent-likers`
  You can combine all of the above in the interact list, for example:
  `python --interact natgeo-followers natgeo-followings amazingtrips-top-likers amazingtrips-recent-likers`
  **2. `--likes-precentage 50`** – this new parameter lets you to set the percentage of like action, in order to add more randomness to the bot's activity (and not to like every picture it's opening).
  **3. `--reinteract-after 72`**. Today if the bot recognizes a profile that has already beed interacted by the bot, it won't interact with it second time. Using this parameter, you will allow the bot to interact with an already interacted profile after X hours (for example, `--reinteract-after 72` will allow the bot to reinteract with an already interacted profile after 3 days from the last interaction).
  **4. Internet Speed Check**. A lot of people are getting crashes due to low bandwidth of internet connection. From now on the bot will check your internet connection speed and calculate the needed amount of time to sleep between actions. You can skip this check by using `--no-speed-check`.
  New limits
  - `--max-following 500` – allowes you to specify the maximum amount of following you want to have while using the bot. When your following value will reach the limit value, the bot will stop following profile (will continue do other actions such as liking and watching stories).
  - `--session-length-in-mins-limit` – by using this limit you are able to stop the bot after X minutes, regardless of other session limits. This limit will add extra safity to your sessions :)
  New filters
  - `"skip_already_following_profiles": true` – will tell the bot to skip interaction with profiles that have already been followed (even if not followed by the bot).
  Enhancements & Changes:
  - Shop profiles are now supported
  - Files usage enhancements: multi-platform file path is supported now
  - Added app-version to the session-state for debugability
  - Added "total-successfull-interaction" number to session progress loggings
  - Changed `max-following` parameter name of "remove-mass-followres" action to be `mass-follower-min-following`
  - Interacting with self profile: fixed a crash
  - Fixed scrapping-limit bug (didn't work properly)


*New limit*
  total-get-profile-limit: Use that limit in order to be safer than ever while using insomniac! this limit will limit the amount of times that the bot is clicking on a profile name and getting into its profile page. This is the most common reason for a soft ban.
  *New filters:*
  * max_potency_ratio: skip accounts with ratio (followers/followings) higher than given value (decimal values can be used too)
  * blacklist_words: provide a list of words, skip accounts that contains one of the words in the list in the profile biography
  * mandatory_words: provide a list of words, skip accounts that doesn't have one of the words in the list in the profile biography
  * specific_alphabet: provide a list of alphabet types (i.e. ['LATIN', 'GREEK', 'ARABIC', 'HEBREW', ...]), skip accounts that contains text in their biography/username which different alphabet than the provided alphabet list
  * Accounts that getting filtered during the session will be appended to 'filtered_users.json' file.
  * On target-sessions, the 'targets.txt' file is reloading during the session runtime so you can scrape & target in the same time
  * Added filters caching mechanism in order to check the filters much quicker than before
  * From now on, interaction considered to be success-interaction event if not all likes-count been satisfied (as long as there is at least 1 like during interaction, it will be counted as success)
  * During unfollow session, handling the opoped-up unfollow-confirmation dialog
  * Opening Instagram app issue (from version 3.2.0) has been fixed
  * On hashtags-interaction, if there is no 'recent' tab, using popular instead (thanks to ClarityCoder PR)
  * Fixed stories-interaction logic with sessions-limits


- Profiles that were filtered once won't be opened anymore
  - Fixed bug with `--follow-percentage` not working in some conditions
  - Fixed getting Instagram app version when device id provided


• `--stories-count 3-6` – how many stories to watch. A user may have less stories, that won't be a problem
  • `--total-story-limit 100` – limit of story-watches per session
  • New filter parameter "`skip_profiles_without_stories`" – set to "`true`" to skip profiles that do not have stories
  Other fixes and improvements:
  • Added short report after each interaction (was lost during the work on `v3.2.0`)
  • Fixed not working `--follow-limit`
  • Fixed not working `--old` flag when specified in a configuration file
  • Saving crash data in zip folders when exceptions occur


First of all, we [published]( insomniac package code to GitHub. Now there's no difference between installing insomniac package and cloning Insomniac repo – it's absolutely the same code. We will write a short guide for contributors in a couple of days, because the code was changed _a lot_.
  **New Extra Features**
  • Scrapping: read the post about [what is scrapping and how to use it](
  • New filter parameters: "min-post" and "max-amount-of-digits-in-profilename", read the [updated filters post](
  • Working hours: read the post about how to [specify working hours]( for the script
  **New Free Features**
  • Configuration files: you can use them instead of command line arguments, [read more here](
  • Interact with targets: use `--interact-targets True` to read usernames from targets.txt file and interact with these users directly. It's used in [scrapping](, but you can find targets by other ways
  • Use `--interaction-users-amount 2` to pick 2 random users from interact list each time
  • Use `--total-follow-limit 100` to set limit of 100 follows for the entire session (`--follow-limit` is per interaction source)
  • Use `--total-interactions-limit 100` to set limit of 100 interactions for the entire session (`--interactions-count` is per interaction source)
  **Bugfixes & Improvements**
  • Fixed following/followers number parsing
  • Changed interaction counting algorithm: from now on, interaction counts if there was follow/like during the interaction
  • Added refresh when fetching "my profile" at the start of a session
  • Fixed files reading on Windows
  • `--follow-limit` was changed to a range instead of a constant number (for more random behavior)
  • `--total-likes-limit` was changed to a range instead of a constant number (for more random behavior)
  • `--total-follows-limit` was changed to a range instead of a constant number (for more random behavior)


It means that now you can install Insomniac via `python3 -m pip install insomniac`. And when a new update comes, you can just run `python3 -m pip install insomniac --upgrade`. README is updated with actual information:
  This version comes with a new feature – interaction with users who liked given hashtags.
  After installing **insomniac v3** you'll probably want to _activate_ it to enable all features. You can do it at


• Fix ignoring --follow-limit when following private/empty accounts
  • Fix crash when trying to follow a user who's already "Requested"












• Fix previous update (thanks Dennis for his PR)
  • Fix private / empty accounts validation (thanks Alex Owson for his PR)
  • Print Instagram version on start
  • Fix switching language
  • Do not clear logs after crash (full logs will be saved on each crash)




• Support ranges for --interactions-count, --likes-count, --unfollow, --unfollow-non-followers, --unfollow-any, --repeat (thanks to Philip Ulrich for his pull request!). This means that now you can specify a range instead of an exact value, e.g. --likes-count 2-4. Each time a random value from this range will be taken.
  • Shuffle list of bloggers after each finished session. This fixes an old problem that when script crashes, it starts all bloggers in the same order, so a blogger mentioned at the first place gets much more interactions than blogger mentioned at the last place.
  • Add current view hierarchy to the crash zip (thanks Arthur Silva for his pull request!). Now there's not only a screenshot and logs in each archive, but also view_hierarchy.xml file that contains programmatic description of what's there on the screen.


Merged 114 and fixed 113


• Make the script work correctly when there's Reels tab instead of the Search tab
  • Press "retry" button if it appears during scrolling
  • Fix unfollow action for "shop" accounts
  • Fix not reloading script when a crash happens in get_text() or get_bounds() methods


• Fix clicking wrong button in a "shop" account 104
  • Fix bug when switching to English locale




• Now when crash happens, the script both saves a screenshot and all logs in a txt file. They are put into a zip archive in the "crashes" folder. Now you can simply attach this archive to a bug report, no need to save logs manually.
  • Fixed wrong format of screenshots (png instead of jpg) 109
  • Merged philip-ulrich's PR that fixes bug with the "user not found error" for valid user 106


• Fix crash when trying to get your profile info
  • Fix crash in storage when username wasn't obtained 80
  • Add delays before updating interaction rect and before following a user