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

后端 未结 7 1327
梦毁少年i
梦毁少年i 2020-11-30 22:43

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

相关标签:
7条回答
  • 2020-11-30 22:51

    You can just do this:

    import requests
    print requests.get("http://ipecho.net/plain?").text
    

    Produces:

    XX.XX.XXX.XXX
    
    0 讨论(0)
  • 2020-11-30 22:56

    in python 2.7 it's just a code of 2 lines.

    import requests

    print requests.get("http://ipconfig.in/ip").text

    0 讨论(0)
  • 2020-11-30 22:57

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

    import requests
    requests.get('http://ip.42.pl/raw').text
    
    0 讨论(0)
  • 2020-11-30 23:00

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

    jsonip.com

    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.

    httpbin.org

    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.

    ipify.org

    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.

    0 讨论(0)
  • With requests module

    import requests
    
    public_IP = requests.get("https://www.wikipedia.org").headers["X-Client-IP"]
    print public_IP
    
    0 讨论(0)
  • 2020-11-30 23:12

    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'])
    
    0 讨论(0)
提交回复
热议问题