Bot for Instagram, in .Net Core, using Chrome and Selenium for actions.
Main functions :
- Follow&Like with Insta Photos Explore
 - Unfollow people not following you
 - Follow back people following you
 - Like on Insta home page
 - Can work with a remote Selenium grid and/or in docker
 - Colored console trace or VSO format for Azure DevOps execition
 - Support ApplicationInsights (allow easier tracking of multiple context execution)
 
Tags : Instagram, Chrome, Selenium, C#, .Net, Core, bot, robot
- Windows, Linux or Mac
 - .Net SDK 5.0 : https://dotnet.microsoft.com/download
 - Chrome (not Chromium), or a Selenium server with Chrome clients
 
- Selenium Chrome Driver must have the same version than your Chrome (change the lib version in the project if required)
 - Don't be evil, else Instagram will delete your spamming account
 - The solution is micro-service oriented, but Instagram will detected the spamming account if the bot is too fast
 - If you want to publish without remote Selenium, add _PUBLISH_CHROMEDRIVER in the DefineConstants of the .csproj
 - The account should follow at last one account, else the bot will fail to detect this
 - About "Unusual Login Attempt Detected" : If the bot connect from a location, OS, Browser that you never used before, you will get this email code chalenge. Pass it before lauching the bot again. You can change the OS/Browser (Chrome/Windows 10 by default) with the --user-agent in the SeleniumBrowserArguments setting.
 - Settings set by command line need to use : instead of __ depending on OS. Exemple : IFB_Logging:User
 
Download the sources and run donet sdk command in the folder of your Windows, Linux or Mac.
- Run with default (users settings have been set in the .json or the environnement variable) :
 
dotnet run
- On a daily base, unfollow users whose doesn't follow you :
 
dotnet run IFB_TaskManager__TaskList=DetectContactsUnfollowBack,DoContactsUnfollow IFB_Logging__User=you@dom.com IFB_LoggingSecret__Password=Passw0rd
- Build and Run default IFB_TaskManager__TaskList with Docker with a remote Selenium Hub (here another docker) : Exemple with Z:\InstagramFollowerBot as the source path, on a Windows system
 
docker build -f Z:\InstagramFollowerBot\Dockerfile -t instagramfollowerbot Z:\InstagramFollowerBot
docker run --name seleniumContainer --detach --publish 4444:4444 selenium/standalone-chrome --volume /dev/shm:/dev/shm
docker run --link seleniumContainer:seleniumhost instagramfollowerbot IFB_Logging__User=you@dom.com IFB_LoggingSecret__Password=Passw0rd IFB_Selenium__RemoteServer=http://seleniumhost:4444/wd/hub
- Build and Run default IFB_TaskManager__TaskList with Docker and an standalone Selenium
 
Exemple with IFB_Logging:User&IFB_Logging:Password provided in the InstagramFollowerBot.json or in the "environment:" of the docker-compose.yml
docker-compose up
- Main settings : Settings may be read in command line parameter, else in environnement variable, else in InstagramFollowerBot.json. Only IFB_Logging__User and IFB_LoggingSecret__Password won't have default working values from the initial configuration file. IFB_LoggingSecret__Password may be set to null in debug mode (the user will be able to insert the password himself)
 
| Parameter | Description | 
|---|---|
| IFB_Logger_UseApplicationInsights | Enable Microsoft Azure ApplicationInsights, you must define the environnement variable APPINSIGHTS_INSTRUMENTATIONKEY with your key | 
| IFB_Logger_UseAzureDevOpsFormating | Use a VSO log format instead of the default colored output, enable it if you run your bot through Azure DevOps pipeline | 
| IFB_LoggingSecret__Password | Password for auto-login, may be set to null if session file already created | 
| IFB_Logging__User | Email or UserName for login and filename for the session file | 
| IFB_Dumping__DumpBrowserContextOnCrash | In case of bot crash, generate a dump of the Chrome browser as .html for the html source and .png for the current view | 
| IFB_Persistence__SaveFolder | Where user informations (like cookie) are stored | 
| IFB_Persistence__UsePersistence | Will create a file for the user session and cookies | 
| IFB_Selenium__RemoteServer | Url of the Selenium Hub web service | 
| IFB_TaskManager__TaskList | Tasks to do, separatedd by a comma | 
- Takss : Task name is case insensitive A lot of settings in order to randomize or limit the batch, in the Bot.Json
 
| Name | Description | 
|---|---|
| CHECKACTIVITY | Open/Close the Activity popup | 
| DOEXPLOREPHOTOSFOLLOW | Follow only of the DOEXPLOREPHOTOSFOLLOWLIKE, follow between IFB_ExplorePhotos__FollowMin and IFB_ExplorePhotos__FollowMax post | 
| DOEXPLOREPHOTOSFOLLOWLIKE | Follow and Like of the DOEXPLOREPHOTOSFOLLOWLIKE | 
| DOEXPLOREPHOTOSLIKE | Like only of the DOEXPLOREPHOTOSFOLLOWLIKE, like between IFB_ExplorePhotos__LikeMin and IFB_ExplorePhotos__LikeMax post | 
| DOFOLLOWBACK | Follow back your follower that you are not already following | 
| DOHOMEPAGELIKE | Like post in the home screen, like between IFB_HomePage__LikeMin and IFB_HomePage__LikeMax post | 
| DOUNFOLLOWUNFOLLOWERS | Unfollow users not following you | 
| LOOP | Restart from first task (or BEGINLOOP if present), loop for IFB_TaskManager__LoopTaskLimit times | 
| SAVE | Save the user session file, including cookie, allowing session to be resumed next application launch | 
| WAIT | Pause the worker |