【问题标题】:Python Requests - Get Server IPPython 请求 - 获取服务器 IP
【发布时间】:2021-07-31 05:23:25
【问题描述】:

我正在制作一个测试 CDN 性能的小工具,并想检查响应的来源。我想获取主机的 IP,然后使用 github 上的其中一个地理定位 API 来检查国家/地区。

我试过这样做

import socket
...
raw._fp.fp._sock.getpeername()

...但是,这仅在我使用 stream=True 进行请求时才有效,而这反过来又破坏了该工具的功能。 是否有任何其他选项可以通过请求或以完全不同的方式获取服务器 ip?

【问题讨论】:

  • 最好有最少的工作示例,这样他们就不必从头开始重现您的问题。

标签: python sockets networking python-requests ip


【解决方案1】:

Python 套接字库中的socket.gethostbyname() 函数应该可以解决您的问题。你可以在 Python 文档here 中查看它。

这是一个如何使用它的示例:

import socket
url="cdnjs.cloudflare.com"
print("IP:",socket.gethostbyname(url))

您只需将 url 传递给socket.gethostbyname(),剩下的事情就交给它了。只需确保删除 URL 之前的 http://,因为那样会出错。

【讨论】:

  • 这似乎只适用于剥离的扩展名,因此例如在测试 cloudflare.com/file... 时,我需要删除“file...”。但是“cloudflare.com”和“cloudflare.com/file...”是否有可能从两个不同的服务器交付,以减少内容交付的时间?
  • 绝对有机会。但是,我想 Cloudflare 不希望您知道这一点。他们很可能使用负载平衡器系统,根据位置和文件可用性查询最佳服务器。我认为您不能直接查询这些服务器。你能做的最好的就是测试他们的前置 CDN 接口。
猜你喜欢
  • 2021-09-25
  • 2013-05-31
  • 2023-03-30
  • 1970-01-01
  • 2011-03-11
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
相关资源
最近更新 更多