Python-urllib2如何知道我们的授权是否成功

Python-urllib2如何知道我们的授权是否成功,python,login,request,authorization,urllib2,Python,Login,Request,Authorization,Urllib2,当您通常登录到一个网站时,我们可以使用urllib2.Request import urllib2, base64 req = urllib2.Request("http://www.facebook.com/") base64string = base64.encodestring("%s:%s" % ("username", "password")).replace("\n", "") req.add_header("Authorization", "Basic %s" % base64st

当您通常登录到一个网站时,我们可以使用urllib2.Request

import urllib2, base64
req = urllib2.Request("http://www.facebook.com/")
base64string = base64.encodestring("%s:%s" % ("username", "password")).replace("\n", "")
req.add_header("Authorization", "Basic %s" % base64string)
requested = urllib2.urlopen(req)

但我们如何知道授权是否成功?因为你可能只是打开了一个错误授权的URL

A
urllib2.HTTPError
当您未经授权且返回401状态时,会引发异常:

>>> import urllib2, base64
>>> req = urllib2.Request('http://httpbin.org/basic-auth/foouser/barpw')
>>> base64string = base64.encodestring("%s:%s" % ("username", "password")).replace("\n", "")
>>> req.add_header("Authorization", "Basic %s" % base64string)
>>> urllib2.urlopen(req)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/mpietre/Development/Library/buildout.python/parts/opt/lib/python2.7/urllib2.py", line 127, in urlopen
    return _opener.open(url, data, timeout)
  File "/Users/mpietre/Development/Library/buildout.python/parts/opt/lib/python2.7/urllib2.py", line 410, in open
    response = meth(req, response)
  File "/Users/mpietre/Development/Library/buildout.python/parts/opt/lib/python2.7/urllib2.py", line 523, in http_response
    'http', request, response, code, msg, hdrs)
  File "/Users/mpietre/Development/Library/buildout.python/parts/opt/lib/python2.7/urllib2.py", line 448, in error
    return self._call_chain(*args)
  File "/Users/mpietre/Development/Library/buildout.python/parts/opt/lib/python2.7/urllib2.py", line 382, in _call_chain
    result = func(*args)
  File "/Users/mpietre/Development/Library/buildout.python/parts/opt/lib/python2.7/urllib2.py", line 531, in http_error_default
    raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 401: UNAUTHORIZED

我没有使用正确或错误的身份验证获取urllib2.HTTPError异常?我只有在尝试使用错误的密码连接到路由器(默认网关)时才会出现异常错误。请帮助我。然后,特定服务器没有响应401错误,而是在200错误页面中向您发送消息,或者他们已经重定向了您。响应内容是什么?我是在facebook上做的,代码是200,或者是对的,或者是错的,正确的和错误的身份验证的.geturl()都是。我还打印了.info(),没有太大的区别,只是不同的“设置Cookie”标题等,但与正确的身份验证无关。@user3818650:Facebook不使用基本身份验证,他们使用Cookie会话。@user3818650:当然,请小心耐心。这取决于您正在处理的确切登录表单;它是否使用CSRF令牌?服务器是否希望文章包含某些标题(唯一的方法是尝试),等等。
>>> req = urllib2.Request('http://httpbin.org/basic-auth/foouser/barpw')
>>> base64string = base64.encodestring("%s:%s" % ("foouser", "barpw")).replace("\n", "")
>>> req.add_header("Authorization", "Basic %s" % base64string)
>>> response = urllib2.urlopen(req)
>>> response.getcode()
200