如何检查服务器是否支持 xmpp 协议?

如何检查服务器是否支持 xmpp 协议?

我正在寻找一种方法来检查服务器是否支持 xmpp 协议,即 xmpp 服务器是否在此域上运行。

也许是特殊的 DNS 检查或者类似的东西?

答案1

非 SSL jabber 的主要默认端口是 5222。您可以使用 telnet 向其发送一些 xml,看看是否收到 XML 响应:

telnet suspectedServer 5222
<?xml version="1.0"?>  <stream:stream to="foo.com" xmlns="jabber:client" xmlns:stream="http://etherx.jabber.org/streams" version="1.0"> 

这当然可以为多个服务器和多个端口编写脚本,使用 nc(netcat)编写脚本可能更容易。

对于需要 TLS 连接的 XMPP 服务器,请使用以下方法进行测试:-

openssl s_client -starttls xmpp -connect suspectedserver:5222

答案2

如果 XMPP 服务器配置为使用其他XMPP 服务器,域名可能在 DNS 中有一个 SRV 记录。例如:

$ dig _xmpp-server._tcp.google.com srv +short
20 0 5269 xmpp-server1.l.google.com.
20 0 5269 xmpp-server4.l.google.com.
20 0 5269 xmpp-server3.l.google.com.
5 0 5269 xmpp-server.l.google.com.
20 0 5269 xmpp-server2.l.google.com.

这绝不是找到 XMPP 服务器的可靠方法,因为独立站点很可能在 DNS 中没有这些数据。然而,这是更美好这是查找 jabber 服务器的方法,因为数据是已发布的,不需要任何端口探测。它也在 RFC 3920(XMPP 协议定义)中定义。

答案3

没有确定的检查方法。Nmap 会给你一些提示,但对其他人的服务器运行它会存在一些道德问题,甚至可能是法律问题。

答案4

如果这是联合服务器(不是 Startrek),那么您可以按照说明检查 SRV DNS 条目这里

相关内容