Python获取公网IP

2016年8月1日 8297点热度 0人点赞 0条评论

Python获取公网IP

前言

在Python网络编程中,开发者常常需要及时获取platform的外网/公网IP地址。如此,出现不同的解决办法。常见的有:

  • 调用socket函数,如使用socket的gethostbyname_ex()
  • 使用urllib获取ip查询网站的网页元素
  • 使用platform的API获取网卡信息

然而,socket的gethostbyname并不能在多级路由环境获取准确的外网ip。ip查询网站对于高OPS的外部流量有自我保护,并且难以提供稳定、长期的支持。因此,博主剑走偏锋采取一种较麻烦、鲁棒性却好的方法。

服务器查询服务部署

博主为方便ip查询,特在服务器PHP环境下部署一查询服务xxxx.com/ip.php 访问结果为当访问者的外网iP

<?php
ip =_SERVER["REMOTE_ADDR"];
echo $ip;
?>

requests库解析访问结果

import requests
def get_ip_address():
	response = requests.get('http://tool.nanguoyu.us/ip.php')
	return response.content.decode()
print(get_ip_address())

访问结果:

sp160801_170808

[newlink title='注意']本人代码中查询服务器禁止滥用[/newlink]

 

 

Dong Wang

Master student of computer science at Uppsala University in Sweden. My primary research interests are deep learning, computer vision, federated learning and internet-of-things.

文章评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据