
Я ищу способ проверить, поддерживает ли сервер протокол XMPP, т. е. запущен ли XMPP-сервер на этом домене.
Может быть, специальная проверка DNS или что-то в этом роде?
решение1
Основной порт по умолчанию для не-SSL Jabber — 5222. Вы можете отправить на него немного XML с помощью telnet и посмотреть, получите ли вы 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).
Для серверов XMPP, требующих TLS-подключений, выполните тестирование с помощью: -
openssl s_client -starttls xmpp -connect suspectedserver:5222
решение2
Если сервер XMPP настроен для работы сдругойXMPP-серверы, возможно, домен будет иметь запись SRV в DNS. Например:
$ 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, как описаноздесь.