使用python标准库,有没有办法确定给定的Web地址是应该使用HTTP还是HTTPS?如果您使用HTTP访问某个站点://.com是否有一个标准错误代码,表示他们应该是“HTTPS”而不是http?
谢谢
答案 0 :(得分:4)
你做过任何类型的测试吗?
您的问题的简短,早期答案是: 由于重定向,不存在应该使用...它是您的偏好,或者是服务器决定。
某些服务器仅允许https,当您调用http时,会返回302代码。
因此,如果您的目标是从给定的网址加载https,只需尝试回退到正常的http。
我建议您只发送HEAD请求,以便在https连接正在侦听时能够非常快速地识别。我不建议您检查端口443(ssl),因为有时人们不遵守该规则,https协议将确保您处于https而不是假443端口。
一些代码:
#!/usr/bin/env python
#! -*- coding: utf-8 -*-
from urlparse import urlparse
import httplib, sys
def check_url(url):
url = urlparse(url)
conn = httplib.HTTPConnection(url.netloc)
conn.request("HEAD", url.path)
if conn.getresponse():
return True
else:
return False
if __name__ == "__main__":
url = "http://httpbin.org"
url_https = "https://" + url.split("//")[1]
if check_url(url_https):
print "Nice, you can load it with https"
else:
if check_url(url):
print "https didn't load, but you can use http"
if check_url(url):
print "Nice, it does load with http too"