首页 > 编程语言 > 详细

PYTHON实现HTTP基本认证(BASIC AUTHENTICATION)

时间:2015-03-22 23:59:50      阅读:803      评论:0      收藏:0      [点我收藏+]

参考:

  • http://www.voidspace.org.uk/python/articles/authentication.shtml#id20
  • http://zh.wikipedia.org/wiki/HTTP%E5%9F%BA%E6%9C%AC%E8%AE%A4%E8%AF%81
#! /usr/bin/env python
# -*-coding:utf-8-*-

import re
import sys
import base64
import urllib2

class BasicAuth:
    def __init__(self, username, password, realm=‘‘):
        base_str = "%s:%s" % (username,password)
        base_str = "Basic " + base64.encodestring(base_str)[:-1]
        self.authline = base_str    
        self.realm = realm
        #print self.authline

    def visit(self, the_url):
        req = urllib2.Request(the_url)
        try:
            content = urllib2.urlopen(req)
        except IOError,e:
            #here we *want* fail
            pass
        else:
            print "This page isn‘t protected by authentication."
            sys.exit(1)

        if not hasattr(e, code) or e.code != 401:
            #we got an error - but not a 401 error
            print "This page isn‘t protected by authentication."
            print But we fail for another reason
            sys.exit(1)

        authline = e.headers[www-authenticate]
        print authline
     #print e.headers authobj
= re.compile( r‘‘‘(?:\s*www-authenticate\s*:)?\s*(\w*)\s+realm=[‘"]([^‘"]+)[‘"]‘‘‘,re.IGNORECASE) matchobj = authobj.match(authline) if not matchobj: print The authentication header is badly formed. print authline sys.exit(1) scheme = matchobj.group(1) realm = matchobj.group(2) if scheme.lower() != basic: print This example only work with BASIC authentication. sys.exit(1) req.add_header("Authorization", self.authline) try: handle = urllib2.urlopen(req) except IOError,e: print "It looks like the username or password is wrong." sys.exit(1) thepage = handle.read() return thepage if __name__ == "__main__": ba = BasicAuth(admin, ‘admin) content = ba.visit("http://192.168.1.1/images/logo.jpg")    #路由器管理页面通常采用基本认证法进行身份认证 with open(logo.jpg, w) as f: f.write(content)

 

PYTHON实现HTTP基本认证(BASIC AUTHENTICATION)

原文:http://www.cnblogs.com/flowjacky/p/4358278.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!