Skip to main content

A CLI tool to temporarily block websites by modifying the hosts file

Project description

StopWeb

Block websites permanently to help you stay focused. Works by editing your system's hosts file. You can also set a temporary duration if needed.

I built this because I kept getting distracted by social media and news sites when trying to work. Simple solution: block them until you decide to unblock.

What it does

  • Blocks websites until you manually unblock them
  • Works on Mac, Linux, and Windows
  • Lets you see what's currently blocked
  • Can unblock sites early if needed

Install

pip install stopweb

Basic usage

Block Facebook permanently:

sudo stopweb facebook.com

Block multiple sites at once:

sudo stopweb facebook.com youtube.com reddit.com

See what's blocked:

sudo stopweb --list

Unblock a site:

sudo stopweb --remove facebook.com

Remove all blocks:

sudo stopweb --clear

Temporarily block a site (expires automatically):

sudo stopweb -d 2h twitter.com      # 2 hours
sudo stopweb --duration 1d reddit.com  # 1 day

How it works

StopWeb edits your hosts file to redirect blocked sites to localhost (127.0.0.1).

On Mac/Linux that's /etc/hosts, on Windows it's C:\Windows\System32\drivers\etc\hosts.

It adds lines like:

127.0.0.1    facebook.com    # StopWeb:
# For temporary blocks, an expiry is recorded, e.g.
127.0.0.1    twitter.com     # StopWeb: expires=2025-01-01T12:00:00

Blocked sites stay blocked until you run the remove or clear command.

Notes

  • Requires sudo/admin privileges (needs to edit system files)
  • You might need to clear your browser cache after blocking/unblocking
  • Creates a backup of your hosts file before making changes
  • If something goes wrong, your original hosts file is saved as hosts.stopweb_backup
  • Temporary blocks are removed automatically by running stopweb --cleanup

Notifications (manual edits)

StopWeb can alert you if someone edits your hosts file and removes or changes StopWeb entries by hand. It does not notify on additions.

  • Default recipient: linj1@tcd.ie
  • Snapshot is checked whenever you run a StopWeb command; if differences are found since the last run, an email is sent (or a file is saved in ~/.config/stopweb/outbox/ if SMTP isn't configured).
  • To configure SMTP, edit ~/.config/stopweb/stopweb.json and set settings.notifications.smtp fields.

What triggers a notification:

  • StopWeb line removed from hosts (e.g., someone deleted # StopWeb: lines)
  • StopWeb line modified (e.g., IP or expires metadata changed)

What does not trigger a notification:

  • Adding new StopWeb entries
  • Normal StopWeb commands you run yourself (block/remove/clear/cleanup)

Audit and Watch

Single-run audit:

sudo stopweb --audit

Continuous watch (poll every 15 seconds):

sudo stopweb --watch --interval 15

Email Notifications Setup

Configure email notifications interactively:

sudo stopweb --config-email

This will prompt you for:

  • Email recipients (comma-separated for multiple)
  • SMTP settings (host, port, username, password)
  • Option to send a test email

Example configuration for Gmail:

Auto-Start Monitoring Service

Install background monitoring service that starts on boot:

sudo stopweb --install-service

This creates a system service (launchd on macOS, Task Scheduler on Windows, systemd on Linux) that:

  • Runs stopweb --watch automatically on system startup
  • Monitors hosts file every 30 seconds (configurable)
  • Sends email notifications when manual changes detected

Uninstall the service:

sudo stopweb --uninstall-service

Manual Testing

Tip: for testing without touching your real hosts file, set an override:

export STOPWEB_HOSTS_PATH="/tmp/stopweb-hosts"

Then put some lines into that file and run stopweb --audit or --watch.

Why not just use browser extensions?

Browser extensions can be easily disabled when you're feeling weak. Editing the hosts file is more permanent - you'd have to remember the exact command to undo it.

Plus this works system-wide, not just in your browser.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

stopweb-0.1.4.tar.gz (18.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

stopweb-0.1.4-py3-none-any.whl (19.3 kB view details)

Uploaded Python 3

File details

Details for the file stopweb-0.1.4.tar.gz.

File metadata

  • Download URL: stopweb-0.1.4.tar.gz
  • Upload date:
  • Size: 18.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for stopweb-0.1.4.tar.gz
Algorithm Hash digest
SHA256 a1805d35f7ec6c40b5b4f0299cf87ecb232fd0c7c4593782c6bc5019dd86f689
MD5 ff040ce75e8a6bf2165947308879b254
BLAKE2b-256 e274a4310dc890273501b4393bc29eb4b1e6c0a245ed2f347911a7fda9e514dc

See more details on using hashes here.

File details

Details for the file stopweb-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: stopweb-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 19.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.0

File hashes

Hashes for stopweb-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 33a98e7b698ba85bc32277e97bf29c7b2d22237b578aa40a1a67cbeb5e314430
MD5 f242510a94be9401a6df32dc7cf1ae0d
BLAKE2b-256 3e769dbf1d09448c19f95642b144e1fb704577437e3f77af4931b7d465c93c52

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page