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

使用Python查找网络(外部)IP地址,python,ip,python-2.x,Python,Ip,Python 2.x,我想通过Python了解我的互联网提供商(外部)IP地址(宽带或其他) 有多台机器连接到该网络。我尝试了不同的方式,但我只得到了本地和公共IP我的机器。如何通过Python查找外部IP地址 提前感谢。使用此脚本: import urllib, json data = json.loads(urllib.urlopen("http://ip.jsontest.com/").read()) print data["ip"] 没有json: import urllib, re data = re

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

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

提前感谢。

使用此脚本:

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示例:
.

您必须使用您信任的外部来源。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

在我看来,最简单的解决办法是

f = requests.request('GET', 'http://myip.dnsomatic.com')
ip = f.text
仅此而已。

安全选项(带有
https
支持)

完整的


另外,
请求
模块便于
https
支持。您可以试试。

您可以查看以下答案:

TL;博士:

import ipgetter
ip=ipgetter.myip()
我的网站输出你的ip,所以你只需要这3行就可以得到你的ip

import requests
page = requests.get('http://botliam.com/1.php')
ip = page.text
它所做的是:

  • 打开我的网页并称之为“页面”
  • 将“ip”设置为“页面”的内容
如果您希望自己的服务器返回您的外部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";
?>


您尝试过哪些方法?我尝试过这个,
导入socket socket.gethostbyname(socket.gethostname())
。现在我正在获取分配给我的机器的ip地址。不是网络提供商的ipaddress@timgeb,如果你看到这个链接,你就可以知道我到底想要什么。这里的全部信息是,国家、城市、提供商ip等@Mulagala的可能副本将我的答案更改为python2。7如何获取用户存储上次登录位置的位置
info
是一本字典,没有顺序。每次打印时,顺序都会有所不同。很抱歉,我没有得到您的信息,我的要求是找到我的用户位置以保存上次登录的位置。这里的代码正在我的服务器上执行,因此我得到了我的位置,现在我需要我的客户端位置,以便登录到我的站点的用户,如果你知道的话,请帮助我。谢谢你的建议。我想你应该打开一个新的问题,在评论中很难回答。请注意,它确实需要非默认的附加。更好更优雅的回答非常优雅!
<?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";
?>