【问题标题】:Get Stun info with Python使用 Python 获取 Stun 信息
【发布时间】:2022-01-20 14:46:10
【问题描述】:

我尝试使用 Python 获取外部 ip 和端口

我使用:pip install pystun

import stun
stun.get_ip_info()

但我得到了错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python3.8/dist-packages/stun/__init__.py", line 252, in get_ip_info
    nat_type, nat = get_nat_type(s, source_ip, source_port,
  File "/usr/local/lib/python3.8/dist-packages/stun/__init__.py", line 186, in get_nat_type
    _initialize()
  File "/usr/local/lib/python3.8/dist-packages/stun/__init__.py", line 93, in _initialize
    dictValToAttr.update({items[i][1]: items[i][0]})
TypeError: 'dict_items' object is not subscriptable

我该如何解决这个问题?

【问题讨论】:

  • 我投票结束这个问题,因为 Stack Overflow 不是技术支持。 阅读文档可以最好地回答此类问题。在使用pip 安装任何东西之前,您应该检查的第一个文档是the PyPI page for the package,其中会告诉您支持哪些版本的 Python。

标签: python python-3.x python-3.8 stun


【解决方案1】:

那是因为pystun 已过期。 pystun 不支持最新版本的 python。相反,安装 pystun3

pip uninstall pystun # uninstall already installed pystun module
pip install pystun3
import stun
print(stun.get_ip_info())
#('Symmetric NAT', '111.111.11.111', 1027)

或者,您可以获取您的外部 IP 地址,如下所示:

import http.client
conn = http.client.HTTPConnection("ifconfig.me")
conn.request("GET", "/ip")
print(conn.getresponse().read())

欲了解更多信息,请参阅https://ru.stackoverflow.com/questions/133137/

【讨论】:

  • 谢谢,ifconfig.me我只能获取外部IP
【解决方案2】:

原来的 Pystun 不支持support Python 3。有一个支持 Python 3 的fork,您可以使用pip install pystun3(Pypi 上的pystun3)安装它。

【讨论】:

    猜你喜欢
    • 2012-04-11
    • 1970-01-01
    • 2017-05-07
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2014-04-28
    相关资源
    最近更新 更多