我想连接到用户提供的某些“domain.com”主机。我没有像“http://domain.com”这样的完整网址。我不知道“domain.com”是否支持SSL(它可能只支持HTTP或仅支持HTTP或支持两者,然后首选HTTPS)。连接到https://domain.com和http://domain.com是找出用于该主机的正确协议的唯一方法吗?
理想情况下,我想检查一下domain.com的一些DNS记录,它让我找到首选协议,而不是制作两个相当昂贵的网络连接,HTTP和HTTPS(其中一个,如果它试图连接到无效端口,可能需要一段时间才能超时)。
我无法直接控制“domain.com”主机,但如果需要,我可以建议其所有者添加DNS记录或其他任何内容。
在这一点上,一种特殊的编程语言并不重要,我只是对这个概念感到好奇。
答案 0 :(得分:2)
我认为连接到实际站点可能是确定哪个端点规范为
的必要条件看看这两个Python项目 - benbalter/site-inspector和dhs-ncats/pshtt。他们使用连接状态,HTTP响应代码和重定向的组合来确定给定域的规范端点。
答案 1 :(得分:2)
我想连接到用户提供的某些“domain.com”主机。我没有像“http://domain.com”这样的完整网址。我不知道“domain.com”是否支持SSL(它可能只支持HTTP或仅支持HTTP或支持两者,然后首选HTTPS)。连接到https://domain.com和http://domain.com是找出用于该主机的正确协议的唯一方法吗?
通常,是的。或者至少是最简单的方法。
域名本身通常只能解析为IP地址。您不知道该IP地址实际运行的是什么。它可能有HTTP服务器,HTTPS服务器,FTP服务器,SMTP / POP服务器和IMAP服务器等。在您实际尝试使用所选协议连接到它之前,您只是不知道可用的内容。
因此,您必须尝试单独连接HTTP和HTTPS,无论哪个成功都是赢家。
理想情况下,我想检查一下domain.com的一些DNS记录,它让我找到首选协议,而不是制作两个相当昂贵的网络连接,HTTP和HTTPS
有一条标准的DNS SRV记录,可以用于提供有关HTTP / HTTPS服务器的存在及其运行的端口号的信息(此类用法)已涵盖Use of SRV records in conjuction with HTTP and URIs,已过期。
还有一个标准的DNS URI记录类型,它还可以提供服务名称和描述用于该服务的协议和端口的URI之间的映射。
但是,大多数管理员不使用SRV
/ URI
记录来描述HTTP / S服务器(例如,Google和Yahoo不会),所以这必须是您要求的额外内容来自您的客户,而不是您可以依赖的用户可能会给您的所有域名。
和其中一个,如果它试图连接到无效端口,可能需要一段时间才能超时
您可以在传出连接上实现自己的超时,但不限于操作系统的默认超时。