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.
- 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.
 
$ pip3 install uniproxyInstall the package as mentioned above and import it.
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 proxyThis 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()  ## ChangeAs an alternative, you can also use the above method to set the proxy and enable it directly.
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 domainsThis 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.
import uniproxy
prox = uniproxy.Uniproxy(ip="127.0.0.1", port=8081)  ## Create a uniproxy instance
prox.set_proxy_enabled(False)  ## Disable system-wide proxyThis will disable the system-wide proxy.
import uniproxy
prox = uniproxy.Uniproxy(ip="127.0.0.1", port=8081)  ## Create a uniproxy instance
prox.delete_proxy()  ## Delete the proxy settingsThis will delete the proxy settings from the system and set them to OS defaults.
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 detailsThis 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"},
}
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 domainsThis will output the following
['www.google.com', 'www.facebook.com']
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 serviceThis 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.
- Uniproxy only works on SystemD based Linux systems.
 - Uniproxy only supports KDE and GNOME desktop environments on Linux.
 
- 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.