My blog post: I Built a Bot to Try and Get Money Back From My Internet Provider
Some ISPs promise money back if your bandwidth goes below a certain level.
This project includes two automated methods of testing download speed.
- Speedtest's CLI.
- Headless Chromium browser via Netflix's fast.com.
A Node server displays a scatter graph of the recent bandwidth results via Chart.js.
I run my own setup on a Raspberry Pi connected to my router via ethernet.
cd client
pip install requests
and one of the following
Speedtest CLI:
pip install speedtest-cli
Headless browser:
pip install selenium
cd server
npm install
Setup a cron job to run either version.
Speedtest CLI:
cd client
python clitest.py 'https://server-location/save' 'password'
Where the arguments are:
- Path to the endpoint to save the results.
- Password for that endpoint.
Headless browser:
python browsertest.py '/usr/lib/chromium-browser/chromedriver' 'https://server-location/save' 'password'
Where the arguments are:
- Path to the ChromeDriver executable (watch out for version clashes).
- Path to the endpoint to save the results.
- Password for that endpoint.
Setup password, and port (default: 3000):
Unix Bash (Linux, Mac, etc.):
$ export SECRET=hello
$ export PORT=3000
Windows CMD:
> set SECRET=hello
> set PORT=3000
Windows PowerShell:
> $env:SECRET = "hello"
> $env:PORT = "3000"
cd server
npm start
Visit the root path /
to view bandwidth results.
Bandwidth results are stored by the client via /save
Feel free to raise any issues and submit any reasonable pull requests.
MIT (see LICENSE.md).