当我在socket对象上调用socket.getsockname()
时,它返回我的机器内部IP和端口的元组。但是,我想检索我的外部IP。什么是最便宜,最有效的方式呢?如何在Python中获取套接字的外部IP?
回答
如果没有外部服务器的配合,这是不可能的,因为您和其他计算机之间可能有任何数量的NAT。如果是自定义协议,您可以要求其他系统报告连接的地址。
我能想到的保证给你的唯一办法就是打一个像http://whatismyip.com/这样的服务来得到它。
不明白为什么这是否决。这是恕我直言的唯一方法来获得任何系统的外部IP地址。仅仅因为路由器告诉你它认为你的IP地址是什么,或者它认为它的IP地址并不意味着没有另外的NAT。 – 2008-09-12 07:50:00
@MatthewSchinckel:+1提到另一个NAT。另外,不同的外部服务可能会看到不同的外部IP,例如,我记得访问一个图书馆网站时,我必须使用不同的路由,以便该网站看到不同的(允许的)ip,即公共ip可能取决于目的地。 – jfs 2014-02-27 17:44:16
进口插座
S = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(( “msn.com”,80))
s.getsockname( )
使用地址建议中的http://whatismyip.com
import urllib
def get_my_ip_address():
whatismyip = 'http://www.whatismyip.com/automation/n09230945.asp'
return urllib.urlopen(whatismyip).readlines()[0]
请注意,他们说这不是每300秒超过一次。 – Claudiu 2011-03-07 23:57:09
0源
'''
Finds your external IP address
'''
import urllib
import re
def get_ip():
group = re.compile(u'(?P<ip>\d+\.\d+\.\d+\.\d+)').search(urllib.URLopener().open('http://jsonip.com/').read()).groupdict()
return group['ip']
if __name__ == '__main__':
print get_ip()
print (urllib.urlopen('http://automation.whatismyip.com/n09230945.asp').read())
- 1. Python套接字 - 我将它绑定到IP后如何获取套接字的IP地址
- 2. 获取外部IP
- 3. 如何在Lua套接字中获取客户端IP
- 4. 如何从套接字获取IP地址在Windows中
- 5. 如何获取接受的入站套接字的IP地址?
- 6. 客户端套接字 - 获取IP -java
- 7. 在Java中获取'外部'IP地址
- 8. python中的TCP/IP套接字编程
- 9. Android获取外部IP
- 10. 如何获取套接字的IP地址C
- 11. 如何获取Tornado Web套接字请求的客户端IP?
- 12. Python套接字绑定到任何IP?
- 13. 获取套接字数据在Python
- 14. C#。通过套接字和外部IP连接到好友
- 15. 如何在Python中获取IP地址
- 16. 如何从原始套接字获取IP src地址
- 17. 如何确保从tcp/ip套接字获取最新数据?
- 18. 如何使用套接字编程获取客户端IP#
- 19. 如何从UDP套接字(Windows C++)获取IP信息?
- 20. 如何在目标c中获取外部IP
- 21. 如何在局域网中获取外部IP地址?
- 22. 如何在Delphi中获取外部(公共)IP
- 23. 如何在C++中获取外部IP地址?
- 24. 如何在Symfony2控制器中获取外部IP地址?
- 25. Python套接字获取连接重置
- 26. 获取IP的外部列表,并在Python
- 27. 如何获取C#中的外部IP的mac地址?
- 28. 如何从Python中的TCP套接字读取完整的IP帧?
- 29. 如何在Unix套接字编程中获取本地IP地址和端口?
- 30. 我如何获得我的外部/ IP?
另一个伟大的网站,提供一个实惠的解决方案是得到[icanhazip.com] HTTP请求(http://icanhazip.com) – Droogans 2012-01-13 12:32:15