2014-05-20 2 views
3

python 표준 라이브러리를 사용하여 주어진 웹 주소가 HTTP 또는 HTTPS를 사용해야하는지 여부를 결정하는 방법이 있습니까? HTTP : //.com을 사용하여 사이트에 접속하면 표준 오류 코드가 있습니다.이 더미는 'http'가 아니라 http 여야합니다.Python은 Detect URL이 HTTPS 대 HTTP가되어야 함

고맙습니다.

답변

3

어떤 종류의 테스트를 했습니까?

질문의 짧은 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"