How can I get the public IP using python2.7? How can I get the public IP using python2.7? python python

How can I get the public IP using python2.7?


Currently there are several options:

  • ip.42.pl
  • jsonip.com
  • httpbin.org
  • ipify.org

Below are exact ways you can utilize each of the above.

ip.42.pl

from urllib2 import urlopenmy_ip = urlopen('http://ip.42.pl/raw').read()

This is the first option I have found. It is very convenient for scripts, you don't need JSON parsing here.

jsonip.com

from json import loadfrom urllib2 import urlopenmy_ip = load(urlopen('http://jsonip.com'))['ip']

Seemingly the sole purpose of this domain is to return IP address in JSON.

httpbin.org

from json import loadfrom urllib2 import urlopenmy_ip = load(urlopen('http://httpbin.org/ip'))['origin']

httpbin.org is service I often recommend to junior developers to use for testing their scripts / applications.

ipify.org

from json import loadfrom urllib2 import urlopenmy_ip = load(urlopen('https://api.ipify.org/?format=json'))['ip']

Power of this service results from lack of limits (there is no rate limiting), infrastructure (placed on Heroku, with high availability in mind) and flexibility (works for both IPv4 and IPv6).

EDIT: Added httpbin.org to the list of available options.

EDIT: Added ipify.org thanks to kert's note.


I like the requests package with http://ip.42.pl/raw

import requestsrequests.get('http://ip.42.pl/raw').text


With requests module

import requestspublic_IP = requests.get("https://www.wikipedia.org").headers["X-Client-IP"]print public_IP