python 표준 라이브러리를 사용하여 주어진 웹 주소가 HTTP 또는 HTTPS를 사용해야하는지 여부를 결정하는 방법이 있습니까? HTTP : //.com을 사용하여 사이트에 접속하면 표준 오류 코드가 있습니다.이 더미는 'http'가 아니라 http 여야합니다.Python은 Detect URL이 HTTPS 대 HTTP가되어야 함
고맙습니다.
python 표준 라이브러리를 사용하여 주어진 웹 주소가 HTTP 또는 HTTPS를 사용해야하는지 여부를 결정하는 방법이 있습니까? HTTP : //.com을 사용하여 사이트에 접속하면 표준 오류 코드가 있습니다.이 더미는 'http'가 아니라 http 여야합니다.Python은 Detect URL이 HTTPS 대 HTTP가되어야 함
고맙습니다.
어떤 종류의 테스트를 했습니까?
질문의 짧은 prematural 대답은 : 사용해야 존재하지 않습니다 ... 그것 때문에 리디렉션, 모든 취향, 또는 서버의 결정입니다.
일부 서버는 https 만 허용하고 http를 호출하면 302 코드를 반환합니다.
따라서 주어진 URL에서 https를로드하는 것이 목표라면 일반 http로 폴백하여 시도해보십시오.
HEAD 요청 만 보내면 https 연결이 수신 중인지 여부를 매우 빠르게 알 수 있습니다. 때때로 사람들이 그 규칙을 따르지 않고 https 프로토콜이 당신이 가짜 443 포트가 아닌 https하에 있는지 확인하기 때문에 포트 443 (ssl)을 확인하는 것을 권장하지 않습니다.
코드의 비트 :
#!/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"