寻找一种更好的方法来获取机器当前的外部IP#...下面工作,但宁愿不依赖外部网站来收集信息......我只能使用与Mac OS捆绑在一起的标准Python 2.5.1库X 10.5.x
import os import urllib2 def check_in(): fqn = os.uname()[1] ext_ip = urllib2.urlopen('http://whatismyip.org').read() print ("Asset: %s " % fqn, "Checking in from IP#: %s " % ext_ip)
mario1ua.. 57
我喜欢http://ipify.org.他们甚至提供Python代码来使用他们的API.
# This example requires the requests library be installed. You can learn more # about the Requests library here: http://docs.python-requests.org/en/latest/ from requests import get ip = get('https://api.ipify.org').text print 'My public IP address is:', ip
Serge Stroob.. 35
Python3,除了标准库之外别无其他
如前所述,为了发现路由器的外部IP地址,无法使用某种类型的外部服务.
以下是python3
使用标准库以外的其他方法:
import urllib.request external_ip = urllib.request.urlopen('https://ident.me').read().decode('utf8') print(external_ip)
尽管OP适用于python 2,但我认为这应该是python 3的公认答案,因为它不使用任何第三方库。但是请注意,https://ident.me(以及其他类似https://ipv4bot.whatismyipaddress.com的请求)所花的时间大约是https://api.ipify.org或https要求的时间的“两倍”: //ipinfo.io/ip,使用与此答案相同的代码。我发现的最快和最简单的响应(在六个响应中)是api.ipify.org。 (2认同)
Sunny Mileno.. 27
如果你在获得外部IP的路由器后面,我恐怕你别无选择,只能像你一样使用外部服务.如果路由器本身有一些查询接口,您可以使用它,但解决方案将非常环境且不可靠.
我喜欢http://ipify.org.他们甚至提供Python代码来使用他们的API.
# This example requires the requests library be installed. You can learn more # about the Requests library here: http://docs.python-requests.org/en/latest/ from requests import get ip = get('https://api.ipify.org').text print 'My public IP address is:', ip
如前所述,为了发现路由器的外部IP地址,无法使用某种类型的外部服务.
以下是python3
使用标准库以外的其他方法:
import urllib.request external_ip = urllib.request.urlopen('https://ident.me').read().decode('utf8') print(external_ip)
如果你在获得外部IP的路由器后面,我恐怕你别无选择,只能像你一样使用外部服务.如果路由器本身有一些查询接口,您可以使用它,但解决方案将非常环境且不可靠.
您应该使用UPnP协议来查询路由器以获取此信息.最重要的是,这并不依赖于外部服务,这个问题的所有其他答案似乎都表明了这一点.
有一个名为miniupnp的Python库可以做到这一点,参见例如miniupnpc/testupnpigd.py.
pip install miniupnpc
基于他们的例子你应该能够做这样的事情:
import miniupnpc u = miniupnpc.UPnP() u.discoverdelay = 200 u.discover() u.selectigd() print('external ip address: {}'.format(u.externalipaddress()))
如果您认为外部源太不可靠,您可以汇集一些不同的服务.对于大多数ip查找页面,他们要求你抓取html,但其中一些已经创建了像你这样的脚本的精简页面 - 这样他们就可以减少他们网站上的点击量:
automation.whatismyip.com/n09230945.asp(更新: whatismyip已关闭此服务)
whatismyip.org