Denis Machard

My technical gists

Infrastructure architect by profession but always consider himself as a developer and an open source enthusiast.
@github @mastodon @rss

Python Module to get your V4/V6 public IP from random providers

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).

Source code available in github under MIT licence.

The following providers are supported:

  • Google (DNS & HTTP & STUN)
  • Cloudflare (DNS & HTTP)
  • OpenDNS (DNS)
  • Akamai (DNS & HTTP)
  • Ipify (HTTP)
  • Icanhazip (HTTP)
  • Matrix (STUN)
  • Framasoft (STUN)

Installation

This module can be installed from pypi website

pip install publicaddr

Lookup for IPv4 and v6

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 public IP with specific protocol

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 IPv4 or IPv6 only

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

Get IP with specific provider

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
propulsed by hugo and hugo-theme-gists