mardausdennis 77d9ec2a0f fill the search quota by measuring instead of assuming a rate
searches_needed was computed once as (max - earned) // 5 and never re-checked. Two assumptions fail in practice: some markets award 3 points per search rather than 5, and the daily maximum itself is not stable, observed as 15, 30 and 60 on one account within a day with the counter resetting. The run therefore stopped around 18/30 and still reported success.

Search in rounds instead: measure, run a batch sized on the lower known rate, measure again, stop when the quota is full or a round gains nothing, and warn instead of claiming success when it is not filled.

Also give the ollama client a timeout and bound the empty-response retry, since both were unbounded and an unattended run hung for 14 minutes with 2.3 CPU-seconds. The bare while-not-response loop spins forever on empty responses.
2026-08-25 22:28:14 +02:00
2026-08-19 14:03:22 -04:00
2026-08-24 13:57:38 -04:00
2026-08-22 09:26:17 -04:00
2026-08-24 13:57:38 -04:00
2026-08-19 14:03:22 -04:00
2026-08-19 14:03:22 -04:00

User0332/rewards-farmer

Automation for MS Rewards based on https://youtu.be/4qdPcMNaioA.

Running Instructions

IMPORTANT: Use at your own risk. Microsoft may take action against your account for using automated scripts to gain rewards points. The YouTube video contains more details about the techniques implemented to avoid detection of this script.

Clone the repository.

git clone https://github.com/User0332/rewards-farmer

A sample nouns.txt file is included in the project root and can be modified by the user to contain seed words for the LLM to complete 20 searches. The wordlist should be separated by newline.

cd rewards-farmer
# Edit the included nouns.txt file to add or replace words as needed

You should also have an Ollama account created (for the LLM), the ollama tool installed, and you should have signed in to the Ollama CLI via the command line using ollama signin. This project will use a minimal amount of Ollama cloud usage using gemma4:cloud. If you wish to use a different model, please change the model parameter in the get_ollama_response function in src/llm_utils.py.

You must also provide an image for the script to upload to complete the visual search task. Currently, this image is named keypress_times.png and is located in the root directory of the project (yes, I used a random image from my keyboard analysis to do this). You may provide an image of your own, just ensure that the absolute path of the image is placed in the VISUAL_SEARCH_IMAGE_PATH constant at the top of rewards_tasks.py.

Activate the virtual environment & install dependencies (you may have to use python -m poetry instead of poetry). You must have Python 3.14+ and Poetry installed.

Windows (PowerShell)

poetry install
iex (poetry env activate)

*nix (Bash)

poetry install
eval $(poetry env activate)

You must also have a webdriver for Microsoft Edge installed. If you already have the Edge Browser installed, you probably have this component as well.

The profile directory in src/constants.py is set to Default. If this signs you in to a global profile that you do not want to use for automation, then you can create a new profile from within the webdriver instance manually and then change the PROFILE_NAME constant to Profile 1 (or the equivalent number).

Run main.py (python src/main.py, it must be run from the root directory so the relative paths work out), wait for the page to launch, and then CTRL-C to quit the application immediately. Sign in to the created profile with your Microsoft account on both Bing and rewards.bing.com.

Close all webdriver browser instances. Run main.py again; the automation should start working.

Please open up a GitHub issue if you run into any difficulties.

S
Description
No description provided
Readme MIT
1.5 MiB
Languages
Python 98.7%
Dockerfile 1.3%