当前位置:  开发笔记 > 编程语言 > 正文

使用Python获取计算机的外部IP地址

如何解决《使用Python获取计算机的外部IP地址》经验,为你挑选了5个好方法。

寻找一种更好的方法来获取机器当前的外部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的路由器后面,我恐怕你别无选择,只能像你一样使用外部服务.如果路由器本身有一些查询接口,您可以使用它,但解决方案将非常环境且不可靠.



1> mario1ua..:

我喜欢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



2> Serge Stroob..:
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。

3> Sunny Mileno..:

如果你在获得外部IP的路由器后面,我恐怕你别无选择,只能像你一样使用外部服务.如果路由器本身有一些查询接口,您可以使用它,但解决方案将非常环境且不可靠.



4> Vegard..:

您应该使用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()))



5> Thomas Ahle..:

如果您认为外部源太不可靠,您可以汇集一些不同的服务.对于大多数ip查找页面,他们要求你抓取html,但其中一些已经创建了像你这样的脚本的精简页面 - 这样他们就可以减少他们网站上的点击量:

automation.whatismyip.com/n09230945.asp(更新: whatismyip已关闭此服务)

whatismyip.org

推荐阅读
地之南_816
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有