Skip to content

healeycodes/bandwidth-checker

master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 

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).