Simple python module for getting your public IP V4 and V6 from several providers in random mode with also several protocols (DNS, HTTPS and STUN).
Supported providers with IPv4 and IPv6:
- Google (DNS & HTTP & STUN)
- Cloudflare (DNS & HTTP)
- OpenDNS (DNS)
- Akamai (DNS & HTTP)
- Ipify (HTTP)
- Icanhazip (HTTP)
- Matrix (STUN)
- Framasoft (STUN)
- Ifconfig.me (HTTP)
This module can be installed from pypi website
pip install publicaddr
Lookup for your public IPs from random providers with DNS or HTTP protocols with 3 retries if no ips are returned.
This is the default behaviour of the lookup
function.
import publicaddr
publicaddr.lookup()
{'ip4': 'x.x.x.x', 'ip6': 'x:x:x:x:x:x:x:x', 'provider': 'opendns',
'proto': 'dns', 'duration': '0.037'}
Lookup for your public IPs from random DNS providers with specific protocol.
import publicaddr
publicaddr.lookup(providers=publicaddr.DNS, retries=2)
{'ip4': 'x.x.x.x', 'ip6': 'x:x:x:x:x:x:x:x', 'provider': 'opendns',
'proto': 'dns', 'duration': '0.037'}
Default constants for transport protocol:
publicaddr.HTTPS
publicaddr.DNS
publicaddr.STUN
Get your public IPv4 with default provider (Google with DNS protocol).
import publicaddr
publicaddr.get(ip=publicaddr.IPv4)
{'ip': 'x.x.x.x', 'duration': '0.025'}
Default constants for IP version:
publicaddr.IPv4
publicaddr.IPv6
Example to use the provider Cloudflare instead of the default one.
import publicaddr
myip = publicaddr.get(provider=publicaddr.CLOUDFLARE, proto=publicaddr.DNS)
{'ip': 'x:x:x:x:x:x:x:x', 'duration': '0.020'}
Default constants for providers:
publicaddr.CLOUDFLARE
publicaddr.GOOGLE
publicaddr.OPENDNS
publicaddr.AKAMAI
publicaddr.IPIFY
publicaddr.ICANHAZIP
publicaddr.MATRIX
publicaddr.FRAMASOFT
publicaddr.MULLVAD
(disabled by default in config because IPv6 is not supported)publicaddr.IFCONFIG_ME
See the default configuration file
sudo apt install python3-venv
python3 -m venv venv
source venv/bin/activate
python3 -m pip install -r requirements.txt
python3 example.py
python3 -m unittest discover tests/