【问题标题】:How to use WHOIS queries from python script when port 43 is likely not accessible当端口 43 可能无法访问时如何使用 python 脚本中的 WHOIS 查询
【发布时间】:2020-08-13 20:48:14
【问题描述】:

我对网络编程非常陌生,遇到了以下问题:

我正在 Windows10 主机上的 VMware CentOS7 虚拟机上工作。 我的脚本应该发送 WHOIS 查询并解析它们的输出(例如到期日期)。

但是,尝试发送查询会导致连接错误:

>>>import whois
>>>whois.query('google.com')


WhoisCommandFailed: connect: Network is unreachable

我试图从终端whois,但错误是一样的。 当我尝试直接从托管虚拟机的 Windows 中使用 whois 时,错误看起来也一样(连接超时)。

我发现,这很可能与对端口 43 的访问有关。我通过 guide 为该端口创建了 Windows 防火墙规则(用于输入和输出),但错误仍然存​​在。 似乎 ISP 阻止了对该端口的访问(但 ping 命令正在运行)。

总而言之,我有两个问题: 1)(不太重要)如何检查端口 43 是否被 ISP 防火墙阻止? 2) (最重要)是否有可能以某种方式重新配置 WHOIS 以使用另一个端口(即 23)通过 Python 脚本发送查询?
不幸的是,ISP 的安全策略不允许他们打开 43 端口。

【问题讨论】:

  • 查看 RDAP。它是whois的“继任者”。它将为您提供相同的结果,但格式为基于 HTTPS 的 JSON。而且由于它是 HTTPS,因此不太可能被过滤。

标签: python networking whois pywhois


【解决方案1】:

大多数情况下 ISP 不会阻止任何端口,但是是的,这不是 100% 正确的。

测试连接:

  • 在 CentOS 上运行 tcpdump(安装命令:yum install tcpdump)命令:tcpdump -peni any tcp and port 43
  • 您必须看到带有以下文本的行:192.168.1.1.57350 > 192.34.234.30.43 其中 192.34.234.30 IP 地址表示远程 whois 服务器。
  • 尝试 telnet 到远程服务器的 TCP/43 端口:telnet 192.34.234.30 43
  • 您应该会看到以下内容:

正在尝试 192.34.234.30...

连接到 192.34.234.30。

转义字符是'^]'。

  • 如果您看不到这样的上下文并且您立即返回提示,您将在某处设置防火墙规则,即阻止连接。我建议暂时关闭防火墙并重新测试。

您无法更改端口号,因为它是在远程服务器上配置的。

CentOS7 服务器可以与 Internet 通信吗?例如,您可以安装软件包吗?

windows机器和ISP之间有路由器吗?

【讨论】:

  • 谢谢!对于这么晚的答案,我很抱歉,据我所知,问题是由我的雇主的 ISP 政策引起的,该政策阻止了包括 43'd 在内的某些端口。但是,他们可以根据要求为特定用户打开它。
猜你喜欢
  • 1970-01-01
  • 2014-03-23
  • 2014-07-04
  • 1970-01-01
  • 2011-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多