使用Python查找网络(外部)IP地址

时间:2014-07-01 11:06:12

标签: python ip python-2.x

我想通过Python了解我的互联网提供商(外部)IP地址(宽带或其他)。

有多台机器连接到该网络。我以不同的方式尝试过,但我的机器只有本地和公共IP。如何通过Python找到我的外部IP地址?

提前致谢。

6 个答案:

答案 0 :(得分:19)

使用此脚本:

import urllib, json

data = json.loads(urllib.urlopen("http://ip.jsontest.com/").read())
print data["ip"]

没有json:

import urllib, re

data = re.search('"([0-9.]*)"', urllib.urlopen("http://ip.jsontest.com/").read()).group(1)
print data

其他方式是解析ifconfig(= linux)或ipconfig(= windows)命令,但要注意翻译的Windows系统 (ipconfig已翻译)。

Linux的lib示例: ifparser

答案 1 :(得分:12)

安全选项(https支持)

from requests import get

get('https://ipapi.co/ip/').text

完成JSON response

P.S。 requests模块便于https支持。你可以试试httplib

答案 2 :(得分:3)

您必须使用您信任的外部来源。 Python2.x:

from urllib import urlopen
import json
url = 'http://api.hostip.info/get_json.php'
info = json.loads(urlopen(url).read())
print(info['ip'])

如果您想了解更多信息,可以从info打印更多值。

非python oneliner:

wget -q -O- icanhazip.com

答案 3 :(得分:2)

你可以看看这个答案:

https://stackoverflow.com/a/22157882/5687894

TL; DR:

import ipgetter
ip=ipgetter.myip()

答案 4 :(得分:0)

在我看来,最简单的解决方案是

f = requests.request('GET', 'http://myip.dnsomatic.com')
ip = f.text

多数人。

答案 5 :(得分:-1)

我的网站http;//botliam.com/1.php输出您的IP,因此您只需要这三行来获取您的IP。

import requests
page = requests.get('http://botliam.com/1.php')
ip = page.text

它的作用是什么:

  • 打开我的网页并将其命名为“page”
  • 将“ip”设置为“page”
  • 的内容

如果您希望自己的服务器返回外部IP而不是依赖我的网站,则代码如下:

<?php
$ip = getenv('HTTP_CLIENT_IP')?:
getenv('HTTP_X_FORWARDED_FOR')?:
getenv('HTTP_X_FORWARDED')?:
getenv('HTTP_FORWARDED_FOR')?:
getenv('HTTP_FORWARDED')?:
getenv('REMOTE_ADDR');
echo "$ip";
?>