Skip to content
⚡ Test and graph your internet bandwidth over time
Python HTML JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
client
server
.gitignore
LICENSE Initial commit Aug 15, 2019
README.md Make README more beginner friendly Jan 8, 2020
graphexample.png Update example image Aug 19, 2019

README.md

⚡ Bandwidth Checker ⚡

My blog post: I Built a Bot to Try and Get Money Back From My Internet Provider


preview image

 

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.

 

Install

Client

cd client

pip install requests

and one of the following

Speedtest CLI:

pip install speedtest-cli

Headless browser:

pip install selenium

Server

cd server

npm install

 

Run

Client

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.

Server

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

 

Contributing

Feel free to raise any issues and submit any reasonable pull requests.

 

License

MIT (see LICENSE.md).

You can’t perform that action at this time.