【问题标题】:PHP: To display who owns a domain? [duplicate]PHP:显示谁拥有一个域? [复制]
【发布时间】:2013-05-09 06:06:09
【问题描述】:

作为一项服务,我们希望在我们的网站上让访问者能够输入域名以查看谁拥有它。我知道网络上还有其他服务可以为 whois 执行此操作,但我们希望在我们自己的网站上提供此服务。

如何在 PHP 中做到这一点?我知道 whois linux shell 命令,但我希望能够直接通过 PHP 与之交互,这样我就可以干净地返回谁拥有该域。谢谢!

这不应该被关闭,它不是一个重复的问题。其他任何一个都不允许轻松解析域的所有者。仅仅放弃一种松散的输出格式是没有帮助的。这与我没有为此使用 shell 脚本的原因相同。感谢您的关注!

【问题讨论】:

  • 为什么不能在 PHP 中使用 whois。 PHP中有一些命令可以让你执行命令行实用程序...例如exec()和system()...
  • 这些解决方案都不允许轻松解析域的所有者。
  • 我可以在这里完美地完成。重点是什么?当然,whois 的结果是不同的……但是标签 REGISTRANT 总是存在的,那么你所需要的就是找出这个标签下面的结果。使用正则表达式来做到这一点。
  • 本站使用PHP解析whois数据whoownsthedomain.com

标签: php whois


【解决方案1】:

如果你知道shell命令,你可以使用php的exec(),你可以阅读它here但是确保你把完整的路径放到命令中,php并不总是像命令行那样配置'查看' bin 文件夹

【讨论】:

  • 这是最糟糕的建议。不要仅仅为了运行 whois 命令而使用 PHP。使用适当的 PHP 库或阅读 RFC3912 的 Whois 协议规范,然后打开一个 TCP 套接字到端口 43。
  • 所以你想用一个 3rd 方库包装 shell 命令只是为了说它更好?
  • 这绝对不是我说的。使用合适的 whois 库来打开端口 43 上的 TCP 套接字或自己打开它。你不需要去 shell 发送一个外部命令来打开一个 TCP 套接字。当然,使用为您执行 shell 转义的库与您自己做一样糟糕,或者只是稍微好一点(如果它至少尝试实施一些安全措施,但在性能方面它会一样糟糕)。
  • 当时被问到,没关系。您正在挖掘一个 5 年前的问题。
  • 写超优化代码2年后上市的那部分,当时已经有10家公司用你的想法进行了IPO......
【解决方案2】:

使用 whois,您将得到您想要的。

whois yourdomain.tld | tail -60

或

whois yourdomain.tld | grep "Registrant" >> /home/user/varlog.log

上面的命令会在你的 shell 中输出最后 60 行,你可以选择将它写入日志,在某些情况下,REGISTRANT 的名称在输出的第一行,或者不管它是什么,只需输出 REGISTRANT 到一个日志,如果registrant的信息只有一行,那么可以创建条件进行验证,找到registrant后输出N行。然后在 php 中你可以创建一些正则表达式来捕获需要的信息。

P.s.:如果您记录输出,那么您可以使用 PHP 读取它。

【讨论】:

  • 输出看起来很难看。此外,shell 输出上的 whois 并不总是相同的。尝试 google.com 的 whois 并出现一堆没有域所有者的垃圾。这就是为什么我希望通过 PHP 来完成这项工作,并希望对返回的字段有更直接的接口。谢谢!
  • PHP 无能为力!但是使用您可以使用 PHP 调用的工具来接口结果。很抱歉让您失望了。
  • 不要仅仅为了运行 whois 命令而使用 PHP。使用适当的 PHP 库或阅读 RFC3912 的 Whois 协议规范,然后打开一个 TCP 套接字到端口 43。
猜你喜欢
  • 1970-01-01
  • 2015-01-22
  • 2011-02-07
  • 1970-01-01
  • 1970-01-01
  • 2012-04-24
  • 2015-10-31
  • 2010-10-27
  • 1970-01-01
相关资源
最近更新 更多