URL-Wall — Interceptive Browser for macOS
Add a confirmation step when you click an http, https, or ftp URL outside your browser to ensure you reach the domain you expect.
Known domains go directly. Unknown domains show a warning page where you can acknowledge and proceed.
Installation
# Build the .app bundle
python -m urlwall --install ~/Applications/URL-Wall.app
# Set as macOS default browser
python -m urlwall --use-as-default
# Then run: killall Finder
CLI Usage
# Open a URL through the gate
python -m urlwall https://example.com
# Add a domain to the allow list
python -m urlwall --allow-host-add example.com
# Add with subdomain support
python -m urlwall --allow-host-add example.com --also-subdomains
# Remove from allow list
python -m urlwall --allow-host-remove example.com
# Set the browser used after URL-Wall
python -m urlwall --set-browser "Google Chrome.app"
# Set URL-Wall as macOS default browser
python -m urlwall --use-as-default
# View current config
python -m urlwall
How It Works
- The
installcommand compiles an AppleScript handler into a.appbundle - The
.appis patched with URL scheme handlers (http, https, ftp) - When macOS routes a URL to URL-Wall, the AppleScript calls
python -m urlwall <url> - The Python handler checks if the domain is allowed — if so, opens it directly
- If not, shows a warning page with the full redirect chain and a "Proceed" button
Configuration
Config is stored in ~/.urlwall/setup.plist:
defaultBrowser— app name (e.g.,Safari.app)hostsAllowed— domains that open directlyhostWithSubdomainsAllowed— domains + all subdomains
Metadata
Release files for urlwall 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| urlwall-0.1.2.tar.gz | 362.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| urlwall-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 723.5 kB
Release files / urlwall-0.1.2.tar.gz
| Download URL | urlwall-0.1.2.tar.gz |
|---|---|
| Size | 362.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
80ce186bba563cad8178e858be08182261dd8921be38817f4451bbf462093697
|
|
BLAKE2b-256 checksum How to use checksums |
ed594786f207231f0814f6dde8d8c6f23a227db5dab7236e5ac17baee42d322c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency logRelease files / urlwall-0.1.2-py3-none-any.whl
| Download URL | urlwall-0.1.2-py3-none-any.whl |
|---|---|
| Size | 360.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4d2c53caf0e60aa3794d414a88e90404a3f061cfd8de840bc17ebf22922098b0
|
|
BLAKE2b-256 checksum How to use checksums |
404e333c263893c31850104fb288f76ae6a0280162f51f7d457775b3da7073cb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 17, 2026.
Transparency log