1. 程式人生 > >python http基本驗證

python http基本驗證

#!usr/bin/env python
# -*- coding: utf-8 -*-
import urllib2

LOGIN = ""
PASSWORD = ""
URL = ""
REALM = "Secure Archive"

def handler_version(url):
    from urlparse import urlparse#urlparse用來將url拆成各個部分scheme netloc path params query fragment
    hdlr = urllib2.HTTPBasicAuthHandler()#http驗證類 裡面有使用者名稱和密碼
    hdlr.add_password(REALM, urlparse(url)[1], LOGIN, PASSWORD)#將url 使用者名稱 密碼新增進去
    opener = urllib2.build_opener(hdlr)#urlopen不支援驗證等高階功能 所以自定義opener
    urllib2.install_opener(opener)#建立url開啟器
    return url

def request_version(url):
    from base64 import encodestring#編碼
    req = urllib2.Request(url)#開始請求頁面
    b64str = encodestring('%s:%s' % (LOGIN, PASSWORD))[:-1]#將sting轉換成base64-data形式 base64為一種形式的二進位制編碼
    req.add_header("Authorization", "Basic %s" % b64str)#新增header標頭
    return req

for funcType in ('handler', 'request'):
    print '***Using %s:' % funcType.upper()
    url = eval('%s_version' % funcType)(URL)#eval 將字串轉換成有效的表示式並返回結果
    f = urllib2.urlopen(url)
    print f.readline()
    f.close()