███╗ ███╗███████╗ ███████╗ █████╗ ██████╗ ███╗ ███╗███████╗██████╗
████╗ ████║██╔════╝ ██╔════╝██╔══██╗██╔══██╗████╗ ████║██╔════╝██╔══██╗
██╔████╔██║███████╗ █████╗ ███████║██████╔╝██╔████╔██║█████╗ ██████╔╝
██║╚██╔╝██║╚════██║ ██╔══╝ ██╔══██║██╔══██╗██║╚██╔╝██║██╔══╝ ██╔══██╗
██║ ╚═╝ ██║███████║ ██║ ██║ ██║██║ ██║██║ ╚═╝ ██║███████╗██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝
built by @charlesbel upgraded by @farshadz1997 version 2.0
You can also find this repository on Gitlab. You can use the simple installation guide here.
For setting up the bot in termux ( android ), follow here
- Install requirements with the following command :
pip install -r requirements.txt
- Make sure you have Chrome installed (unless your using --edge)
- Edit the accounts.json.sample with your accounts credentials and rename it by removing
.sampleat the end.
If you want to add more than one account, the syntax is the following (mobile_user_agent,proxyandgoalare optional). Removemobile_user_agent,proxyorgoalfrom your account if you don't know how to use them:[ { "username": "Your Email", "password": "Your Password", "totpSecret": "Your TOTP Secret (optional)", "pc_user_agent": "your preferred PC user agent", "mobile_user_agent": "your preferred mobile user agent", "proxy": "HTTP proxy (IP:PORT)", "proxy_auth": "username:password", "goal": "Amazon" }, { "username": "Your Email 2", "password": "Your Password 2", "totpSecret": "Your TOTP Secret (optional)", "pc_user_agent": "your preferred PC user agent", "mobile_user_agent": "your preferred mobile user agent", "proxy": "HTTP proxy (IP:PORT)", "proxy_auth": "username:password", "goal": "Xbox Game Pass Ultimate" } ] - Due to the limits of Ipapi, it may return an error and cause the bot to stop. You can define the default language and location to prevent it from crashing here.
- Run the script
- Use optional arguments
--headlessYou can use this argument to run the script in headless mode (BAN RISK).--no-imagesPrevent images from loading to increase performance and decrease bandwidth.--dont-check-for-updatesPrevents script from checking updates.--shuffleRandomize the order in which accounts are farmed.--redeemEnable auto-redeem rewards based on accounts.json goals.--calculatorOpens GUI calculator with custom options. When using this flag the script will not run.--sessionUse this argument to create session for each account.--start-at TIMEThis argument takes time in 24h format (HH:MM) to run it at the given time.--everydayThis argument makes the script stay open and start again next day at the time you ran it.--fastThis argument reduces delays of the script and makes it faster (use this if you have high speed connection).--superfastThis argument is faster than --fast (use this if you have a very high speed and reliable connection).--account-browser ACCOUNTThis argument opens session for given account if it's already exist else returns error.--errorWhen you use this argument, bot displays crash errors in terminal when it fails.--telegram TOKEN CHAT_IDSends logs to your telegram through your bot. The bot and TOKEN can be created using this official bot. CHAT_ID can be retrieved via this bot and using the/getidcommand.--discord WEBHOOK_URLUse this argument to send logs to your Discord server through a webhook.--skip-unusualClick on skip for 5 days on unusual activity detection.--browser BROWSER_NAMESelect browser to use for farming from this list ["chrome", "edge", "uc"], UC is undetected chrome and may not work well or doesn't work at all on your device.--skip-shoppingSkips MSN shopping game.--repeat-shoppingRepeat MSN shopping game. (So it runs twice per account consecutively)--no-webdriver-managerUse system installed webdriver instead of webdriver-manager (Needed for ARM devices).--virtual-displayUse PyVirtualDisplay (intended for Raspberry Pi users).--on-finish ACTIONAction to perform on finish from one of the following: shutdown, sleep, hibernate, exit.--currency CURRENCYConverts your points into your preferred currency. Available currencies: EUR, USD, AUD, INR, GBP, CAD, JPY, CHF, NZD, ZAR, BRL, CNY, HKD, SGD, THB--skip-if-proxy-deadskips farming a particular account whose supplied proxy is no longer active.--recheck-proxyrechecks proxy in case they are reported dead.--dont-check-internetBot won't look for internet connection if you use this argument.--print-to-webhookBot will send all the message printed to cli to the webhhok. (discord or telegram argument is required).--accounts-file ACCOUNTS_FILEspecify a different account.json file path rather than the default.- For example type in your terminal
python ms_rewards_farmer.py --start-at 14:30 --everyday --fast --sessionYou don't need to use all of arguments. - Session and headless are disabled by default.
- Bing searches (Desktop, Mobile and Edge) with User-Agents
- Automatically completes the daily set
- Automatically completes punch cards
- Automatically completes other promotions
- Completes MSN shopping game quiz
- Headless Mode
- Multi-Account Management
- Restarts account when faced with an error
- Save progress of bot in a log file to detect farmed status if run again
- Detect suspended accounts
- Detect locked accounts
- Detect unusual activities
- Uses time outs to prevent infinite loops
- You can assign custom user-agents for mobile like the example above
- Set to run at a specific time
- Uses random words for bind searches and uses bing trends if the api fails
- Support HTTP proxies
- Auto-redeem rewards
- Rewards Calculator
This feature is still in beta! Feel free to try it and report any problems you find. Bear in mind that this feature was designed so it would only redeem one card from one account each time you run the farmer. This is intentional so your accounts are less likely to get banned. If you do not specify any goal in accounts.json, it will default to Amazon Gift Cards
I and contributors do not endorse breaking Microsoft’s ToS. This is a proof of concept and purely for educational purposes to learn about Python and Selenium. The contributors and I have learned a lot about Python, Selenium, how to collaborate as a team of people remotely, and even using Github. Please take a look at Microsoft ToS.
Your support will be very appreciated.
- BTC (BTC network): bc1qn52jx934nd54vhcv6x5xxsrc7z2qvwf6atcut3
- ETH (ERC20): 0x2486D75EC2675833569b85d77b01C2c37097ECc2
- LTC: ltc1qc03mnemxewn6z0chfc20yw4samucg6kczmwuf8
- USDT (ERC20): 0x2486D75EC2675833569b85d77b01C2c37097ECc2

