Skip to main content

Utility to fetch your external IP address

Project description

https://img.shields.io/pypi/v/ipgetter2.svg https://travis-ci.org/starofrainnight/ipgetter2.svg?branch=master https://ci.appveyor.com/api/projects/status/github/starofrainnight/ipgetter2?svg=true

Utility to fetch your external IP address.

This module is designed to fetch your external IP address from the internet.

It is used mostly when behind a NAT.

It picks your IP randomly from a server list to minimize request overhead on a single server

NOTICE: This library is try to act as a replacement of the ipgetter library, because that library has disappeared on pypi.org and github.

Why there another ipgetter library?

I found ipgetter disappeared at night of 2019-05-11. I don’t know precisely when it’s disappeared, and don’t know what’s going on.

So I write this library with same API interface for my projects that depends on it as a replacement, hope it will help people that ran into the same situation.

Features

  • Correctly detect webpage encoding by chardet

  • Control the timeout by library requests not by signal alarm (Alarm signal will cause problems)

  • Smart server fetch algorithm, the get() method will fetch at least 2 IP with the same value in 3 random servers (return the only one valid IP without checking if there have only one server responsed)

  • Support IPv6 either (Return both values if the server provided two of them)

Usage

  • ipgetter2 usage

>>> from ipgetter2 import IPGetter
>>> getter = IPGetter()
>>> getter.get()
{v4:"8.8.8.8", v6:"::"}
>>> getter.get_from("http://checkip.dyndns.org/plain")
{v4:"8.8.8.8", v6:"::"}
>>> getter.test()
Numbers of Servers : 46
[1/46] Testing : http://ip.dnsexit.com
[2/46] Testing : http://ifconfig.me/ip
[3/46] Testing : http://ipecho.net/plain
......
[45/46] Testing : http://httpbin.org/ip
[46/46] Testing : https://api.myip.com
8 server failed : ['http://checkip.dyndns.org/plain', 'http://www.canyouseeme.org/', 'http://whatsmyip.net/', 'http://www.ip-adress.com/', 'http://ip-lookup.net/', 'https://check.torproject.org/', 'https://www.privateinternetaccess.com/pages/whats-my-ip/', 'http://myexternalip.com/']
{IPAddress(v4="117.117.117.117", v6="::"): 26, IPAddress(v4="0.0.0.0", v6="::"): 11, IPAddress(v4="117.117.117.116", v6="::"): 1}
IP's : {v4:"117.117.117.117", v6:"::"} = 26 ocurrencies
  • Emulated API interface of ipgetter library

>>> from ipgetter2 import ipgetter1 as ipgetter
>>> myip = ipgetter.myip()
>>> myip
'8.8.8.8'
>>> ipgetter.IPgetter().test()
Number of servers: 47
IP's :
8.8.8.8 = 47 ocurrencies

Credits

This package was created with Cookiecutter and the PyPackageTemplate project template.

History

1.1.9 (2019-08-26)

  • Fixed not working on python 3.5.x

  • Fixed tests failed on windows

1.1.7 (2019-05-25)

  • Added more servers, mostly from China

1.1.5 (2019-05-25)

  • Speed up get() by threading.Thread, send request simultaneously

1.1.1 (2019-05-22)

  • First release on PyPI.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ipgetter2-1.1.10.zip (22.8 kB view details)

Uploaded Source

File details

Details for the file ipgetter2-1.1.10.zip.

File metadata

  • Download URL: ipgetter2-1.1.10.zip
  • Upload date:
  • Size: 22.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.42.0 CPython/3.7.1

File hashes

Hashes for ipgetter2-1.1.10.zip
Algorithm Hash digest
SHA256 e26058c5fbc8d7034ee4fd276ed0ef8dcc27db35283af9cdf4826ac72532ffd1
MD5 449c4ec27e0a77a9e54572493ab10a6b
BLAKE2b-256 e98991059d7ed9368081d1916aafd565efbfd95970a3e8cf334af3b1218b7968

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page