How can I get the public IP using python2.7? Not private IP.
You can just do this:
import requests
print requests.get("http://ipecho.net/plain?").text
Produces:
XX.XX.XXX.XXX
in python 2.7 it's just a code of 2 lines.
import requests
print requests.get("http://ipconfig.in/ip").text
I like the requests package with http://ip.42.pl/raw
import requests
requests.get('http://ip.42.pl/raw').text
Currently there are several options:
Below are exact ways you can utilize each of the above.
from urllib2 import urlopen
my_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.
from json import load
from urllib2 import urlopen
my_ip = load(urlopen('http://jsonip.com'))['ip']
Seemingly the sole purpose of this domain is to return IP address in JSON.
from json import load
from urllib2 import urlopen
my_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.
from json import load
from urllib2 import urlopen
my_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.
With requests module
import requests
public_IP = requests.get("https://www.wikipedia.org").headers["X-Client-IP"]
print public_IP
Try this:
import ipgetter
import requests
IP = ipgetter.myip()
url = 'http://freegeoip.net/json/'+IP
r = requests.get(url)
js = r.json()
print 'IP Adress: ' + js['ip']
print 'Country Code: ' + js['country_code']
print 'Country Name: ' + js['country_name']
print 'Region Code: ' + js['region_code']
print 'Region Name: ' + js['region_name']
print 'City Name: ' + js['city']
print 'Zip code: ' + js['zip_code']
print 'Time Zone: ' + js['time_zone']
print 'Latitude: ' + str(js['latitude'])
print 'Longitude: ' + str(js['longitude'])