Cross platform python library to set system-wide proxy and bypass domains for proxy.
Project description
Uniproxy
Cross-platform python library to set system-wide proxy and proxy bypass domains.
[!IMPORTANT] Uniproxy doesn't provide a proxy server. It only sets the system-wide proxy settings.
Features
- Cross Platform: Uniproxy is cross-platform and can be used on Windows, macOS and Linux.
- System Wide Proxy: Uniproxy can be used to set system-wide proxy for the host.
- Bypassing Domains: Uniproxy can be used to set bypass domains which don't go through the system-wide proxy.
- Environment Variables: Uniproxy can also set environment variables for the proxy.
Installation
$ pip3 install uniproxy
Getting Started
Install the package as mentioned above and import it.
Proxy setup
import uniproxy
prox = uniproxy.Uniproxy(ip="127.0.0.1", port=8081) ## Create a uniproxy instance
prox.set_proxy() ## Set system-wide proxy without changing the current proxy enabled state for the OS
prox.set_proxy_enabled(True) ## Enable system-wide proxy
This will first edit the OS Settings to set the proxy and then enable the proxy.
import uniproxy
prox = uniproxy.Uniproxy(ip="127.0.0.1", port=8081) ## Create a uniproxy instance
prox.join() ## Change
As an alternative, you can also use the above method to set the proxy and enable it directly.
Bypass Domains
import uniproxy
prox = uniproxy.Uniproxy(ip="127.0.0.1", port=8081) ## Create a uniproxy instance
prox.set_bypass_domains(["www.google.com", "www.facebook.com"]) ## Set bypass domains
This will set the bypass domains for the proxy. The domains mentioned in the list will not pass through the proxy. Environment variables no_proxy and NO_PROXY will also be set.
Turn off Proxy
import uniproxy
prox = uniproxy.Uniproxy(ip="127.0.0.1", port=8081) ## Create a uniproxy instance
prox.set_proxy_enabled(False) ## Disable system-wide proxy
This will disable the system-wide proxy.
Delete Proxy
import uniproxy
prox = uniproxy.Uniproxy(ip="127.0.0.1", port=8081) ## Create a uniproxy instance
prox.delete_proxy() ## Delete the proxy settings
This will delete the proxy settings from the system and set them to OS defaults.
Get Proxy Details
import uniproxy
prox = uniproxy.Uniproxy(ip="127.0.0.1", port=8081) ## Create a uniproxy instance
prox.join()
print(prox.get_proxy()) ## Get the proxy details
This will output the following (on Linux, KDE)
{
"is_enable": True,
"http": {"ip_address": "127.0.0.1", "port": "8081"},
"https": {"ip_address": "127.0.0.1", "port": "8081"},
"ftp": {"ip_address": "127.0.0.1", "port": "8081"},
}
Get Bypass Domains
import uniproxy
prox = uniproxy.Uniproxy(ip="127.0.0.1", port=8081) ## Create a uniproxy instance
prox.set_bypass_domains(["www.google.com", "www.facebook.com"]) ## Set bypass domains
print(prox.get_bypass_domains()) ## Get bypass domains
This will output the following
['www.google.com', 'www.facebook.com']
MacOS Specific Functionality
Get default network service
import uniproxy
prox = uniproxy.Uniproxy(ip="127.0.0.1", port=8081) ## Create a uniproxy instance
print(prox.proxy.get_default_network_service()) ## Get the default network service
This will output the following (depends on the system and current network configuration):
Wi-Fi
Default network service is determined by parsing the output of route -n get default command. If it fails for some reason the default network service is found out by parsing the output of networksetup -listallnetworkservices command and returning the first network service which is not disabled.
Known Issues
- Uniproxy only works on SystemD based Linux systems.
- Uniproxy only supports KDE and GNOME desktop environments on Linux.
Credits
- hash3liZer/Proxverter: for providing the initial base for the project.
- zzzgydi/sysproxy-rs: for providing help with the macOS implementation.
- Proxy Server page on Arch wiki: for providing information on environment variables on linux.
Project details
Release history Release notifications | RSS feed
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 uniproxy-1.3.0.tar.gz.
File metadata
- Download URL: uniproxy-1.3.0.tar.gz
- Upload date:
- Size: 20.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.3 Linux/6.15.3-arch1-1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b0a035bc56f315ad1f22101b3770ee23bbfde75097140e8bac1aac89855f617
|
|
| MD5 |
2bdba55d2f1bed920436c5667fc156c5
|
|
| BLAKE2b-256 |
0d70a15eff5e0e5678590da1540cdc3cefe924d37af03d08ded9fcc6f32c639e
|
File details
Details for the file uniproxy-1.3.0-py3-none-any.whl.
File metadata
- Download URL: uniproxy-1.3.0-py3-none-any.whl
- Upload date:
- Size: 21.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.2 CPython/3.13.3 Linux/6.15.3-arch1-1
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
95ef634a49ab1cedc538ae9abd78d6e6f07ead37cc0737c739f5d729b9722445
|
|
| MD5 |
57424052d84b2a49c4dbc945f8a4536b
|
|
| BLAKE2b-256 |
404fb0d85a761a38180e668d26208a38e6f31ae3e5600f961f52a83c0b5475a7
|