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.jsonand setsettings.notifications.smtpfields.
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:
- SMTP host:
smtp.gmail.com - Port:
587 - Username: your Gmail address
- Password: Gmail app-specific password
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 --watchautomatically 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1805d35f7ec6c40b5b4f0299cf87ecb232fd0c7c4593782c6bc5019dd86f689
|
|
| MD5 |
ff040ce75e8a6bf2165947308879b254
|
|
| BLAKE2b-256 |
e274a4310dc890273501b4393bc29eb4b1e6c0a245ed2f347911a7fda9e514dc
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
33a98e7b698ba85bc32277e97bf29c7b2d22237b578aa40a1a67cbeb5e314430
|
|
| MD5 |
f242510a94be9401a6df32dc7cf1ae0d
|
|
| BLAKE2b-256 |
3e769dbf1d09448c19f95642b144e1fb704577437e3f77af4931b7d465c93c52
|