python 访问带有web认证的页面
作者: 2hei 发表于2009年11月 5日 16:28 版权声明: 可以转载, 转载时务必以超链形式标明文章原始出处和作者信息及版权声明
http://www.2hei.net/mt/2009/11/python-auth-web-http.html
python 访问带有web认证的页面,经测试方法一可用!
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#方法一
#--------------------------------------------------------------
def request_auth_http(url, User = None, Pass = None):
import urllib2
# this creates a password manager
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, User, Pass)
# create the AuthHandler
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)
pagehandle = urllib2.urlopen(url)
data = pagehandle.read()
pagehandle.close()
return data
#方法二
#--------------------------------------------------------------
#auth = "Basic %s" % base64.encodestring("%s:%s" % (User, Pass))[:-1]
#request.add_header("User-Agent", "Python-2.5")
#request.add_header("Authorization",auth)
#opener = urllib2.build_opener()
#data = opener.open(request).read()
#print data
#htmlFile = urllib2.urlopen(request)
#htmlData = htmlFile.read()
#htmlFile.close()
#return htmlData
#--------------------------------------------------------------
def main():
url = "https://2hei.net/login"
User = "user"
Pass = "passwd"
print request_auth_http(url,User,Pass)
#--------------------------------------------------------------
if __name__ == "__main__":
main()
实际的结果是,方法一正解,方法二页面返回401错误。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#方法一
#--------------------------------------------------------------
def request_auth_http(url, User = None, Pass = None):
import urllib2
# this creates a password manager
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, url, User, Pass)
# create the AuthHandler
authhandler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(authhandler)
urllib2.install_opener(opener)
pagehandle = urllib2.urlopen(url)
data = pagehandle.read()
pagehandle.close()
return data
#方法二
#--------------------------------------------------------------
#auth = "Basic %s" % base64.encodestring("%s:%s" % (User, Pass))[:-1]
#request.add_header("User-Agent", "Python-2.5")
#request.add_header("Authorization",auth)
#opener = urllib2.build_opener()
#data = opener.open(request).read()
#print data
#htmlFile = urllib2.urlopen(request)
#htmlData = htmlFile.read()
#htmlFile.close()
#return htmlData
#--------------------------------------------------------------
def main():
url = "https://2hei.net/login"
User = "user"
Pass = "passwd"
print request_auth_http(url,User,Pass)
#--------------------------------------------------------------
if __name__ == "__main__":
main()
实际的结果是,方法一正解,方法二页面返回401错误。





发表一个评论