Python之自动获取公网IP的实例讲解
问题背景
在进行网络编程、构建Web应用、服务器部署等操作时,我们经常需要获取本机的公网IP地址。那么如何使用Python自动获取本机的公网IP地址呢?
解决方案
方案一:通过访问网络API获取IP地址
我们可以调用一些公开免费的网络API接口,从而获取自己的公网IP地址。经过查找,有一些比较可用的API接口,如ipify接口和icanhazip接口,这里我们选择icanhazip接口来进行示例。
示例代码
import requests
response = requests.get('https://icanhazip.com')
ip = response.text.strip()
print('My public IP address is: {}'.format(ip))
代码说明
1.导入requests库,用于向网络API发送请求。
2.使用requests.get()方法发送get请求,请求的url指向icanhazip接口。
3.通过response.text属性获取API返回的IP地址,使用strip()方法去除多余的空格和换行符。
4.最后打印出获取到的公网IP地址。
方案二:使用socket获取IP地址
我们还可以通过Python内置的socket模块获取本机的公网IP地址。这种方法比较简单,但有时可能会受到局域网和不同网卡的影响。
示例代码
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(('8.8.8.8', 80))
ip = s.getsockname()[0]
s.close()
print('My public IP address is: {}'.format(ip))
代码说明
1.导入socket库,用于获取socket对象。
2.创建一个socket对象,指定地址族为IPv4,传输层为UDP。
3.使用socket对象的connect()方法连接指定的IP地址和端口号,这里使用了谷歌的公共DNS服务器8.8.8.8和端口号80。
4.通过socket对象的getsockname()方法获取本机的IP地址和端口号,使用索引号[0]获取IP地址,同时关闭socket对象。
5.最后打印出获取到的公网IP地址。
总结
通过以上实例,我们学会了两种获取本机公网IP地址的方法。不同的应用场景可能需要不同的方法,我们可以根据需要进行选择和使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python之自动获取公网IP的实例讲解 - Python技术站